pax_global_header00006660000000000000000000000064130675131160014515gustar00rootroot0000000000000052 comment=d9ef6840a30c784fef1c7ed2c8f8c5302d5204e3 AppRecommender-0.7.5/000077500000000000000000000000001306751311600144275ustar00rootroot00000000000000AppRecommender-0.7.5/.gitignore000066400000000000000000000005031306751311600164150ustar00rootroot00000000000000*.pyc TODO doc/doxygen-1.7.3 doc/html/ popcon-data.tgz popcon-data/ psql-out udd-import.log udd.sql.gz *.log .vagrant/ *.swp apprecommender.egg-info/ apprecommender/tests/test_data/.sample_axi/ apprecommender/tests/test_data/.sample_axi/ apprecommender/tests/.apt_run/ apprecommender/web/submissions/ .travis.yml.container AppRecommender-0.7.5/.gitlab-ci.yml000066400000000000000000000004101306751311600170560ustar00rootroot00000000000000before_script: - ./install_dependencies.sh - sudo pip2 install flake8 - sudo /usr/bin/python2 -m apprecommender.main.cli --init - sudo /usr/bin/python2 -m apprecommender.main.cli --train test: script: - flake8 . - /usr/bin/python2 setup.py test AppRecommender-0.7.5/99app-recommender000066400000000000000000000002541306751311600176130ustar00rootroot00000000000000DPkg::Post-Invoke {"[ ! -x /usr/bin/apprec-apt ] || apprec-apt --post-invoke";}; DPkg::Pre-Install-Pkgs {"[ ! -x /usr/bin/apprec-apt ] || apprec-apt --pre-install-pkgs";}; AppRecommender-0.7.5/GPLv3.txt000066400000000000000000001045141306751311600160700ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. 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 them 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 prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. 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. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey 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; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If 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 convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU 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 that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. 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. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 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. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. 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 state 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 3 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, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program 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, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU 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 Lesser General Public License instead of this License. But first, please read . AppRecommender-0.7.5/README000066400000000000000000000031751306751311600153150ustar00rootroot00000000000000AppRecommender - Application recommender for GNU/Linux systems --------------------------------------------------------------- Install dependencies --------------------- # apt-get install python python-xapian python-apt python-cluster python-simplejson python-numpy apt-xapian-index python-xdg debtags python-pip python-sklearn python-matplotlib python-fuzzywuzzy -y sudo update-apt-xapian-index pip install setuptools Run AppRecommender in Terminal ------------------------------ $ cd ./bin $ ./apprec.py -s cb Run "$ ./apprec.py -h" to view the recommender strategies Prepare AppRecommender data --------------------------- Run the following commands: $ ./install_dependencies.sh $ cd ./bin $ ./apprec.py --init Run Machine Learning Training ---------------------------- $ cd ./bin $ ./apprec.py --train License ------- Copyright 2011 Tassia Cames Araujo Copyright 2015-2016 Lucas Albuquerque Medeiros de Moura Copyright 2015-2016 Luciano Prestes Cavalcanti 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 3 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, see . AppRecommender-0.7.5/README.md000066400000000000000000000024171306751311600157120ustar00rootroot00000000000000AppRecommender [![Build Status](https://gitlab.com/AppRecommender/AppRecommender/badges/master/build.svg)](https://gitlab.com/AppRecommender/AppRecommender/builds) =============================================================== Application recommender for GNU/Linux systems --------------------------------------------------------------- Install dependencies --------------------- $ apt-get install python python-xapian python-apt python-cluster python-webpy python-simplejson python-numpy apt-xapian-index python-xdg debtags python-pip python-sklearn python-matplotlib python-stemmer -y $ sudo update-apt-xapian-index $ pip install setuptools Run AppRecommender web UI -------------------------- $ cd ./src/web $ ./server.py Open a browser and access http://localhost:8080 More info at https://github.com/tassia/AppRecommender/wiki Run AppRecommender in Terminal ------------------------------ $ cd ./bin $ ./apprec.py -s cb Run "$ ./apprec.py -h" to view the recommender strategies Prepare AppRecommender data --------------------------- Run the following commands: $ ./install_dependencies.sh $ cd ./bin $ ./apprec.py --init Run Machine Learning Training ---------------------------- $ cd ./bin $ ./apprec.py --train AppRecommender-0.7.5/Vagrantfile000066400000000000000000000005711306751311600166170ustar00rootroot00000000000000# -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure(2) do |config| config.vm.box = "debian/jessie64" config.vm.box_check_update = false config.vm.network :forwarded_port, host: 8080, guest: 8080 config.vm.provision :shell, path: "vagrant/bootstrap.sh", privileged: false config.vm.provider "virtualbox" do |vm| vm.memory = 1024 vm.cpus = 2 end end AppRecommender-0.7.5/app_recommender.cfg000066400000000000000000000023541306751311600202540ustar00rootroot00000000000000# Config file for AppRecommender [general] # logging level debug = 0 verbose = 0 [data_sources] # base_dir = /var/lib/apprecommender/ base_dir = ~/.app-recommender/ user_data_dir = user_data/ output = apprec.log # filters for valid packages filters_dir = filters pkgs_filter = desktopapps # package information indexes axi = /var/lib/apt-xapian-index/index axi_programs = axi_programs axi_desktopapps = axi_desktopapps # old, reindex, cluster, recluster #index_mode = old # popcon indexes # check if there are popcon indexes available popcon = 0 popcon_programs = popcon_programs popcon_desktopapps = popcon_desktopapps popcon_index = popcon_desktopapps popcon_dir = popcon-entries # number of popcon submission for indexing max_popcon = 100000000 # popcon clustering clusters_dir = clusters_dir_full k_medoids = 100 # Connection to DDE dde_url = http://46.4.235.200:8000/q/udd/packages/all/%s?t=json self.dde_server = 46.4.235.200 self.dde_port = 8000 [recommender] # search weighting scheme ('trad' or 'bm25') weight = bm25 # bm25 parameters bm25_k1 = 1.2 bm25_k2 = 0 bm25_k3 = 7 bm25_b = 0.75 bm25_nl = 0.5 # recommendation strategy strategy = cb # user content profile size profile_size = 50 # neighborhood size k_neighbors = 50 popcon_profiling = full AppRecommender-0.7.5/apprecommender/000077500000000000000000000000001306751311600174305ustar00rootroot00000000000000AppRecommender-0.7.5/apprecommender/Makefile000066400000000000000000000000771306751311600210740ustar00rootroot00000000000000doc: ./generate_doc.sh clean : @find . -name \*.pyc -delete AppRecommender-0.7.5/apprecommender/__init__.py000066400000000000000000000001661306751311600215440ustar00rootroot00000000000000# \mainpage Application recommender for GNU/Linux systems # Main repository: http://github.com/tassia/AppRecommender AppRecommender-0.7.5/apprecommender/apt_cache.py000066400000000000000000000013441306751311600217130ustar00rootroot00000000000000#!/usr/bin/env python import apt import xapian class AptCache: DEFAULT_AXI_PATH = "/var/lib/apt-xapian-index/index" def __init__(self): self.axi = xapian.Database(AptCache.DEFAULT_AXI_PATH) self.cache = apt.Cache() def __getitem__(self, pkg_name): return self.get(pkg_name) def __contains__(self, pkg_name): return self.xapian_has_pkg(pkg_name) and pkg_name in self.cache def get(self, pkg_name): if self.xapian_has_pkg(pkg_name): return self.cache[pkg_name] raise KeyError("The cache has no package named '{}'".format(pkg_name)) def xapian_has_pkg(self, pkg_name): term = 'XP' + pkg_name return self.axi.get_termfreq(term) > 0L AppRecommender-0.7.5/apprecommender/config.py000066400000000000000000000226051306751311600212540ustar00rootroot00000000000000#!/usr/bin/env python """ config - python module for configuration options. """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ import sys import os import logging import logging.handlers from ConfigParser import ConfigParser, MissingSectionHeaderError from apprecommender.singleton import Singleton class Config(Singleton): """ Class to handle configuration options. """ def __init__(self): """ Set default configuration options. """ try: self.config_parser = ConfigParser() self.config_parser.read( ['/etc/apprecommender/recommender.conf', os.path.expanduser('~/.app_recommender.rc'), os.path.expanduser('app_recommender.cfg')]) self.home_dir = os.path.expanduser('~/.apprecommender') except (MissingSectionHeaderError), err: logging.error("Error in config file syntax: %s", str(err)) os.abort() if not hasattr(self, 'initialized'): # data_source options self.base_dir = os.environ.get( 'APPREC_DATA', '/var/lib/apprecommender') self.base_dir = os.path.expanduser(self.base_dir) self.output = os.path.join(self.home_dir, 'apprec.log') self.user_data_dir = os.path.join(self.base_dir, "user_data/") # general options self.debug = 0 self.verbose = 0 # filters for valid packages self.filters_dir = os.path.join(self.base_dir, "filters") self.pkgs_filter = os.path.join(self.filters_dir, "desktopapps") # package information packages self.axi = "/var/lib/apt-xapian-index/index" self.axi_programs = os.path.join(self.base_dir, "axi_programs") self.axi_desktopapps = os.path.join(self.base_dir, "axi_desktopapps") # popcon indexes self.index_mode = "old" # check if there are popcon indexes available self.popcon = 0 self.popcon_programs = os.path.join(self.base_dir, "popcon_programs") self.popcon_desktopapps = os.path.join(self.base_dir, "popcon_desktopapps") self.popcon_index = self.popcon_desktopapps self.popcon_dir = os.path.join(self.base_dir, "popcon-entries") self.max_popcon = 1000 # popcon clustering self.clusters_dir = os.path.join(self.base_dir, "clusters-dir") self.k_medoids = 100 # self.dde_url = "http://dde.debian.net/dde/" \ # "q/udd/packs/all/%s?t=json" self.dde_url = "http://46.4.235.200:8000/" \ "q/udd/packages/prio-debian-sid/%s?t=json" self.dde_server = "46.4.235.200" self.dde_port = 8000 # recomender options self.strategy = "cb" self.weight = "bm25" self.bm25_k1 = 1.2 self.bm25_k2 = 0 self.bm25_k3 = 7 self.bm25_b = 0.75 self.bm25_nl = 0.5 # user content profile size self.profile_size = 10 self.num_recommendations = 8 self.because = False # neighborhood size self.k_neighbors = 50 # popcon profiling method: full, voted self.popcon_profiling = "full" self.load_config_file() self.initialized = 1 logging.info("Basic config") def read_option(self, section, option): """ Read option from configuration file if it is defined there or return default value. """ var = "self.%s" % option if self.config_parser.has_option(section, option): return self.config_parser.get(section, option) else: return eval(var) def load_config_file(self): """ Load options from configuration file and command line arguments. """ self.debug = int(self.read_option('general', 'debug')) self.debug = int(self.read_option('general', 'verbose')) self.base_dir = os.environ.get( 'APPREC_DATA', '/var/lib/apprecommender') self.base_dir = os.path.expanduser(self.base_dir) self.output = os.path.join( self.home_dir, self.read_option('data_sources', 'output')) self.user_data_dir = os.path.join( self.base_dir, self.read_option('data_sources', 'user_data_dir')) self.filters_dir = os.path.join( self.base_dir, self.read_option('data_sources', 'filters_dir')) self.pkgs_filter = os.path.join( self.filters_dir, self.read_option('data_sources', 'pkgs_filter')) self.axi = self.read_option('data_sources', 'axi') self.axi_programs = os.path.join( self.base_dir, self.read_option('data_sources', 'axi_programs')) self.axi_desktopapps = os.path.join( self.base_dir, self.read_option('data_sources', 'axi_desktopapps')) # self.index_mode = self.read_option('data_sources', 'index_mode') self.popcon = int(self.read_option('data_sources', 'popcon')) self.popcon_programs = os.path.join( self.base_dir, self.read_option('data_sources', 'popcon_programs')) self.popcon_desktopapps = os.path.join( self.base_dir, self.read_option('data_sources', 'popcon_desktopapps')) self.popcon_index = os.path.join( self.base_dir, self.read_option('data_sources', 'popcon_index')) self.popcon_dir = os.path.join( self.base_dir, self.read_option('data_sources', 'popcon_dir')) self.max_popcon = int(self.read_option('data_sources', 'max_popcon')) self.clusters_dir = os.path.join( self.base_dir, self.read_option('data_sources', 'clusters_dir')) self.k_medoids = int(self.read_option('data_sources', 'k_medoids')) self.dde_url = self.read_option('data_sources', 'dde_url') self.dde_server = self.read_option('data_sources', 'dde_server') self.dde_port = self.read_option('data_sources', 'dde_port') self.weight = self.read_option('recommender', 'weight') self.bm25_k1 = float(self.read_option('recommender', 'bm25_k1')) self.bm25_k2 = float(self.read_option('recommender', 'bm25_k2')) self.bm25_k3 = float(self.read_option('recommender', 'bm25_k3')) self.bm25_b = float(self.read_option('recommender', 'bm25_b')) self.bm25_nl = float(self.read_option('recommender', 'bm25_nl')) self.strategy = self.read_option('recommender', 'strategy') self.profile_size = int( self.read_option('recommender', 'profile_size')) self.k_neighbors = int( self.read_option('recommender', 'k_neighbors')) self.popcon_profiling = self.read_option( 'recommender', 'popcon_profiling') def set_logger(self): """ Configure application logger and log level. """ self.logger = logging.getLogger('') # root logger is used by default self.logger.setLevel(logging.WARNING) if self.debug == 1: log_level = logging.DEBUG elif self.verbose == 1: log_level = logging.INFO else: log_level = logging.WARNING console_handler = logging.StreamHandler(sys.stdout) console_handler.setFormatter(logging.Formatter( '%(levelname)s: %(message)s')) console_handler.setLevel(log_level) self.logger.addHandler(console_handler) if not os.path.exists(self.home_dir): os.makedirs(self.home_dir) file_handler = logging.handlers.RotatingFileHandler(self.output, maxBytes=50000000, backupCount=5) log_format = '%(asctime)s %(levelname)-8s %(message)s' file_handler.setFormatter(logging.Formatter( log_format, datefmt='%Y-%m-%d %H:%M:%S')) file_handler.setLevel(log_level) self.logger.addHandler(file_handler) logging.info("Set up logger") AppRecommender-0.7.5/apprecommender/data.py000066400000000000000000000246711306751311600207250ustar00rootroot00000000000000#!/usr/bin/env python """ data - python module for data sources classes and methods. """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ import xapian import logging import random import operator import math import commands from apprecommender.utils import print_progress_bar from apprecommender.data_classification import time_weight from apprecommender.error import Error def axi_get_pkgs(axi): pkgs_names = [] for docid in range(1, axi.get_lastdocid() + 1): try: doc = axi.get_document(docid) except: pass docterms_XP = [t.term for t in doc.termlist() if t.term.startswith("XP")] pkgs_names.append(docterms_XP[0].lstrip('XP')) return pkgs_names def axi_search_pkgs(axi, pkgs_list): terms = ["XP" + item for item in pkgs_list] query = xapian.Query(xapian.Query.OP_OR, terms) enquire = xapian.Enquire(axi) enquire.set_query(query) mset = enquire.get_mset(0, axi.get_doccount()) return mset def axi_search_pkg_tags(axi, pkg): enquire = xapian.Enquire(axi) enquire.set_query(xapian.Query("XP" + pkg)) matches = enquire.get_mset(0, 1) if not matches: logging.debug("Package %s not found in items repository" % pkg) return False for m in matches: tags = [term.term for term in axi.get_document(m.docid).termlist() if term.term.startswith("XT")] if not tags: return "notags" else: return tags def print_index(index): output = "\n---\n" + xapian.Database.__repr__(index) + "\n---\n" for term in index.allterms(): output += term.term + "\n" output += str([index.get_document(posting.docid).get_data() for posting in index.postlist(term.term)]) output += "\n---" return output def get_user_installed_pkgs(): dpkg_output = commands.getoutput('/usr/bin/dpkg --get-selections') packages = [pkg.split('\t')[0] for pkg in dpkg_output.splitlines() if 'deinstall' not in pkg.split('\t')[-1]] packages = set(packages) return packages def get_all_terms(index, docs, content_filter, normalized_weights): # Store all terms in one single document terms_packages = {} terms_doc = xapian.Document() for d in docs: package = d.document.get_data() for term in index.get_document(d.docid).termlist(): if content_filter(term.term): if normalized_weights: terms_doc.add_term(term.term, int(math.ceil( normalized_weights[d.docid]))) else: terms_doc.add_term(term.term) if term.term.startswith('XP'): continue elif term.term in terms_packages: terms_packages[term.term].append(package) else: terms_packages[term.term] = [package] return (terms_doc, terms_packages) def get_tfidf_terms_weights(terms_doc, index, terms_package, time_context=0): # Compute sublinear tfidf for each term weights = {} for term in terms_doc.termlist(): try: # Even if it shouldn't raise error... # math.log: ValueError: math domain error tf = 1 + math.log(term.wdf) idf = math.log(index.get_doccount() / float(index.get_termfreq(term.term))) tfidf = tf * idf weights[term.term] = tfidf if time_context: weight = time_weight(term.term, terms_package[term.term]) weights[term.term] *= weight except: pass # print_best_weight_terms(terms_package) return weights def tfidf_weighting(index, docs, content_filter, normalized_weights=0, time_context=0): """ Return a dictionary of terms and weights of all terms of a set of documents, based on the frequency of terms in the selected set (docids). """ terms_doc, terms_packages = get_all_terms(index, docs, content_filter, normalized_weights) weights = get_tfidf_terms_weights(terms_doc, index, terms_packages, time_context) sorted_weights = list(reversed(sorted(weights.items(), key=operator.itemgetter(1)))) return sorted_weights def tfidf_plus(index, docs, content_filter, time_context=0): """ Return a dictionary of terms and weights of all terms of a set of documents, based on the frequency of terms in the selected set (docids). """ normalized_weigths = {} population = [d.weight for d in docs] mean = sum(population) / len(population) variance = sum([(p - mean) * (p - mean) for p in population]) / len(population) standard_deviation = math.sqrt(variance) for d in docs: if standard_deviation > 1: # values between [0-1] would cause the opposite effect normalized_weigths[d.docid] = d.weight / standard_deviation else: normalized_weigths[d.docid] = d.weight return tfidf_weighting(index, docs, content_filter, normalized_weigths, time_context) def split_pkg_data(user_pkg, partition_size): round_partition = {} for i in range(partition_size): if len(user_pkg) > 0: random_key = random.choice(user_pkg.keys()) else: logging.critical("Empty user_pkg.") raise Error round_partition[random_key] = user_pkg.pop(random_key) return round_partition class FilteredXapianIndex(xapian.WritableDatabase): """ Filtered Xapian Index """ def __init__(self, terms, index_path, path): xapian.WritableDatabase.__init__(self, path, xapian.DB_CREATE_OR_OVERWRITE) index = xapian.Database(index_path) for docid in range(1, index.get_lastdocid() + 1): try: doc = index.get_document(docid) docterms = [term.term for term in doc.termlist()] tagged = False for t in terms: if t in docterms: tagged = True if tagged: self.add_document(doc) logging.info("Added doc %d." % docid) else: logging.info("Discarded doc %d." % docid) except: logging.info("Doc %d not found in axi." % docid) logging.info("Filter: %s" % terms) logging.info("Index size: %d" % index.get_doccount()) logging.info("Filtered Index size: %d (lastdocid: %d)." % (self.get_doccount(), self.get_lastdocid())) def __str__(self): return print_index(self) class SampleAptXapianIndex(xapian.WritableDatabase): """ Sample data source for packages information, generated from a list of packages. """ def __init__(self, pkgs_list, axi, path): xapian.WritableDatabase.__init__(self, path, xapian.DB_CREATE_OR_OVERWRITE) self.sample = axi_search_pkgs(axi, pkgs_list) len_sample = len(self.sample) for index, package in enumerate(self.sample): self.doc_id = self.add_document(axi.get_document(package.docid)) print_progress_bar(index + 1, len_sample) def __str__(self): return print_index(self) class PopconSubmission(): def __init__(self, path, user_id=0, binary=1): self.packages = dict() self.path = path self.binary = binary self.load() if user_id: self.user_id = user_id def __str__(self): output = "\nPopularity-contest submission ID " + self.user_id for pkg, weight in self.packages.items(): output += "\n " + pkg + ": " + str(weight) return output def get_filtered(self, filter_list): filtered = {} for pkg in self.packages.keys(): if pkg in filter_list: filtered[pkg] = self.packages[pkg] return filtered def load(self, binary=1): """ Parse a popcon submission, generating the names of the valid packages in the vote. """ with open(self.path) as submission: for line in submission: if line.startswith("POPULARITY"): self.user_id = line.split()[2].lstrip("ID:") self.arch = line.split()[3].lstrip("ARCH:") elif not line.startswith("END-POPULARITY"): data = line.rstrip('\n').split() if len(data) > 2: pkg = data[2] if len(data) > 3: exec_file = data[3] # Binary weight if self.binary: self.packages[pkg] = 1 # Weights inherited from Enrico's anapop # No executable files to track elif exec_file == '': self.packages[pkg] = 1 # Recently used packages elif len(data) == 4: self.packages[pkg] = 10 # Unused packages elif data[4] == '': self.packages[pkg] = 3 # Recently installed packages elif data[4] == '': self.packages[pkg] = 8 AppRecommender-0.7.5/apprecommender/data_classification.py000066400000000000000000000070511306751311600237710ustar00rootroot00000000000000#!/usr/bin/env python import commands import calendar import logging import math import operator import time pkgs_times = {} pkgs_time_weight = {} best_weight_terms = {} user_tfidf_weights = {} def pkg_name_with_error(pkg): return len(pkg.split()) > 1 def get_time_from_package(pkg, pkg_bin=True): if pkg_name_with_error(pkg): pkgs_times[pkg] = [None, None] if pkg in pkgs_times: modify, access = pkgs_times[pkg] else: modify = get_time('Y', pkg, pkg_bin) access = get_time('X', pkg, pkg_bin) pkgs_times[pkg] = [modify, access] return pkgs_times[pkg] def get_alternative_pkg(pkg): dpkg_command = "dpkg -L {0}| grep /usr/bin/" dpkg_command += " || dpkg -L {0}| grep /usr/sbin/" pkg_bin = commands.getoutput(dpkg_command.format(pkg)) possible_pkgs = {} for pkg_path in pkg_bin.splitlines(): possible_pkgs[pkg_path] = get_time('X', pkg_path) if bool(possible_pkgs): return sorted(possible_pkgs.items(), key=operator.itemgetter(1))[0][0] return None def get_time(option, pkg, pkg_bin=True): stat_base = "stat -c '%{option}'" stat_base += " `which {package}`" if pkg_bin else " {package}" stat_error = 'stat:' stat_time = stat_base.format(option=option, package=pkg) pkg_time = commands.getoutput(stat_time) if stat_error not in pkg_time: return pkg_time return None def linear_percent_function(modify, access, time_now): modify, access = int(modify), int(access) time_access = access - modify time_actual = time_now - modify percent = float(time_access) / float(time_actual) return percent def get_pkg_time_weight(pkg): modify, access = get_time_from_package(pkg) if not modify and not access: modify, access = get_time_from_package(get_alternative_pkg(pkg)) if not modify and not access: return 0 time_now = calendar.timegm(time.gmtime()) return linear_percent_function(modify, access, time_now) def calculate_time_curve(pkg_time_weight): if not pkg_time_weight: return 0 const_a = 10 lambda_value = 1 return const_a * (1 / math.exp((1 - pkg_time_weight) * lambda_value)) def time_weight(term, term_list): weight = [] weight_len = 5 weight_delta = 0.2 for pkg in term_list: if pkg in pkgs_time_weight: weight.append(pkgs_time_weight[pkg]) else: pkg_time_weight = get_pkg_time_weight(pkg) pkgs_time_weight[pkg] = pkg_time_weight weight.append(calculate_time_curve(pkg_time_weight)) weight = list(reversed(sorted(weight))) if len(weight) < weight_len: for i in range(len(weight), weight_len): weight.append(weight[-1] - weight_delta) time_weight = float(sum(weight[0:weight_len])) / float(weight_len) best_weight_terms[term] = time_weight return time_weight def print_best_weight_terms(terms_package): index = 0 total = 0 logging.info("BEST TERMS") for term in sorted(best_weight_terms, key=best_weight_terms.get, reverse=True): if index < 10: logging.info("\n") logging.info(term, best_weight_terms[term]) logging.info('-') for pkg in terms_package[term]: logging.info("[{0}: {1} {2}]\n".format(pkg, get_pkg_time_weight(pkg), get_alternative_pkg(pkg))) total += 1 if total > 5: break total = 0 index += 1 AppRecommender-0.7.5/apprecommender/decider.py000066400000000000000000000200471306751311600214040ustar00rootroot00000000000000#!/usr/bin/env python import commands import re import xapian from apprecommender.apt_cache import AptCache from sklearn.feature_extraction.stop_words import ENGLISH_STOP_WORDS class PkgInitDecider(): """ Class used to decide if a package can be considered to recommended to an user or not. """ INVALID_PREFIXES = {'ruby', 'python', 'python3', 'golang', 'gir', 'texlive'} INVALID_SUFFIXES = {'examples', 'dbg', 'data', 'dev', 'utils', 'common', 'fonts', 'png', 'core', 'default'} def __init__(self): self.cache = AptCache() self.user_role_programs = self.get_user_role_programs() def is_in_apt_cache(self, pkg): return pkg in self.cache def get_package_dependencies(self, pkg): return [dep[0].name for dep in pkg.dependencies] def get_user_installed_packages(self): manual_installed = commands.getoutput('apt-mark showmanual') return manual_installed.splitlines() def get_user_role_programs(self): user_pkgs = self.get_user_installed_packages() user_programs = set() for pkg in user_pkgs: if pkg in self.cache: pkg_candidate = self.cache[pkg].candidate pkg_tags = pkg_candidate.record.get('Tag', None) if not pkg_tags: continue if 'role::program' in pkg_tags: user_programs.add(pkg) return user_programs def is_section_doc(self, pkg_section): return pkg_section == 'doc' def is_valid_dependency(self, pkg_tags, pkg_section): tags_dep = 'role::program' in pkg_tags or 'devel::editor' in pkg_tags section_dep = pkg_section == 'interpreters' return tags_dep or section_dep def is_program_dependencies_installed(self, pkg): pkg_dependencies = self.get_package_dependencies(pkg) dep_programs = set() for dep in pkg_dependencies: if dep in self.cache: pkg = self.cache[dep].candidate if pkg is not None: pkg_tags = pkg.record.get('Tag', None) pkg_section = pkg.section if pkg_tags is None: continue is_valid_dependency = self.is_valid_dependency( pkg_tags, pkg_section) if is_valid_dependency: dep_programs.add(dep) return len(dep_programs - self.user_role_programs) == 0 def is_pkg_a_prefix_or_suffix(self, pkg): splited_pkg = pkg.split('-') if len(splited_pkg) == 1: return False pkg_prefix = splited_pkg[0] for prefix in PkgInitDecider.INVALID_PREFIXES: if pkg_prefix.startswith(prefix): return True for suffix in PkgInitDecider.INVALID_SUFFIXES: if (splited_pkg[-1].endswith(suffix) or splited_pkg[-2].endswith(suffix)): return True return False def __call__(self, pkg): if not self.is_in_apt_cache(pkg): return False pkg_candidate = self.cache[pkg].candidate if not pkg_candidate: return False if not self.is_program_dependencies_installed(pkg_candidate): return False if self.is_pkg_a_prefix_or_suffix(pkg): return False if self.is_section_doc(pkg_candidate.section): return False return True class PkgMatchDecider(xapian.MatchDecider): """ Extend xapian.MatchDecider to not consider installed packages. """ def __init__(self, pkgs_list): """ Set initial parameters. """ xapian.MatchDecider.__init__(self) self.pkgs_list = pkgs_list def __call__(self, xapian_document): """ True if the package is not already installed and is not a lib or a xapian_document. """ pkg = xapian_document.get_data() is_new = pkg not in self.pkgs_list is_new = is_new and ':' not in pkg if "kde" in pkg: return is_new and "kde" in self.pkgs_list if "gnome" in pkg: return is_new and "gnome" in self.pkgs_list if re.match(r'^lib.*', pkg) or re.match(r'.*doc$', pkg): return False return is_new class PkgExpandDecider(xapian.ExpandDecider): """ Extend xapian.ExpandDecider to consider packages only. """ def __init__(self, pkgs_list): """ Set initial parameters. """ xapian.ExpandDecider.__init__(self) self.pkgs_list = pkgs_list def __call__(self, term): """ True if the term is a package. """ pkg = term.lstrip("XP") is_new_pkg = pkg not in self.pkgs_list and term.startswith("XP") if "kde" in pkg: return is_new_pkg and "kde" in self.pkgs_list if "gnome" in pkg: return is_new_pkg and "gnome" in self.pkgs_list return is_new_pkg class PkgReverseDependeciesDecider(xapian.MatchDecider): """ Extend xapian.MatchDecider to consider only packages on valid list """ def __init__(self, reverse_dependencies, user_installed_pkgs): """ Set initial parameters. """ xapian.MatchDecider.__init__(self) self.reverse_dependencies = reverse_dependencies self.pkg_init_decider = PkgInitDecider() self.pkg_match_decider = PkgMatchDecider(user_installed_pkgs) self.cache = AptCache() def __call__(self, xapian_document): """ True if the package is on pkg_list """ pkg = xapian_document.get_data() if pkg not in self.reverse_dependencies: return False if pkg not in self.cache: return False if self.cache[pkg].section == 'doc': return False decider = self.pkg_init_decider pkg_candidate = self.cache[pkg].candidate if not decider.is_program_dependencies_installed(pkg_candidate): return False return self.pkg_match_decider(xapian_document) class TagExpandDecider(xapian.ExpandDecider): """ Extend xapian.ExpandDecider to consider tags only. """ def __call__(self, term): """ True if the term is a package tag. """ return term.startswith("XT") class FilterTag(xapian.ExpandDecider): """ Extend xapian.ExpandDecider to consider only tag terms. """ def __init__(self, valid_tags): """ Set initial parameters. """ xapian.ExpandDecider.__init__(self) self.valid_tags = valid_tags def __call__(self, term): """ Return true if the term is a tag, else false. """ if self.valid_tags: is_valid = term.lstrip("XT") in self.valid_tags else: is_valid = 1 return term.startswith("XT") and is_valid class FilterDescription(xapian.ExpandDecider): """ Extend xapian.ExpandDecider to consider only package description terms. """ def __init__(self): xapian.ExpandDecider.__init__(self) self.stop_words = ENGLISH_STOP_WORDS def __call__(self, term): """ Return true if the term or its stemmed version is part of a package description. """ if term not in self.stop_words: return term.islower() and re.search('[a-z]', term) return False class FilterTag_or_Description(xapian.ExpandDecider): """ Extend xapian.ExpandDecider to consider only package description terms. """ def __init__(self, valid_tags): """ Set initial parameters. """ xapian.ExpandDecider.__init__(self) self.valid_tags = valid_tags def __call__(self, term): """ Return true if the term or its stemmed version is part of a package description. """ is_tag = FilterTag(self.valid_tags)(term) is_description = FilterDescription()(term) return is_tag or is_description AppRecommender-0.7.5/apprecommender/error.py000066400000000000000000000016661306751311600211440ustar00rootroot00000000000000#!/usr/bin/env python """ error.py - python module for error definition. """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ class Error(Exception): """ Base class for exceptions. """ pass AppRecommender-0.7.5/apprecommender/evaluation.py000066400000000000000000000404621306751311600221570ustar00rootroot00000000000000#!/usr/bin/env python """ evaluation - python module for classes and methods related to recommenders evaluation. """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ import math import logging from abc import ABCMeta, abstractmethod from collections import defaultdict from apprecommender.error import Error from apprecommender.singleton import Singleton from apprecommender.recommender import RecommendationResult from apprecommender.user import User from apprecommender.data import split_pkg_data class Metric(Singleton): """ Base class for metrics. Strategy design pattern. """ def get_errors(self, evaluation): """ Compute prediction errors. """ keys = evaluation.predicted_item_scores.keys() keys.extend(evaluation.real_item_scores.keys()) errors = [] for k in keys: if k not in evaluation.real_item_scores: evaluation.real_item_scores[k] = 0.0 if k not in evaluation.predicted_item_scores: evaluation.predicted_item_scores[k] = 0.0 errors.append(float(evaluation.predicted_item_scores[k] - evaluation.real_item_scores[k])) return errors class SimpleAccuracy(Metric): """ Classification accuracy metric which consider classes sizes. """ def __init__(self): """ Set metric description. """ self.desc = " S_Accuracy " def run(self, evaluation): """ Compute metric. """ simple_accurary = float((evaluation.repository_size - evaluation.false_positive_len) - evaluation.false_negative_len) return simple_accurary / evaluation.repository_size class Accuracy(Metric): """ Classification accuracy metric which consider classes sizes. """ def __init__(self): """ Set metric description. """ self.desc = " Accuracy " def run(self, evaluation): """ Compute metric. """ error_1 = (float(evaluation.false_positive_len) / (evaluation.repository_size - evaluation.real_relevant_len)) error_2 = (float(evaluation.false_negative_len) / evaluation.real_relevant_len) accuracy = 1 - (float(error_1 + error_2) / 2) return accuracy class Precision(Metric): """ Classification accuracy metric defined as the percentage of relevant itens among the predicted ones. """ def __init__(self): """ Set metric description. """ self.desc = " Precision " def run(self, evaluation): """ Compute metric. """ precision = float(evaluation.true_positive_len) if not precision: return 0.0 return precision / float(evaluation.predicted_relevant_len) class Recall(Metric): """ Classification ccuracy metric defined as the percentage of relevant itens which were predicted as so. """ def __init__(self): """ Set metric description. """ self.desc = " Recall " def run(self, evaluation): """ Compute metric. """ recall = float(evaluation.true_positive_len) if not recall: return 0.0 return recall / evaluation.real_relevant_len class FPR(Metric): """ False positive rate (used for ploting ROC curve). """ def __init__(self): """ Set metric description. """ self.desc = " FPR " def run(self, evaluation): """ Compute metric. """ if not evaluation.false_positive_len: return 0.0 return (float(evaluation.false_positive_len) / evaluation.real_negative_len) class MCC(Metric): """ Matthews correlation coefficient. """ def __init__(self): """ Set metric description. """ self.desc = " MCC " def run(self, evaluation): """ Compute metric. """ VP = evaluation.true_positive_len FP = evaluation.false_positive_len FN = evaluation.false_negative_len VN = evaluation.true_negative_len if ((VP + FP) == 0 or (VP + FN) == 0 or (VN + FP) == 0 or (VN + FN) == 0): return 0 MCC = (((VP * VN) - (FP * FN)) / math.sqrt((VP + FP) * (VP + FN) * (VN + FP) * (VN + FN))) return MCC class F_score(Metric): """ Classification accuracy metric which correlates precision and recall into an unique measure. """ def __init__(self, k): """ Set metric description. """ self.desc = " F(%.1f) " % k self.k = k def run(self, evaluation): """ Compute metric. """ p = Precision().run(evaluation) r = Recall().run(evaluation) if ((self.k * self.k * p) + r) > 0: return float(((1 + (self.k * self.k)) * ((p * r) / ((self.k * self.k * p) + r)))) else: return 0 class MAE(Metric): """ Prediction accuracy metric defined as the mean absolute error. """ def __init__(self): """ Set metric description. """ self.desc = " MAE " def run(self, evaluation): """ Compute metric. """ errors = self.get_errors(evaluation) return sum(errors) / len(errors) class MSE(Metric): """ Prediction accuracy metric defined as the mean square error. """ def __init__(self): """ Set metric description. """ self.desc = " MSE " def run(self, evaluation): """ Compute metric. """ errors = self.get_errors(evaluation) square_errors = [pow(x, 2) for x in errors] return sum(square_errors) / len(square_errors) class RMSE(MSE): """ Prediction accuracy metric defined as the root mean square error. """ def __init__(self): """ Set metric description. """ self.desc = " RMSE " def run(self, evaluation): """ Compute metric. """ return math.sqrt(MSE.run(evaluation)) class Coverage(Metric): """ Evaluation metric defined as the percentage of itens covered by the recommender (have been recommended at least once). """ def __init__(self): """ Set initial parameters. """ self.desc = " Coverage " def run(self, evaluations_set): """ Compute metric. """ covered = set() for evaluation in evaluations_set: covered.update(set(evaluation.predicted_relevant)) return float(len(covered)) / evaluation.repository_size class Evaluation: """ Class designed to perform prediction evaluation, given data and metric. """ def __init__(self, predicted, real, repository_size): """ Set initial parameters. """ self.repository_size = repository_size self.predicted_item_scores = predicted.item_score self.predicted_relevant = predicted.get_prediction() self.predicted_relevant_len = len(self.predicted_relevant) self.real_item_scores = real.item_score self.real_relevant = real.get_prediction() self.real_relevant_len = len(self.real_relevant) self.true_positive = [v[0] for v in self.predicted_relevant if v[0] in [w[0] for w in self.real_relevant]] self.false_positive = [v[0] for v in self.predicted_relevant if not v[0] in [w[0] for w in self.real_relevant]] self.false_negative = [v[0] for v in self.real_relevant if not v[0] in [w[0] for w in self.predicted_relevant]] self.true_positive_len = len(self.true_positive) self.false_positive_len = len(self.false_positive) self.false_negative_len = len(self.false_negative) self.real_negative_len = self.repository_size - self.real_relevant_len self.true_negative_len = (self.real_negative_len - len(self.false_positive)) logging.debug("TP: %d" % len(self.true_positive)) logging.debug("FP: %d" % len(self.false_positive)) logging.debug("FN: %d" % len(self.false_negative)) logging.debug("TN: %d" % self.true_negative_len) logging.debug("Repo_size: %d" % self.repository_size) logging.debug("Relevant: %d" % len(self.real_relevant)) logging.debug("Irrelevant: %d" % self.real_negative_len) def run(self, metric): """ Perform the evaluation with the given metric. """ return metric.run(self) class CrossValidation: __metaclass__ = ABCMeta """ Class designed to perform cross-validation process. :param partition_proportion: A value that should dictates the number of data that will be on the traning data, the rest of data will be used as the validation set. :param rounds: The number of rounds that cross validation will be used on. :param rec: The recommendation strategy used. :param metrics_list: Array of the metrics that will be used to evaluate the algorithm. :param result_proportion: The percentage of recommendations that should be used based on the total number of packages available. """ def __init__(self, partition_proportion, rounds, rec, metrics_list, result_proportion): """ Set initial parameters. """ if partition_proportion < 1 and partition_proportion > 0: self.partition_proportion = partition_proportion else: logging.critical("Partition proportion must be a value" "in the interval [0,1].") raise Error self.rounds = rounds self.recommender = rec self.metrics_list = metrics_list self.cross_results = defaultdict(list) self.result_proportion = result_proportion @abstractmethod def get_evaluation(self, predicted_result, real_result): raise NotImplementedError("Method not implemented.") @abstractmethod def get_model(self): raise NotImplementedError("Method not implemented.") def get_result_size(self): result_size = (self.recommender.items_repository.get_doccount() * self.result_proportion) result_size = int(result_size) logging.debug("size %d" % result_size) return result_size @abstractmethod def get_real_results(self, round_partition): raise NotImplementedError("Method not implemented.") def get_partition_size(self, cross_item_score): return int(len(cross_item_score) * self.partition_proportion) @abstractmethod def get_predicted_results(self, round_user, round_partition, result_size): raise NotImplementedError("Method not implemented.") @abstractmethod def get_user_score(self, user): raise NotImplementedError("Method not implemented.") def reset_cross_item_score(self, cross_item_score, round_partition): while len(round_partition) > 0: item, score = round_partition.popitem() cross_item_score[item] = score return cross_item_score def run_metrics(self, predicted_result, real_result): logging.debug("Predicted result: %s", predicted_result) evaluation = self.get_evaluation(predicted_result, real_result) for metric in self.metrics_list: result = evaluation.run(metric) self.cross_results[metric.desc].append(result) def run(self, user): """ Perform cross-validation. """ ''' A dictionary containing all the usefull user packages. Its key is a package name, and its value is the input vector associated with that package. ''' cross_item_score = self.get_user_score(user) # The amount of data that will be used to train the algorithm partition_size = self.get_partition_size(cross_item_score) # main iteration for r in range(self.rounds): round_partition = split_pkg_data(cross_item_score, partition_size) logging.debug("Round partition: %s", str(round_partition)) logging.debug("Cross item-score: %s", str(cross_item_score)) # The algorithm model created with the selected training data. round_model = self.get_model(round_partition) result_size = self.get_result_size() if not result_size: logging.critical("Recommendation size is zero.") raise Error predicted_result = self.get_predicted_results( round_model, cross_item_score, result_size) if not predicted_result.size: logging.critical("No recommendation produced" " Abort cross-validation.") raise Error # partition is considered the expected result real_result = self.get_real_results(cross_item_score) self.run_metrics(predicted_result, real_result) # moving back items from round_partition to cross_item_score cross_item_score = self.reset_cross_item_score(cross_item_score, round_partition) class CrossValidationRecommender(CrossValidation): def get_evaluation(self, predicted_result, real_result): num_docs = self.recommender.items_repository.get_doccount() return Evaluation(predicted_result, real_result, num_docs) def get_model(self, cross_item_score): return User(cross_item_score) def get_pkg_score(self, user): cross_item_score = {} for pkg in user.pkg_profile: cross_item_score[pkg] = user.item_score[pkg] return cross_item_score def get_real_results(self, round_partition): return RecommendationResult(round_partition) def get_predicted_results(self, round_user, round_partition, result_size): return self.recommender.get_recommendation(round_user, result_size) def get_user_score(user): cross_item_score = {} for pkg in user.pkg_profile: cross_item_score[pkg] = user.item_score[pkg] return cross_item_score def __str__(self): """ String representation of the object. """ str = "\n" metrics_desc = "" for metric in self.metrics_list: metrics_desc += "%s|" % (metric.desc) str += "| Round |%s\n" % metrics_desc for r in range(self.rounds): metrics_result = "" for metric in self.metrics_list: metrics_result += (" %2.1f%% |" % (self.cross_results[metric.desc][r] * 100)) str += "| %d |%s\n" % (r, metrics_result) metrics_mean = "" for metric in self.metrics_list: mean = float(sum(self.cross_results[metric.desc]) / len(self.cross_results[metric.desc])) metrics_mean += " %2.1f%% |" % (mean * 100) str += "| Mean |%s\n" % (metrics_mean) return str AppRecommender-0.7.5/apprecommender/experiments/000077500000000000000000000000001306751311600217735ustar00rootroot00000000000000AppRecommender-0.7.5/apprecommender/experiments/README000066400000000000000000000003631306751311600226550ustar00rootroot00000000000000AppRecommender experiments and tests --------------------------------------- Install dependencies: # apt-get install \ python-unittest2 python-gnuplot gnuplot # cd ./src; git clone https://github.com/rueckstiess/expsuite (deprecated tests) AppRecommender-0.7.5/apprecommender/experiments/deprecated/000077500000000000000000000000001306751311600240735ustar00rootroot00000000000000AppRecommender-0.7.5/apprecommender/experiments/deprecated/README000066400000000000000000000001111306751311600247440ustar00rootroot00000000000000Experiments handled by expsuite: https://github.com/rueckstiess/expsuite AppRecommender-0.7.5/apprecommender/experiments/deprecated/clustering-suite.py000077500000000000000000000040211306751311600277530ustar00rootroot00000000000000#!/usr/bin/env python """ recommender suite - recommender experiments suite """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ import sys import os import logging sys.path.insert(0, '../') from apprecommender.config import Config from apprecommender.data import PopconXapianIndex if __name__ == '__main__': cfg = Config() cfg.index_mode = "recluster" logging.info("Starting clustering experiments") logging.info("Medoids: %d\t Max popcon:%d" % (cfg.k_medoids, cfg.max_popcon)) cfg.popcon_dir = os.path.expanduser( "~/org/popcon.debian.org/popcon-mail/popcon-entries/") cfg.popcon_index = cfg.popcon_index + ("_%dmedoids%dmax" % (cfg.k_medoids, cfg.max_popcon)) cfg.clusters_dir = cfg.clusters_dir + ("_%dmedoids%dmax" % (cfg.k_medoids, cfg.max_popcon)) pxi = PopconXapianIndex(cfg) logging.info("Overall dispersion: %f\n" % pxi.cluster_dispersion) # Write clustering log output = open(("results/clustering/%dmedoids%dmax" % (cfg.k_medoids, cfg.max_popcon)), 'w') output.write("# k_medoids\tmax_popcon\tdispersion\n") output.write("%d %f\n" % (cfg.k_medoids, cfg.max_popcon, pxi.cluster_dispersion)) output.close() AppRecommender-0.7.5/apprecommender/experiments/deprecated/experiments.cfg000066400000000000000000000012221306751311600271140ustar00rootroot00000000000000[DEFAULT] repetitions = 1 iterations = 10 path = 'results' experiment = 'grid' weight = ['bm25', 'trad'] ;profile_size = range(10,100,10) ;sample = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9] sample = [0.6, 0.7, 0.8, 0.9] [content] strategy = ['cb','cbt','cbd'] [clustering] experiment = 'single' ;iterations = 4 ;medoids = range(2,6) iterations = 6 medoids = [100,500,1000,5000,10000,50000] ;disabled for this experiment weight = 0 profile_size = 0 sample = 0 [colaborative] users_repository=["data/popcon","data/popcon-100","data/popcon-500","data/popcon-1000","data/popcon-5000","data/popcon-10000","data/popcon-50000"] neighbors = range(10,1010,50) AppRecommender-0.7.5/apprecommender/experiments/deprecated/k-suite.py000077500000000000000000000173731306751311600260440ustar00rootroot00000000000000#!/usr/bin/env python """ k-suite - experiment different neighborhood sizes """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ import os import sys import random import Gnuplot sys.path.insert(0, '../') from apprecommender.config import Config from apprecommender.recommender import Recommender, RecommendationResult from apprecommender.user import User, PopconSystem from apprecommender.evaluation import (Evaluation, Precision, Recall, FPR, F_score, MCC) def plot_roc(k, roc_points, log_file): g = Gnuplot.Gnuplot() g('set style data points') g.xlabel('False Positive Rate') g.ylabel('True Positive Rate') g('set xrange [0:1.0]') g('set yrange [0:1.0]') g.title("Setup: %s-k%d" % (log_file.split("/")[-1], k)) g.plot(Gnuplot.Data([[0, 0], [1, 1]], with_="lines lt 7"), Gnuplot.Data(roc_points)) g.hardcopy(log_file + ("-k%.3d.png" % k), terminal="png") g.hardcopy(log_file + ("-k%.3d.ps" % k), terminal="postscript", enhanced=1, color=1) def plot_summary(precision, f05, mcc, log_file): g = Gnuplot.Gnuplot() g('set style data lines') g.xlabel('Neighborhood (k)') g.title("Setup: %s-size20" % (log_file.split("/")[-1])) g.plot( Gnuplot.Data([[k, sum(precision[k]) / len(precision[k])] for k in precision.keys()], title="P"), Gnuplot.Data([[k, sum(f05[k]) / len(f05[k])] for k in f05.keys()], title="F05"), Gnuplot.Data([[k, sum(mcc[k]) / len(mcc[k])] for k in mcc.keys()], title="MCC")) g.hardcopy(log_file + (".png"), terminal="png") g.hardcopy(log_file + (".ps"), terminal="postscript", enhanced=1, color=1) class ExperimentResults: def __init__(self, repo_size): self.repository_size = repo_size self.precision = [] self.recall = [] self.fpr = [] self.f05 = [] self.mcc = [] def add_result(self, ranking, sample): predicted = RecommendationResult(dict.fromkeys(ranking, 1)) real = RecommendationResult(sample) evaluation = Evaluation(predicted, real, self.repository_size) self.precision.append(evaluation.run(Precision())) self.recall.append(evaluation.run(Recall())) self.fpr.append(evaluation.run(FPR())) self.f05.append(evaluation.run(F_score(0.5))) self.mcc.append(evaluation.run(MCC())) def get_roc_point(self): tpr = self.recall fpr = self.fpr if not tpr or not fpr: return [0, 0] return [sum(fpr) / len(fpr), sum(tpr) / len(tpr)] def get_precision_summary(self): if not self.precision: return 0 return sum(self.precision) / len(self.precision) def get_f05_summary(self): if not self.f05: return 0 return sum(self.f05) / len(self.f05) def get_mcc_summary(self): if not self.mcc: return 0 return sum(self.mcc) / len(self.mcc) if __name__ == '__main__': if len(sys.argv) < 3: print "Usage: k-suite strategy_str sample_file" exit(1) threshold = 20 iterations = 30 neighbors = [3, 5, 10, 50, 100, 150, 200, 300, 400, 500] cfg = Config() cfg.strategy = sys.argv[1] sample_file = sys.argv[2] population_sample = [] with open(sample_file, 'r') as f: for line in f.readlines(): user_id = line.strip('\n') population_sample.append( os.path.join(cfg.popcon_dir, user_id[:2], user_id)) # setup dictionaries and files roc_summary = {} recommended = {} precision_summary = {} f05_summary = {} mcc_summary = {} sample_dir = ("results/k-suite/%s" % sample_file.split('/')[-1]) if not os.path.exists(sample_dir): os.makedirs(sample_dir) log_file = os.path.join(sample_dir, cfg.strategy) with open(log_file, 'w') as f: f.write("# %s\n\n" % sample_file.split('/')[-1]) f.write("# strategy %s recommendation_size %d iterations %d\n\n" % (cfg.strategy, threshold, iterations)) f.write("# k coverage \tprecision \tf05 \tmcc\n\n") for k in neighbors: roc_summary[k] = [] recommended[k] = set() precision_summary[k] = [] f05_summary[k] = [] mcc_summary[k] = [] with open(log_file + "-k%.3d" % k, 'w') as f: f.write("# %s\n\n" % sample_file.split('/')[-1]) f.write("# strategy-k %s-k%.3d\n\n" % (cfg.strategy, k)) f.write("# roc_point \tprecision \tf05 \tmcc\n\n") # main loop per user for submission_file in population_sample: user = PopconSystem(submission_file) user.filter_pkg_profile(cfg.pkgs_filter) user.maximal_pkg_profile() for k in neighbors: cfg.k_neighbors = k rec = Recommender(cfg) repo_size = rec.items_repository.get_doccount() results = ExperimentResults(repo_size) # n iterations for same recommender and user for n in range(iterations): # Fill sample profile profile_len = len(user.pkg_profile) item_score = {} for pkg in user.pkg_profile: item_score[pkg] = user.item_score[pkg] sample = {} sample_size = int(profile_len * 0.9) for i in range(sample_size): key = random.choice(item_score.keys()) sample[key] = item_score.pop(key) iteration_user = User(item_score) recommendation = rec.get_recommendation( iteration_user, threshold) if hasattr(recommendation, "ranking"): results.add_result(recommendation.ranking, sample) recommended[k] = recommended[ k].union(recommendation.ranking) # save summary roc_point = results.get_roc_point() roc_summary[k].append(roc_point) precision = results.get_precision_summary() precision_summary[k].append(precision) f05 = results.get_f05_summary() f05_summary[k].append(f05) mcc = results.get_mcc_summary() mcc_summary[k].append(mcc) with open(log_file + "-k%.3d" % k, 'a') as f: f.write("[%.2f,%.2f] \t%.4f \t%.4f \t%.4f\n" % (roc_point[0], roc_point[1], precision, f05, mcc)) # back to main flow with open(log_file, 'a') as f: plot_summary(precision_summary, f05_summary, mcc_summary, log_file) for k in neighbors: coverage = len(recommended[size]) / float(repo_size) # noqa ?? f.write("%3d \t%.2f \t%.4f \t%.4f \t%.4f\n" % (k, coverage, float(sum(precision_summary[ k])) / len(precision_summary[k]), float(sum(f05_summary[k])) / len(f05_summary[k]), float(sum(mcc_summary[k])) / len(mcc_summary[k]))) plot_roc(k, roc_summary[k], log_file) AppRecommender-0.7.5/apprecommender/experiments/deprecated/runner.py000077500000000000000000000166551306751311600257760ustar00rootroot00000000000000#!/usr/bin/env python """ recommender suite - recommender experiments suite """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ import expsuite import sys import logging import random import Gnuplot sys.path.insert(0, '../') from apprecommender.config import Config from apprecommender.data import PopconXapianIndex from apprecommender.recommender import Recommender, RecommendationResult from apprecommender.evaluation import (Evaluation, Accuracy, Precision, Recall, F1) from apprecommender.user import LocalSystem, User class ClusteringSuite(expsuite.PyExperimentSuite): def reset(self, params, rep): self.cfg = Config() self.cfg.popcon_index = "../tests/test_data/.sample_pxi" self.cfg.popcon_dir = "../tests/test_data/popcon_dir" self.cfg.clusters_dir = "../tests/test_data/clusters_dir" if params['name'] == "clustering": logging.info("Starting 'clustering' experiments suite...") self.cfg.index_mode = "recluster" def iterate(self, params, rep, n): if params['name'] == "clustering": logging.info("Running iteration %d" % params['medoids'][n]) self.cfg.k_medoids = params['medoids'][n] pxi = PopconXapianIndex(self.cfg) result = {'k_medoids': params['medoids'][n], 'dispersion': pxi.cluster_dispersion} else: result = {} return result class ContentBasedSuite(expsuite.PyExperimentSuite): def reset(self, params, rep): if params['name'].startswith("content"): cfg = Config() # if the index was not built yet # app_axi = AppAptXapianIndex(cfg.axi,"results/arnaldo/AppAxi") cfg.axi = "data/AppAxi" cfg.index_mode = "old" cfg.weight = params['weight'] self.rec = Recommender(cfg) self.rec.set_strategy(params['strategy']) self.repo_size = self.rec.items_repository.get_doccount() self.user = LocalSystem() self.user.app_pkg_profile(self.rec.items_repository) self.sample_size = int( len(self.user.pkg_profile) * params['sample']) # iteration should be set to 10 in config file # self.profile_size = range(10,101,10) def iterate(self, params, rep, n): if params['name'].startswith("content"): item_score = dict.fromkeys(self.user.pkg_profile, 1) # Prepare partition sample = {} for i in range(self.sample_size): key = random.choice(item_score.keys()) sample[key] = item_score.pop(key) # Get full recommendation user = User(item_score) recommendation = self.rec.get_recommendation(user, self.repo_size) # Write recall log recall_file = "results/content/recall/%s-%s-%.2f-%d" % \ (params['strategy'], params[ 'weight'], params['sample'], n) output = open(recall_file, 'w') output.write("# weight=%s\n" % params['weight']) output.write("# strategy=%s\n" % params['strategy']) output.write("# sample=%f\n" % params['sample']) output.write("\n%d %d %d\n" % (self.repo_size, len(item_score), self.sample_size)) notfound = [] ranks = [] for pkg in sample.keys(): if pkg in recommendation.ranking: ranks.append(recommendation.ranking.index(pkg)) else: notfound.append(pkg) for r in sorted(ranks): output.write(str(r) + "\n") if notfound: output.write("Out of recommendation:\n") for pkg in notfound: output.write(pkg + "\n") output.close() # Plot metrics summary accuracy = [] precision = [] recall = [] f1 = [] g = Gnuplot.Gnuplot() g('set style data lines') g.xlabel('Recommendation size') for size in range(1, len(recommendation.ranking) + 1, 100): predicted = RecommendationResult( dict.fromkeys(recommendation.ranking[:size], 1)) real = RecommendationResult(sample) evaluation = Evaluation(predicted, real, self.repo_size) accuracy.append([size, evaluation.run(Accuracy())]) precision.append([size, evaluation.run(Precision())]) recall.append([size, evaluation.run(Recall())]) f1.append([size, evaluation.run(F1())]) g.plot(Gnuplot.Data(accuracy, title="Accuracy"), Gnuplot.Data(precision, title="Precision"), Gnuplot.Data(recall, title="Recall"), Gnuplot.Data(f1, title="F1")) g.hardcopy(recall_file + "-plot.ps", enhanced=1, color=1) # Iteration log result = {'iteration': n, 'weight': params['weight'], 'strategy': params['strategy'], 'accuracy': accuracy[20], 'precision': precision[20], 'recall:': recall[20], 'f1': f1[20]} return result # class CollaborativeSuite(expsuite.PyExperimentSuite): # def reset(self, params, rep): # if params['name'].startswith("collaborative"): # # def iterate(self, params, rep, n): # if params['name'].startswith("collaborative"): # for root, dirs, files in os.walk(self.source_dir): # for popcon_file in files: # submission = PopconSubmission( # os.path.join(root,popcon_file)) # user = User(submission.packages) # user.maximal_pkg_profile() # rec.get_recommendation(user) # precision = 0 # result = {'weight': params['weight'], # 'strategy': params['strategy'], # 'profile_size': self.profile_size[n], # 'accuracy': accuracy, # 'precision': precision, # 'recall:': recall, # 'f1': } # else: # result = {} # return result if __name__ == '__main__': if "clustering" in sys.argv or len(sys.argv) < 3: ClusteringSuite().start() if "content" in sys.argv or len(sys.argv) < 3: ContentBasedSuite().start() # if "collaborative" in sys.argv or len(sys.argv)<3: # CollaborativeSuite().start() AppRecommender-0.7.5/apprecommender/experiments/deprecated/strategies-suite.py000077500000000000000000000267161306751311600277650ustar00rootroot00000000000000#!/usr/bin/env python """ recommender suite - recommender experiments suite """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ import sys import random import Gnuplot sys.path.insert(0, '../') from apprecommender.config import Config from apprecommender.recommender import Recommender, RecommendationResult from apprecommender.user import User, PopconSystem from apprecommender.evaluation import (Evaluation, Accuracy, Precision, Recall, F_score) # iterations = 3 # sample_proportions = [0.9] # weighting = [('bm25',1.2)] # collaborative = ['knn'] # content_based = [] # hybrid = ['knnco'] # profile_size = [50,100] # popcon_size = ["1000"] # neighbors = [50] iterations = 10 sample_proportions = [0.5, 0.6, 0.7, 0.8, 0.9] weighting = [('bm25', 1.2), ('bm25', 1.6), ('bm25', 2.0), ('trad', 0)] content_based = ['cb', 'cbt', 'cbd', 'cbh', 'cb_eset', 'cbt_eset', 'cbd_eset', 'cbh_eset'] collaborative = ['knn_eset', 'knn', 'knn_plus'] hybrid = ['knnco', 'knnco_eset'] profile_size = range(20, 100, 20) # popcon_size = [1000,10000,50000,'full'] neighbors = range(10, 510, 50) def write_recall_log(label, n, sample, recommendation, profile_size, repo_size, log_file): # Write recall log output = open(("%s-%d" % (log_file, n)), 'w') output.write("# %s-n\n" % label["description"]) output.write("# %s-%d\n" % (label["values"], n)) output.write("\n%d %d %d\n" % (repo_size, profile_size, len(sample))) if hasattr(recommendation, "ranking"): notfound = [] ranks = [] for pkg in sample.keys(): if pkg in recommendation.ranking: ranks.append(recommendation.ranking.index(pkg)) else: notfound.append(pkg) for r in sorted(ranks): output.write(str(r) + "\n") if notfound: output.write("Out of recommendation:\n") for pkg in notfound: output.write(pkg + "\n") output.close() def plot_summary(precision, recall, f1, f05, accuracy, log_file): # Plot metrics summary g = Gnuplot.Gnuplot() g('set style data lines') g.xlabel('Recommendation size') g.title("Setup: %s" % log_file.split("/")[-1]) g.plot(Gnuplot.Data(accuracy, title="Accuracy"), Gnuplot.Data(precision, title="Precision"), Gnuplot.Data(recall, title="Recall"), Gnuplot.Data(f1, title="F_1"), Gnuplot.Data(f05, title="F_0.5")) g.hardcopy(log_file + ".png", terminal="png") g.hardcopy(log_file + ".ps", terminal="postscript", enhanced=1, color=1) g('set logscale x') g('replot') g.hardcopy(log_file + "-logscale.png", terminal="png") g.hardcopy(log_file + "-logscale.ps", terminal="postscript", enhanced=1, color=1) def get_label(cfg, sample_proportion): label = {} if cfg.strategy in content_based: label["description"] = "strategy-filter-profile-k1_bm25-sample" label["values"] = ("%s-profile%d-%s-kbm%.1f-sample%.1f" % (cfg.strategy, cfg.profile_size, cfg.pkgs_filter.split("/")[-1], cfg.bm25_k1, sample_proportion)) elif cfg.strategy in collaborative: label["description"] = "strategy-knn-filter-k1_bm25-sample" label["values"] = ("%s-k%d-%s-kbm%.1f-sample%.1f" % (cfg.strategy, cfg.k_neighbors, cfg.pkgs_filter.split("/")[-1], cfg.bm25_k1, sample_proportion)) elif cfg.strategy in hybrid: label["description"] = "strategy-knn-filter-profile-k1_bm25-sample" label["values"] = ("%s-k%d-profile%d-%s-kbm%.1f-sample%.1f" % (cfg.strategy, cfg.k_neighbors, cfg.profile_size, cfg.pkgs_filter.split("/")[-1], cfg.bm25_k1, sample_proportion)) else: print "Unknown strategy" return label class ExperimentResults: def __init__(self, repo_size): self.repository_size = repo_size self.accuracy = {} self.precision = {} self.recall = {} self.f1 = {} self.f05 = {} points = [1] + range(10, 200, 10) + range( 200, self.repository_size, 100) for size in points: self.accuracy[size] = [] self.precision[size] = [] self.recall[size] = [] self.f1[size] = [] self.f05[size] = [] def add_result(self, ranking, sample): for size in self.accuracy.keys(): predicted = RecommendationResult(dict.fromkeys(ranking[:size], 1)) real = RecommendationResult(sample) evaluation = Evaluation(predicted, real, self.repository_size) self.accuracy[size].append(evaluation.run(Accuracy())) self.precision[size].append(evaluation.run(Precision())) self.recall[size].append(evaluation.run(Recall())) self.f1[size].append(evaluation.run(F_score(1))) self.f05[size].append(evaluation.run(F_score(0.5))) def get_precision_summary(self): summary = [[size, sum(values) / len(values)] for size, values in self.precision.items()] return sorted(summary) def get_recall_summary(self): summary = [[size, sum(values) / len(values)] for size, values in self.recall.items()] return sorted(summary) def get_f1_summary(self): summary = [[size, sum(values) / len(values)] for size, values in self.f1.items()] return sorted(summary) def get_f05_summary(self): summary = [[size, sum(values) / len(values)] for size, values in self.f05.items()] return sorted(summary) def get_accuracy_summary(self): summary = [[size, sum(values) / len(values)] for size, values in self.accuracy.items()] return sorted(summary) def best_precision(self): size = max(self.precision, key=lambda x: max(self.precision[x])) return (size, max(self.precision[size])) def best_f1(self): size = max(self.f1, key=lambda x: max(self.f1[x])) return (size, max(self.f1[size])) def best_f05(self): size = max(self.f05, key=lambda x: max(self.f05[x])) return (size, max(self.f05[size])) def run_strategy(cfg, user): for weight in weighting: cfg.weight = weight[0] cfg.bm25_k1 = weight[1] rec = Recommender(cfg) repo_size = rec.items_repository.get_doccount() for proportion in sample_proportions: results = ExperimentResults(repo_size) label = get_label(cfg, proportion) log_file = "results/strategies/" + label["values"] for n in range(iterations): # Fill sample profile profile_size = len(user.pkg_profile) item_score = {} for pkg in user.pkg_profile: item_score[pkg] = user.item_score[pkg] sample = {} sample_size = int(profile_size * proportion) for i in range(sample_size): key = random.choice(item_score.keys()) sample[key] = item_score.pop(key) iteration_user = User(item_score) recommendation = rec.get_recommendation( iteration_user, repo_size) write_recall_log( label, n, sample, recommendation, profile_size, repo_size, log_file) if hasattr(recommendation, "ranking"): results.add_result(recommendation.ranking, sample) with open(log_file, 'w') as f: precision_10 = sum(results.precision[10]) / len( results.precision[10]) f1_10 = sum(results.f1[10]) / len(results.f1[10]) f05_10 = sum(results.f05[10]) / len(results.f05[10]) f.write("# %s\n# %s\n\ncoverage %d\n\n" % (label["description"], label["values"], recommendation.size)) f.write("# best results (recommendation size; metric)\n") f.write( "precision (%d; %.2f)\nf1 (%d; %.2f)\nf05 (%d; %.2f)\n\n" % (results.best_precision()[0], results.best_precision()[1], results.best_f1()[0], results.best_f1()[1], results.best_f05()[0], results.best_f05()[1])) f.write("# recommendation size 10\nprecision (10; %.2f)\nf1 (10; %.2f)\nf05 (10; %.2f)" % # noqa (precision_10, f1_10, f05_10)) precision = results.get_precision_summary() recall = results.get_recall_summary() f1 = results.get_f1_summary() f05 = results.get_f05_summary() accuracy = results.get_accuracy_summary() plot_summary(precision, recall, f1, f05, accuracy, log_file) def run_content(user, cfg): for strategy in content_based: cfg.strategy = strategy for size in profile_size: cfg.profile_size = size run_strategy(cfg, user) def run_collaborative(user, cfg): for strategy in collaborative: cfg.strategy = strategy for k in neighbors: cfg.k_neighbors = k # for size in popcon_size: # if size: # cfg.popcon_desktopapps = popcon_desktopapps+"_"+size # cfg.popcon_programs = popcon_programs+"_"+size run_strategy(cfg, user) def run_hybrid(user, cfg): for strategy in hybrid: cfg.strategy = strategy for k in neighbors: cfg.k_neighbors = k # for size in popcon_size: # if size: # cfg.popcon_desktopapps = popcon_desktopapps+"_"+size # cfg.popcon_programs = popcon_programs+"_"+size for size in profile_size: cfg.profile_size = size run_strategy(cfg, user) if __name__ == '__main__': # user = LocalSystem() # user = # RandomPopcon(cfg.popcon_dir,os.path.join(cfg.filters_dir,"desktopapps")) cfg = Config() user = PopconSystem( "/root/.app-recommender/popcon-entries/8b/8b44fcdbcf676e711a153d5db09979d7") # noqa # user = # PopconSystem("/root/.app-recommender/popcon-entries/4a/4a67a295ec14826db2aa1d90be2f1623") user.filter_pkg_profile(cfg.pkgs_filter) user.maximal_pkg_profile() if "content" in sys.argv or len(sys.argv) < 2: run_content(user, cfg) if "collaborative" in sys.argv or len(sys.argv) < 2: run_collaborative(user, cfg) if "hybrid" in sys.argv or len(sys.argv) < 2: run_hybrid(user, cfg) AppRecommender-0.7.5/apprecommender/experiments/extract-sample-db.py000077500000000000000000000036711306751311600256730ustar00rootroot00000000000000#! /usr/bin/env python """ sample-popcon - extract a sample from popcon population """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ import xapian import sys if __name__ == '__main__': try: sample_file = sys.argv[1] popcon = xapian.WritableDatabase(sys.argv[2], xapian.DB_OPEN) except: print "Usage: extract-sample-db sample_file popcon_index" exit(1) enquire = xapian.Enquire(popcon) print sample_file.split("/") new_popcon = xapian.WritableDatabase( sys.argv[2] + "-" + sample_file.split("/")[-1], xapian.DB_CREATE_OR_OVERWRITE) print ("Popcon repository size: %d" % popcon.get_doccount()) for submission in open(sample_file): print "ID" + submission.strip() query = xapian.Query("ID" + submission.strip()) enquire.set_query(query) mset = enquire.get_mset(0, 20) for m in mset: print "Adding doc %s" % m.docid new_popcon.add_document(popcon.get_document(m.docid)) print "Removing doc %s" % m.docid popcon.delete_document(m.docid) print ("Popcon repository size: %d" % popcon.get_doccount()) print ("Popcon repository size: %d" % new_popcon.get_doccount()) AppRecommender-0.7.5/apprecommender/experiments/hybrid.py000077500000000000000000000223521306751311600236350ustar00rootroot00000000000000#!/usr/bin/env python """ hybrid-suite """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ import Gnuplot import numpy import os import random import sys from apprecommender.config import Config from apprecommender.recommender import Recommender, RecommendationResult from apprecommender.evaluation import Evaluation, Precision, F_score from apprecommender.user import User, PopconSystem # hybrid_strategies = ['knnco','knnco_eset'] if __name__ == '__main__': if len(sys.argv) < 2: print "Usage: hybrid strategy sample_file" exit(1) iterations = 20 profile_size = [10, 40, 70, 100, 170, 240] neighbor_size = [3, 10, 50, 70, 100, 150, 200] # iterations = 1 # profile_size = [10,20,30] # neighbor_size = [10,20,30] cfg = Config() population_sample = [] strategy = sys.argv[1] sample_file = sys.argv[2] sample_str = sample_file.split('/')[-1] with open(sample_file, 'r') as f: for line in f.readlines(): user_id = line.strip('\n') population_sample.append( os.path.join(cfg.popcon_dir, user_id[:2], user_id)) sample_dir = ("results/hybrid/%s/%s" % (sample_str, strategy)) if not os.path.exists(sample_dir): os.makedirs(sample_dir) cfg.strategy = strategy p_10_summary = {} f05_100_summary = {} c_10 = {} c_100 = {} log_file = os.path.join(sample_dir, sample_str + "-" + cfg.strategy) graph_10 = {} graph_100 = {} graph_10_jpg = {} graph_100_jpg = {} comment_10 = {} comment_100 = {} for k in neighbor_size: graph_10[k] = log_file + ("-neighborhood%.3d-010.png" % k) graph_100[k] = log_file + ("-neighborhood%.3d-100.png" % k) graph_10_jpg[k] = graph_10[k].strip(".png") + ".jpg" graph_100_jpg[k] = graph_100[k].strip(".png") + ".jpg" comment_10[k] = graph_10_jpg[k] + ".comment" comment_100[k] = graph_100_jpg[k] + ".comment" with open(comment_10[k], 'w') as f: f.write("# %s\n" % sample_str) f.write("# strategy %s\n# threshold 10\n# iterations %d\n\n" % (cfg.strategy, iterations)) f.write("# neighborhood\tprofile\tmean_p_10\tdev_p_10\tc_10\n\n") with open(comment_100[k], 'w') as f: f.write("# %s\n" % sample_str) f.write("# strategy %s\n# threshold 100\n# iterations %d\n\n" % (cfg.strategy, iterations)) f.write( '# neighborhood\tprofile\tmean_f05_100\tdev_f05_100\tc_100\n\n') # noqa c_10[k] = {} c_100[k] = {} p_10_summary[k] = {} f05_100_summary[k] = {} for size in profile_size: c_10[k][size] = set() c_100[k][size] = set() p_10_summary[k][size] = [] f05_100_summary[k][size] = [] with open(log_file + "-neighborhood%.3d-profile%.3d" % (k, size), 'w') as f: f.write("# %s\n" % sample_str) f.write("# strategy %s-neighborhood%.3d-profile%.3d\n\n" % (cfg.strategy, k, size)) f.write("# p_10\t\tf05_100\n\n") # main loop per user for submission_file in population_sample: user = PopconSystem(submission_file) user.filter_pkg_profile(cfg.pkgs_filter) user.maximal_pkg_profile() for k in neighbor_size: cfg.k_neighbors = k for size in profile_size: cfg.profile_size = size rec = Recommender(cfg) repo_size = rec.items_repository.get_doccount() p_10 = [] f05_100 = [] for n in range(iterations): # Fill sample profile profile_len = len(user.pkg_profile) item_score = {} for pkg in user.pkg_profile: item_score[pkg] = user.item_score[pkg] sample = {} sample_size = int(profile_len * 0.9) for i in range(sample_size): key = random.choice(item_score.keys()) sample[key] = item_score.pop(key) iteration_user = User(item_score) recommendation = rec.get_recommendation( iteration_user, repo_size) if hasattr(recommendation, "ranking"): ranking = recommendation.ranking real = RecommendationResult(sample) predicted_10 = RecommendationResult( dict.fromkeys(ranking[:10], 1)) evaluation = Evaluation(predicted_10, real, repo_size) p_10.append(evaluation.run(Precision())) predicted_100 = RecommendationResult( dict.fromkeys(ranking[:100], 1)) evaluation = Evaluation(predicted_100, real, repo_size) f05_100.append(evaluation.run(F_score(0.5))) c_10[k][size] = c_10[k][size].union( recommendation.ranking[:10]) c_100[k][size] = c_100[k][size].union( recommendation.ranking[:100]) # save summary if p_10: p_10_summary[k][size].append(numpy.mean(p_10)) if f05_100: f05_100_summary[k][size].append(numpy.mean(f05_100)) path = log_file + "-neighborhood%.3d-profile%.3d" % (k, size) with open(path, 'a') as f: f.write("%.4f\t\t%.4f\n" % (numpy.mean(p_10), numpy.mean(f05_100))) # back to main flow coverage_10 = {} coverage_100 = {} for k in neighbor_size: coverage_10[k] = {} coverage_100[k] = {} with open(comment_10[k], 'a') as f: for size in profile_size: coverage_10[k][size] = len(c_10[k][size]) / float(repo_size) f.write("%3d\t\t%3d\t\t%.4f\t%.4f\t%.4f\n" % (k, size, numpy.mean(p_10_summary[k][size]), numpy.std(p_10_summary[k][size]), coverage_10[k][size])) with open(comment_100[k], 'a') as f: for size in profile_size: coverage_100[k][size] = len(c_100[k][size]) / float(repo_size) f.write("%3d\t\t%3d\t\t%.4f\t%.4f\t%.4f\n" % (k, size, numpy.mean(f05_100_summary[k][size]), numpy.std(f05_100_summary[k][size]), coverage_100[k][size])) for k in neighbor_size: # plot results summary g = Gnuplot.Gnuplot() g('set style data lines') g('set yrange [0:1.0]') g.xlabel('Profile size') g.title("Setup: %s-neighborhood%3d (threshold 10)" % (cfg.strategy, k)) g.plot(Gnuplot.Data(sorted([[i, numpy.mean(p_10_summary[k][i]), numpy.std(p_10_summary[k][i])] for i in p_10_summary[k].keys( )]), title="Precision"), Gnuplot.Data(sorted([[i, numpy.mean(p_10_summary[k][i]), numpy.std(p_10_summary[k][i])] for i in p_10_summary[k].keys( )]), title="Deviation", with_="yerrorbar lt 2 pt 6"), Gnuplot.Data( sorted( [[i, coverage_10[k][i]] for i in coverage_10[k].keys()]), title="Coverage")) g.hardcopy(graph_10[k], terminal="png") g = Gnuplot.Gnuplot() g('set style data lines') g('set yrange [0:1.0]') g.xlabel('Profile size') g.title("Setup: %s-neighborhood%3d (threshold 100)" % (cfg.strategy, k)) g.plot(Gnuplot.Data(sorted([[i, numpy.mean(f05_100_summary[k][i]), numpy.std(f05_100_summary[k][i])] for i in f05_100_summary[k].keys( )]), title="F05"), Gnuplot.Data(sorted([[i, numpy.mean(f05_100_summary[k][i]), numpy.std(f05_100_summary[k][i])] for i in f05_100_summary[k].keys( )]), title="Deviation", with_="yerrorbar lt 2 pt 6"), Gnuplot.Data( sorted( [[i, coverage_100[k][i]] for i in coverage_100[k].keys()]), title="Coverage")) g.hardcopy(graph_100[k], terminal="png") AppRecommender-0.7.5/apprecommender/experiments/misc-popcon.py000077500000000000000000000054671306751311600246130ustar00rootroot00000000000000#! /usr/bin/env python """ misc_popcon - misc experiments with popcon data """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ import Gnuplot import xapian def profile_population(): popcon = xapian.Database( "/home/tassia/.app-recommender/popcon_desktopapps") popcon_size = popcon.get_doccount() print "User repository size: %d" % popcon_size profiles_size = [] for n in range(1, popcon_size): user = popcon.get_document(n) profile = [t.term for t in user.termlist()] profiles_size.append(len(profile)) profile_population = [(n, profiles_size.count(n)) for n in range(max(profiles_size) + 1) if profiles_size.count(n) > 0] ranges_population = [] ranges_percentage = [] ranges = range(0, 601, 50) for maximum in ranges[1:]: minimum = ranges[ranges.index(maximum) - 1] valid = [x[1] for x in profile_population if x[0] > minimum and x[0] <= maximum] ranges_population.append((maximum, sum(valid))) ranges_percentage.append((maximum, sum(valid) / float(popcon_size))) g = Gnuplot.Gnuplot() g('set style data points') # give gnuplot an arbitrary command g.xlabel('Desktop profile size') g.ylabel('Population size') g.plot(profile_population) g.hardcopy('profile_population.png', terminal="png") g.hardcopy('profile_population.ps', terminal="postscript", enhanced=1, color=1) g.reset() g.xlabel('Range Desktop profile size') g.ylabel('Population size') g.plot(ranges_population) g.hardcopy('ranges_profile_population.png', terminal="png") g.hardcopy('ranges_profile_population.ps', terminal="postscript", enhanced=1, color=1) g.reset() g.xlabel('Range Desktop profile size') g.ylabel('Population percentage') g.plot(ranges_percentage) g.hardcopy('ranges_profile_percentage.png', terminal="png") g.hardcopy('ranges_profile_percentage.ps', terminal="postscript", enhanced=1, color=1) if __name__ == '__main__': profile_population() AppRecommender-0.7.5/apprecommender/experiments/popcon-population.py000077500000000000000000000056321306751311600260440ustar00rootroot00000000000000#! /usr/bin/env python """ misc_popcon - misc experiments with popcon data """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ import Gnuplot import xapian import os def get_population_profile(popcon): profiles_size = [] for n in range(1, popcon.get_doccount()): user = popcon.get_document(n) pkgs_profile = [ t.term for t in user.termlist() if t.term.startswith("XP")] if len(pkgs_profile) < 10: print "-- profile<10:", user.get_data() profiles_size.append(len(pkgs_profile)) max_profile = max(profiles_size) population_profile = [(n, profiles_size.count(n)) for n in range(max_profile + 1) if profiles_size.count(n) > 0] return population_profile, max_profile def get_profile_ranges(population_profile, max_profile, popcon_size): ranges = range(0, 251, 50) ranges.append(max_profile) ranges_population = [] ranges_percentage = [] for maximum in ranges[1:]: minimum = ranges[ranges.index(maximum) - 1] valid = [x[1] for x in population_profile if x[0] > minimum and x[0] <= maximum] ranges_population.append((maximum, sum(valid))) ranges_percentage.append((maximum, sum(valid) / float(popcon_size))) return ranges_population, ranges_percentage def plot(data, xlabel, ylabel, output): g = Gnuplot.Gnuplot() g('set style data points') g.xlabel(xlabel) g.ylabel(ylabel) g.plot(data) g.hardcopy(output + ".png", terminal="png") g.hardcopy(output + ".ps", terminal="postscript", enhanced=1, color=1) if __name__ == '__main__': popcon = xapian.Database( os.path.expanduser("~/.app-recommender/popcon_desktopapps")) print ("Popcon repository size: %d" % popcon.get_doccount()) profile_population, max_profile = get_population_profile(popcon) ranges_population, ranges_percentage = get_profile_ranges( profile_population, max_profile, popcon.get_doccount()) print "Population per profile range (up to index)" print ranges_population plot(profile_population, "Desktop profile size", "Population size", "results/misc-popcon/profile_population") AppRecommender-0.7.5/apprecommender/experiments/pure.py000077500000000000000000000224211306751311600233240ustar00rootroot00000000000000#!/usr/bin/env python """ profile-suite - experiment different profile sizes """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ import os import sys import random import Gnuplot import numpy from apprecommender.config import Config from apprecommender.evaluation import Evaluation, Precision, F_score from apprecommender.recommender import Recommender, RecommendationResult from apprecommender.user import User, PopconSystem if __name__ == '__main__': if len(sys.argv) < 2: print "Usage: pure strategy_category sample_file" exit(1) iterations = 20 profile_size = [10, 20, 40, 60, 80, 100, 140, 170, 200, 240] neighbor_size = [3, 5, 10, 20, 30, 50, 70, 100, 150, 200] content_strategies = [ 'cb', 'cbt', 'cbd', 'cbh', 'cb_eset', 'cbt_eset', 'cbd_eset', 'cbh_eset'] collaborative_strategies = ['knn_eset', 'knn', 'knn_plus'] # iterations = 1 # profile_size = [10,20,30] # neighbor_size = [3,5,10,20,30,50] # content_strategies = ['cb'] # collaborative_strategies = ['knn'] strategy_category = sys.argv[1] if strategy_category == "content": strategies = content_strategies sizes = profile_size option_str = "profile" elif strategy_category == "collaborative": strategies = collaborative_strategies sizes = neighbor_size option_str = "neighborhood" else: print "Usage: profile-suite strategy_category sample_file" exit(1) cfg = Config() population_sample = [] sample_file = sys.argv[2] sample_str = sample_file.split('/')[-1] with open(sample_file, 'r') as f: for line in f.readlines(): user_id = line.strip('\n') population_sample.append( os.path.join(cfg.popcon_dir, user_id[:2], user_id)) sample_dir = ("results/%s/%s" % (strategy_category, sample_str)) if not os.path.exists(sample_dir): os.makedirs(sample_dir) for strategy in strategies: cfg.strategy = strategy p_10_summary = {} f05_100_summary = {} c_10 = {} c_100 = {} log_file = os.path.join(sample_dir, sample_str + "-" + cfg.strategy) graph_10 = log_file + "-10.png" graph_100 = log_file + "-100.png" graph_10_jpg = graph_10.strip(".png") + ".jpg" graph_100_jpg = graph_100.strip(".png") + ".jpg" comment_10 = graph_10_jpg + ".comment" comment_100 = graph_100_jpg + ".comment" with open(comment_10, 'w') as f: f.write("# sample %s\n" % sample_str) f.write("# strategy %s\n# threshold 10\n# iterations %d\n\n" % (cfg.strategy, iterations)) f.write("# %s\tmean_p_10\tdev_p_10\tc_10\n\n" % option_str) with open(comment_100, 'w') as f: f.write("# sample %s\n" % sample_str) f.write("# strategy %s\n# threshold 100\n# iterations %d\n\n" % (cfg.strategy, iterations)) f.write("# %s\t\tmean_f05_100\t\tdev_f05_100\t\tc_100\n\n" % option_str) for size in sizes: c_10[size] = set() c_100[size] = set() p_10_summary[size] = [] f05_100_summary[size] = [] with open(log_file + "-%s%.3d" % (option_str, size), 'w') as f: f.write("# sample %s\n" % sample_str) f.write("# strategy %s-%s%.3d\n\n" % (cfg.strategy, option_str, size)) f.write("# p_10\tf05_100\n\n") # main loop per user for submission_file in population_sample: user = PopconSystem(submission_file) user.filter_pkg_profile(cfg.pkgs_filter) user.maximal_pkg_profile() for size in sizes: cfg.profile_size = size cfg.k_neighbors = size rec = Recommender(cfg) repo_size = rec.items_repository.get_doccount() p_10 = [] f05_100 = [] for n in range(iterations): # Fill sample profile profile_len = len(user.pkg_profile) item_score = {} for pkg in user.pkg_profile: item_score[pkg] = user.item_score[pkg] sample = {} sample_size = int(profile_len * 0.9) for i in range(sample_size): key = random.choice(item_score.keys()) sample[key] = item_score.pop(key) iteration_user = User(item_score) recommendation = rec.get_recommendation( iteration_user, repo_size) if hasattr(recommendation, "ranking"): ranking = recommendation.ranking real = RecommendationResult(sample) predicted_10 = RecommendationResult( dict.fromkeys(ranking[:10], 1)) evaluation = Evaluation(predicted_10, real, repo_size) p_10.append(evaluation.run(Precision())) predicted_100 = RecommendationResult( dict.fromkeys(ranking[:100], 1)) evaluation = Evaluation(predicted_100, real, repo_size) f05_100.append(evaluation.run(F_score(0.5))) c_10[size] = c_10[size].union( recommendation.ranking[:10]) c_100[size] = c_100[size].union( recommendation.ranking[:100]) # save summary if p_10: p_10_summary[size].append(numpy.mean(p_10)) if f05_100: f05_100_summary[size].append(numpy.mean(f05_100)) with open(log_file + "-%s%.3d" % (option_str, size), 'a') as f: f.write("%.4f \t%.4f\n" % (numpy.mean(p_10), numpy.mean(f05_100))) # back to main flow coverage_10 = {} coverage_100 = {} with open(comment_10, 'a') as f: for size in sizes: coverage_10[size] = len(c_10[size]) / float(repo_size) f.write("%3d\t\t%.4f\t\t%.4f\t\t%.4f\n" % (size, numpy.mean(p_10_summary[size]), numpy.std(p_10_summary[size]), coverage_10[size])) with open(comment_100, 'a') as f: for size in sizes: coverage_100[size] = len(c_100[size]) / float(repo_size) f.write("%3d\t\t%.4f\t\t%.4f\t\t%.4f\n" % (size, numpy.mean(f05_100_summary[size]), numpy.std(f05_100_summary[size]), coverage_100[size])) # plot results summary g = Gnuplot.Gnuplot() g('set style data lines') g('set yrange [0:1.0]') g.xlabel('%s size' % option_str.capitalize()) g.title("Setup: %s (threshold 10)" % cfg.strategy) g.plot(Gnuplot.Data(sorted([[k, numpy.mean(p_10_summary[k]), numpy.std(p_10_summary[k])] for k in p_10_summary.keys( )]), title="Precision"), Gnuplot.Data(sorted([[k, numpy.mean(p_10_summary[k]), numpy.std(p_10_summary[k])] for k in p_10_summary.keys( )]), title="Deviation", with_="yerrorbar lt 2 pt 6"), Gnuplot.Data( sorted( [[k, coverage_10[k]] for k in coverage_10.keys()]), title="Coverage")) g.hardcopy(graph_10, terminal="png") g = Gnuplot.Gnuplot() g('set style data lines') g('set yrange [0:1.0]') g.xlabel('%s size' % option_str.capitalize()) g.title("Setup: %s (threshold 100)" % cfg.strategy) g.plot(Gnuplot.Data(sorted([[k, numpy.mean(f05_100_summary[k]), numpy.std(f05_100_summary[k])] for k in f05_100_summary.keys( )]), title="F05"), Gnuplot.Data(sorted([[k, numpy.mean(f05_100_summary[k]), numpy.std(f05_100_summary[k])] for k in f05_100_summary.keys( )]), title="Deviation", with_="yerrorbar lt 2 pt 6"), Gnuplot.Data( sorted( [[k, coverage_100[k]] for k in coverage_100.keys()]), title="Coverage")) g.hardcopy(graph_100, terminal="png") AppRecommender-0.7.5/apprecommender/experiments/roc-sample.py000077500000000000000000000227151306751311600244210ustar00rootroot00000000000000#!/usr/bin/env python """ recommender suite - recommender experiments suite """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ import os import sys import random import Gnuplot import numpy from apprecommender.config import Config from apprecommender.recommender import Recommender, RecommendationResult from apprecommender.user import User, PopconSystem from apprecommender.evaluation import (Evaluation, Precision, F_score, FPR, Recall) def plot_roc(results, log_file, mean=0): g = Gnuplot.Gnuplot() g('set style data lines') g.xlabel('False Positive Rate') g.ylabel('True Positive Rate') g('set xrange [0:1.0]') g('set yrange [0:1.0]') g.title("Setup: %s" % log_file.split("/")[-1]) g('set label "C %.4f" at 0.68,0.2' % results.coverage()) g('set label "AUC %.4f" at 0.68,0.15' % results.get_auc()) g('set label "P(10) %.2f +- %.2f" at 0.68,0.10' % (numpy.mean(results.precision[10]), numpy.std(results.precision[10]))) g('set label "F05(100) %.2f +- %.2f" at 0.68,0.05' % (numpy.mean(results.f05[100]), numpy.std(results.f05[100]))) if mean == 1: g.plot(Gnuplot.Data(results.get_roc_points(), title="mean ROC"), Gnuplot.Data([[0, 0], [1, 1]], with_="lines lt 7")) g.hardcopy(log_file + "-roc-mean.png", terminal="png") g.hardcopy(log_file + "-roc-mean.ps", terminal="postscript", enhanced=1, color=1) else: g.plot( Gnuplot.Data( results.get_roc_points(), title="ROC", with_="xyerrorbars"), Gnuplot.Data([[0, 0], [1, 1]], with_="lines lt 7")) g.hardcopy(log_file + "-roc.png", terminal="png") g.hardcopy(log_file + "-roc.ps", terminal="postscript", enhanced=1, color=1) def get_label(cfg): label = {} if cfg.strategy in content_based: label["description"] = "strategy-profile" label["values"] = ("%s-profile%.3d" % (cfg.strategy, cfg.profile_size)) elif cfg.strategy in collaborative: label["description"] = "strategy-knn" label["values"] = ("%s-k%.3d" % (cfg.strategy, cfg.k_neighbors)) elif cfg.strategy in hybrid: label["description"] = "strategy-knn-profile" label["values"] = ("%s-k%.3d-profile%.3d" % (cfg.strategy, cfg.k_neighbors, cfg.profile_size)) return label class ExperimentResults: def __init__(self, repo_size): self.repository_size = repo_size self.precision = {} self.recall = {} self.fpr = {} self.f05 = {} self.recommended = {} self.thresholds = [1] + range(10, self.repository_size, 10) for size in self.thresholds: self.precision[size] = [] self.recall[size] = [] self.fpr[size] = [] self.f05[size] = [] self.recommended[size] = set() def add_result(self, ranking, sample): for size in self.thresholds: recommendation = ranking[:size] self.recommended[size] = self.recommended[ size].union(recommendation) predicted = RecommendationResult(dict.fromkeys(recommendation, 1)) real = RecommendationResult(sample) evaluation = Evaluation(predicted, real, self.repository_size) self.precision[size].append(evaluation.run(Precision())) self.recall[size].append(evaluation.run(Recall())) self.f05[size].append(evaluation.run(F_score(0.5))) self.fpr[size].append(evaluation.run(FPR())) def precision_summary(self): return [[size, numpy.mean(self.precision[size])] for size in self.thresholds] def recall_summary(self): return [[size, numpy.mean(self.recall[size])] for size in self.thresholds] def f05_summary(self): return [[size, numpy.mean(self.f05[size])] for size in self.thresholds] def coverage_summary(self): return [[size, self.coverage(size)] for size in self.thresholds] def coverage(self, size=0): if not size: size = self.thresholds[-1] return len(self.recommended[size]) / float(self.repository_size) def precision(self, size): return numpy.mean(self.precision[size]) def get_auc(self): roc_points = self.get_roc_points() x_roc = [p[0] for p in roc_points] y_roc = [p[1] for p in roc_points] x_roc.insert(0, 0) y_roc.insert(0, 0) x_roc.append(1) y_roc.append(1) return numpy.trapz(y=y_roc, x=x_roc) # Average ROC by threshold (= size of recommendation) def get_roc_points(self): points = [] for size in self.recall.keys(): tpr = self.recall[size] fpr = self.fpr[size] points.append( [numpy.mean(fpr), numpy.mean(tpr), numpy.std(fpr), numpy.std(tpr)]) return sorted(points) def run_strategy(cfg, sample_file): rec = Recommender(cfg) repo_size = rec.items_repository.get_doccount() results = ExperimentResults(repo_size) label = get_label(cfg) population_sample = [] sample_str = sample_file.split('/')[-1] with open(sample_file, 'r') as f: for line in f.readlines(): user_id = line.strip('\n') population_sample.append( os.path.join(cfg.popcon_dir, user_id[:2], user_id)) sample_dir = ("results/roc-sample/%s" % sample_str) if not os.path.exists(sample_dir): os.makedirs(sample_dir) log_file = os.path.join(sample_dir, label["values"]) # n iterations per population user for submission_file in population_sample: user = PopconSystem(submission_file) user.filter_pkg_profile(cfg.pkgs_filter) user.maximal_pkg_profile() for n in range(iterations): # Fill sample profile profile_len = len(user.pkg_profile) item_score = {} for pkg in user.pkg_profile: item_score[pkg] = user.item_score[pkg] sample = {} sample_size = int(profile_len * 0.9) for i in range(sample_size): key = random.choice(item_score.keys()) sample[key] = item_score.pop(key) iteration_user = User(item_score) recommendation = rec.get_recommendation(iteration_user, repo_size) if hasattr(recommendation, "ranking"): results.add_result(recommendation.ranking, sample) plot_roc(results, log_file) plot_roc(results, log_file, 1) with open(log_file + "-roc.jpg.comment", 'w') as f: f.write("# %s\n# %s\n\n" % (label["description"], label["values"])) f.write("# roc AUC\n%.4f\n\n" % results.get_auc()) f.write( "# threshold\tmean_fpr\tdev_fpr\t\tmean_tpr\tdev_tpr\t\tcoverage\n") # noqa for size in results.thresholds: f.write("%4d\t\t%.4f\t\t%.4f\t\t%.4f\t\t%.4f\t\t%.4f\n" % (size, numpy.mean(results.fpr[size]), numpy.std(results.fpr[size]), numpy.mean(results.recall[size]), numpy.std(results.recall[size]), numpy.mean(results.coverage(size)))) def run_content(cfg, sample_file): for size in profile_size: cfg.profile_size = size run_strategy(cfg, sample_file) def run_collaborative(cfg, sample_file): for k in neighbors: cfg.k_neighbors = k run_strategy(cfg, sample_file) def run_hybrid(cfg, sample_file): for k in neighbors: cfg.k_neighbors = k for size in profile_size: cfg.profile_size = size run_strategy(cfg, sample_file) if __name__ == '__main__': if len(sys.argv) < 2: print "Usage: sample-roc strategy_str [popcon_sample_path]" exit(1) # iterations = 3 # content_based = ['cb'] # collaborative = ['knn_eset'] # hybrid = ['knnco'] # profile_size = [50,100] # neighbors = [50] iterations = 20 content_based = ['cb', 'cbt', 'cbd', 'cbh', 'cb_eset', 'cbt_eset', 'cbd_eset', 'cbh_eset'] collaborative = ['knn_eset', 'knn', 'knn_plus'] hybrid = ['knnco', 'knnco_eset'] profile_size = [10, 20, 50, 100, 200] neighbors = [200] # neighbors = [3,10,50,100,200] # profile_size = [10,20,40,60,80,100,140,170,200,240] # neighbors = [3,5,10,20,30,50,70,100,150,200] cfg = Config() cfg.strategy = sys.argv[1] sample_file = sys.argv[2] if cfg.strategy in content_based: run_content(cfg, sample_file) if cfg.strategy in collaborative: run_collaborative(cfg, sample_file) if cfg.strategy in hybrid: run_hybrid(cfg, sample_file) AppRecommender-0.7.5/apprecommender/experiments/roc-single.py000077500000000000000000000251211306751311600244130ustar00rootroot00000000000000#!/usr/bin/env python """ recommender suite - recommender experiments suite """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ import os import sys import random import Gnuplot import numpy import shutil from apprecommender.config import Config from apprecommender.recommender import Recommender, RecommendationResult from apprecommender.evaluation import (Evaluation, Precision, Recall, F_score, FPR) from apprecommender.user import User, PopconSystem def write_recall_log(label, n, sample, recommendation, profile_size, repo_size, log_file): # Write recall log output = open(("%s-%.2d" % (log_file, n)), 'w') output.write("# %s-n\n" % label["description"]) output.write("# %s-%.2d\n" % (label["values"], n)) output.write("\n# repository profile sample\n%d %d %d\n" % (repo_size, profile_size, len(sample))) if hasattr(recommendation, "ranking"): notfound = [] ranks = [] for pkg in sample.keys(): if pkg in recommendation.ranking: ranks.append(recommendation.ranking.index(pkg)) else: notfound.append(pkg) for r in sorted(ranks): output.write(str(r) + "\n") if notfound: output.write("# out of recommendation:\n") for pkg in notfound: output.write(pkg + "\n") output.close() def plot_summary(results, log_file): # Plot metrics summary g = Gnuplot.Gnuplot() g('set style data lines') g('set yrange [0:1.0]') g.xlabel('Threshold (recommendation size)') g.title("Setup: %s" % log_file.split("/")[-1]) g.plot(Gnuplot.Data(results.precision_summary(), title="Precision"), Gnuplot.Data(results.recall_summary(), title="Recall"), Gnuplot.Data(results.f05_summary(), title="F05"), Gnuplot.Data(results.coverage_summary(), title="Coverage")) g.hardcopy(log_file + ".png", terminal="png") g.hardcopy(log_file + ".ps", terminal="postscript", enhanced=1, color=1) g('set logscale x') g('replot') g.hardcopy(log_file + "-logscale.png", terminal="png") g.hardcopy(log_file + "-logscale.ps", terminal="postscript", enhanced=1, color=1) def plot_roc(results, log_file): g = Gnuplot.Gnuplot() g('set style data lines') g.xlabel('False Positive Rate') g.ylabel('True Positive Rate') g('set xrange [0:1.0]') g('set yrange [0:1.0]') g.title("Setup: %s" % log_file.split("/")[-1]) g('set label "C %.2f" at 0.8,0.25' % results.coverage()) g('set label "AUC %.2f" at 0.8,0.2' % results.get_auc()) g('set label "P(10) %.2f" at 0.8,0.15' % numpy.mean(results.precision[10])) g('set label "P(20) %.2f" at 0.8,0.10' % numpy.mean(results.precision[20])) g('set label "F05(100) %.2f" at 0.8,0.05' % numpy.mean(results.f05[100])) g.plot(Gnuplot.Data(results.get_roc_points(), title="ROC"), Gnuplot.Data([[0, 0], [1, 1]], with_="lines lt 7")) g.hardcopy(log_file + "-roc.png", terminal="png") g.hardcopy(log_file + "-roc.ps", terminal="postscript", enhanced=1, color=1) def get_label(cfg): label = {} if cfg.strategy in content_based: label["description"] = "strategy-profile" label["values"] = ("%s-profile%.3d" % (cfg.strategy, cfg.profile_size)) elif cfg.strategy in collaborative: label["description"] = "strategy-knn" label["values"] = ("%s-k%.3d" % (cfg.strategy, cfg.k_neighbors)) elif cfg.strategy in hybrid: label["description"] = "strategy-knn-profile" label["values"] = ("%s-k%.3d-profile%.3d" % (cfg.strategy, cfg.k_neighbors, cfg.profile_size)) return label class ExperimentResults: def __init__(self, repo_size): self.repository_size = repo_size self.precision = {} self.recall = {} self.fpr = {} self.f05 = {} self.recommended = {} self.thresholds = [1] + range(10, self.repository_size, 10) for size in self.thresholds: self.precision[size] = [] self.recall[size] = [] self.fpr[size] = [] self.f05[size] = [] self.recommended[size] = set() def add_result(self, ranking, sample): for size in self.thresholds: recommendation = ranking[:size] self.recommended[size] = self.recommended[ size].union(recommendation) predicted = RecommendationResult(dict.fromkeys(recommendation, 1)) real = RecommendationResult(sample) evaluation = Evaluation(predicted, real, self.repository_size) print evaluation.run(Precision()) self.precision[size].append(evaluation.run(Precision())) self.recall[size].append(evaluation.run(Recall())) self.f05[size].append(evaluation.run(F_score(0.5))) self.fpr[size].append(evaluation.run(FPR())) def precision_summary(self): return [[size, numpy.mean(self.precision[size])] for size in self.thresholds] def recall_summary(self): return [[size, numpy.mean(self.recall[size])] for size in self.thresholds] def f05_summary(self): return [[size, numpy.mean(self.f05[size])] for size in self.thresholds] def coverage_summary(self): return [[size, self.coverage(size)] for size in self.thresholds] def coverage(self, size=0): if not size: size = self.thresholds[-1] return len(self.recommended[size]) / float(self.repository_size) def precision(self, size): return numpy.mean(self.precision[size]) def get_auc(self): roc_points = self.get_roc_points() x_roc = [p[0] for p in roc_points] y_roc = [p[1] for p in roc_points] x_roc.insert(0, 0) y_roc.insert(0, 0) x_roc.append(1) y_roc.append(1) return numpy.trapz(y=y_roc, x=x_roc) # Average ROC by threshold (= size of recommendation) def get_roc_points(self): points = [] for size in self.recall.keys(): tpr = self.recall[size] fpr = self.fpr[size] points.append([sum(fpr) / len(fpr), sum(tpr) / len(tpr)]) return sorted(points) def run_strategy(cfg, user): rec = Recommender(cfg) repo_size = rec.items_repository.get_doccount() results = ExperimentResults(repo_size) label = get_label(cfg) user_dir = ("results/roc-suite/%s/%s" % (user.user_id[:8], cfg.strategy)) if not os.path.exists(user_dir): os.makedirs(user_dir) log_file = os.path.join(user_dir, label["values"]) for n in range(iterations): # Fill sample profile profile_len = len(user.pkg_profile) item_score = {} for pkg in user.pkg_profile: item_score[pkg] = user.item_score[pkg] sample = {} sample_size = int(profile_len * 0.9) for i in range(sample_size): key = random.choice(item_score.keys()) sample[key] = item_score.pop(key) iteration_user = User(item_score) recommendation = rec.get_recommendation(iteration_user, repo_size) write_recall_log( label, n, sample, recommendation, profile_len, repo_size, log_file) if hasattr(recommendation, "ranking"): results.add_result(recommendation.ranking, sample) with open(log_file + "-roc.jpg.comment", 'w') as f: f.write("# %s\n# %s\n\n" % (label["description"], label["values"])) f.write("# roc AUC\n%.4f\n\n" % results.get_auc()) f.write("# threshold\tprecision\trecall\t\tf05\t\tcoverage\n") for size in results.thresholds: f.write("%4d\t\t%.4f\t\t%.4f\t\t%.4f\t\t%.4f\n" % (size, numpy.mean(results.precision[size]), numpy.mean(results.recall[size]), numpy.mean(results.f05[size]), numpy.mean(results.coverage(size)))) shutil.copy(log_file + "-roc.jpg.comment", log_file + ".jpg.comment") shutil.copy(log_file + "-roc.jpg.comment", log_file + "-logscale.jpg.comment") plot_roc(results, log_file) plot_summary(results, log_file) def run_content(user, cfg): for size in profile_size: cfg.profile_size = size run_strategy(cfg, user) def run_collaborative(user, cfg): for k in neighbors: cfg.k_neighbors = k run_strategy(cfg, user) def run_hybrid(user, cfg): for k in neighbors: cfg.k_neighbors = k for size in profile_size: cfg.profile_size = size run_strategy(cfg, user) if __name__ == '__main__': if len(sys.argv) < 2: print "Usage: roc-suite strategy_str [popcon_submission_path]" exit(1) # iterations = 3 # content_based = ['cb'] # collaborative = ['knn_eset'] # hybrid = ['knnco'] # profile_size = [50,100] # neighbors = [50] iterations = 20 content_based = ['cb', 'cbt', 'cbd', 'cbh', 'cb_eset', 'cbt_eset', 'cbd_eset', 'cbh_eset'] collaborative = ['knn_eset', 'knn', 'knn_plus'] hybrid = ['knnco', 'knnco_eset'] profile_size = [10, 20, 40, 60, 80, 100, 140, 170, 200, 240] neighbors = [3, 5, 10, 20, 30, 50, 70, 100, 150, 200] cfg = Config() cfg.strategy = sys.argv[1] # user = # PopconSystem("/root/.app-recommender/popcon-entries/4a/4a67a295ec14826db2aa1d90be2f1623") user = PopconSystem( "/root/.app-recommender/popcon-entries/8b/8b44fcdbcf676e711a153d5db09979d7") # noqa # user = PopconSystem(sys.argv[1]) user.filter_pkg_profile(cfg.pkgs_filter) user.maximal_pkg_profile() if cfg.strategy in content_based: run_content(user, cfg) if cfg.strategy in collaborative: run_collaborative(user, cfg) if cfg.strategy in hybrid: run_hybrid(user, cfg) AppRecommender-0.7.5/apprecommender/experiments/sample-popcon-arch.py000077500000000000000000000027121306751311600260420ustar00rootroot00000000000000#! /usr/bin/env python """ sample-popcon-arch - extract a sample of a specific arch """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ import sys from apprecommender.user import RandomPopcon if __name__ == '__main__': try: size = int(sys.argv[1]) arch = sys.argv[2] popcon_dir = sys.argv[3] pkgs_filter = sys.argv[4] except: print "Usage: sample-popcon-arch size arch popcon_dir pkgs_filter" exit(1) sample_file = ("results/misc-popcon/sample-%s-%d" % (arch, size)) with open(sample_file, 'w') as f: for n in range(1, size + 1): user = RandomPopcon(popcon_dir, arch, pkgs_filter) f.write(user.user_id + '\n') print "sample", n AppRecommender-0.7.5/apprecommender/experiments/sample-popcon.py000077500000000000000000000040561306751311600251320ustar00rootroot00000000000000#! /usr/bin/env python """ sample-popcon - extract a sample from popcon population """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ import xapian import os import sys def extract_sample(size, popcon, min_profile, max_profile, output): sample = [] for n in range(1, popcon.get_doccount() + 1): user = popcon.get_document(n) pkgs_profile = [ t.term for t in user.termlist() if t.term.startswith("XP")] print len(pkgs_profile) if(len(pkgs_profile) > min_profile and len(pkgs_profile) <= max_profile): sample.append(user.get_data()) print n, len(sample) if len(sample) == size: break with open(("%s-%d-%d" % (output, min_profile, max_profile)), 'w') as f: for s in sample: f.write(s + '\n') if __name__ == '__main__': popcon = xapian.Database( os.path.expanduser("~/.app-recommender/popcon_desktopapps")) print ("Popcon repository size: %d" % popcon.get_doccount()) try: min_profile = int(sys.argv[1]) max_profile = int(sys.argv[2]) size = int(sys.argv[3]) except: print "Usage: sample-popcon min_profile max_profile sample_size" exit(1) sample_file = "results/misc-popcon/sample" extract_sample(size, popcon, min_profile, max_profile, sample_file) AppRecommender-0.7.5/apprecommender/generate_doc.sh000077500000000000000000000022461306751311600224120ustar00rootroot00000000000000#!/bin/env bash # # generate_doc.sh - shell script to generate documentation using doxygen. # # Copyright (C) 2010 Tassia Camoes # # 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 3 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, see . # Get project version from git repository TAG=$(git describe --tags --abbrev=0) echo "Generating documentation for git tag $TAG" sed -i "s/^PROJECT_NUMBER.*$/PROJECT_NUMBER\t\t= $TAG/" ../doc/doxy_config rm -Rf ../doc/html ../doc/doxygen-1.7.3 ../doc/doxy_config scp -r html/ tassia@eclipse.ime.usp.br: echo "---> Remember to place doc in the right location on server side." mv html/ ../doc/ AppRecommender-0.7.5/apprecommender/initialize.py000066400000000000000000000113431306751311600221450ustar00rootroot00000000000000#!/usr/bin/env python import commands import data import datetime import os import shutil import xapian from apprecommender.config import Config from apprecommender.decider import PkgInitDecider class Initialize: AXI_SAMPLES = ['sample', 'filter'] DEFAULT_AXI_PATH = "/var/lib/apt-xapian-index/index" EXCLUDED_TAGS = ['culture::', 'devel::lang', 'hardware::', 'implemented-in::', 'interface::', 'iso15924::', 'made-of::', 'network::', 'protocol::', 'role::', 'scope::', 'secteam::', 'special::', 'uitoolkit::', 'x11::', 'TODO'] def __init__(self): self.config = Config() self.pkg_init_decider = PkgInitDecider() def get_tags(self): command = "cat /var/lib/debtags/vocabulary" \ "| grep 'Tag:'" \ "| egrep -v '%s'" \ "| awk '{print $2}'" % '|'.join(Initialize.EXCLUDED_TAGS) tags = commands.getoutput(command).splitlines() return tags def get_axipkgs(self, axi_tag='XP', axi_path=DEFAULT_AXI_PATH): axi = xapian.Database(axi_path) all_terms = set() for n in range(1, axi.get_lastdocid()): doc = 0 try: doc = axi.get_document(n) except: pass if doc: xp_terms = None for t in doc.termlist(): if t.term.startswith(axi_tag): xp_terms = t.term break if xp_terms: pkg_name = xp_terms.lstrip(axi_tag) if pkg_name.startswith('M'): pkg_name = pkg_name.lstrip('M') if self.pkg_init_decider(pkg_name): all_terms.add(pkg_name) return all_terms def indexer_axi(self, axi_sample, filters_path, terms=[]): axi_path = Initialize.DEFAULT_AXI_PATH axi = xapian.Database(axi_path) base_dir = self.config.base_dir begin_time = datetime.datetime.now() # axi sample based on the pkgs sample provided by command line if axi_sample is 'sample': with open(filters_path) as valid: pkgs_list = [line.strip() for line in valid] filter_str = 'axi_' + filters_path.split('/')[-1] print"\nIndexing packages on xapian" index = data.SampleAptXapianIndex(pkgs_list, axi, os.path.join(base_dir, filter_str)) print "Axi size: %d" % axi.get_doccount() print "Packages list length: %d" % len(pkgs_list) print "Sample index size: %d" % index.get_doccount() # axi filtered by terms provided by command line if axi_sample is "filter": terms_str = "_".join([t.split("::")[-1] for t in terms]) index = data.FilteredXapianIndex(terms, axi, os.path.join(base_dir, "axi_" + terms_str)) print "Axi size: %d" % axi.get_doccount() print "Terms filter: %s" % terms print "Filtered index size: %d" % index.get_doccount() end_time = datetime.datetime.now() print "Indexing completed at %s" % end_time delta = end_time - begin_time print "Time elapsed: %d seconds." % delta.seconds def prepare_data(self): try: if os.path.exists(self.config.base_dir): if os.path.exists(self.config.user_data_dir): shutil.rmtree(self.config.user_data_dir) if os.path.exists(self.config.axi_desktopapps): shutil.rmtree(self.config.axi_desktopapps) if os.path.exists(self.config.filters_dir): shutil.rmtree(self.config.filters_dir) os.makedirs(self.config.filters_dir) except OSError: raise tags = self.get_tags() tags_path = "{}/debtags".format(self.config.filters_dir) self.save_list(tags, tags_path) pkgs = self.get_axipkgs() pkgs_path = "{}/desktopapps".format(self.config.filters_dir) self.save_list(pkgs, pkgs_path) self.indexer_axi('sample', pkgs_path) def get_role_program_pkgs(self): command = "cat /var/lib/debtags/package-tags | " \ "grep 'role::program' | " \ "awk -F: '{ print $1}'" pkgs = commands.getoutput(command).splitlines() return pkgs def save_list(self, elements, path): with open(path, 'w') as text: text.write('\n'.join(elements) + '\n') AppRecommender-0.7.5/apprecommender/main/000077500000000000000000000000001306751311600203545ustar00rootroot00000000000000AppRecommender-0.7.5/apprecommender/main/__init__.py000066400000000000000000000000001306751311600224530ustar00rootroot00000000000000AppRecommender-0.7.5/apprecommender/main/app_recommender.py000066400000000000000000000023061306751311600240670ustar00rootroot00000000000000#!/usr/bin/env python import logging import datetime from apprecommender.recommender import Recommender from apprecommender.user import LocalSystem from apprecommender.config import Config class AppRecommender: def __init__(self): self.recommender = Recommender() self.config = Config() def make_recommendation(self, reference_pkgs=None, print_recommendation=True): begin_time = datetime.datetime.now() logging.info("Computation started at %s" % begin_time) if not reference_pkgs: reference_pkgs = [] user = LocalSystem(reference_pkgs) recommendation_size = Config().num_recommendations user_recommendation = (self.recommender.get_recommendation( user, recommendation_size)) logging.info("Recommending applications for user %s" % user.user_id) if print_recommendation: print(user_recommendation) end_time = datetime.datetime.now() logging.info("Computation completed at %s" % end_time) delta = end_time - begin_time logging.info("Time elapsed: %d seconds." % delta.seconds) return user_recommendation AppRecommender-0.7.5/apprecommender/main/apt_run.py000066400000000000000000000065221306751311600224030ustar00rootroot00000000000000#!/usr/bin/env python import argparse import os import shutil import re from apprecommender.config import Config from apprecommender.main.app_recommender import AppRecommender from apprecommender.user import LocalSystem class AptRun: def __init__(self): apt_folder = os.path.join(Config().base_dir, "apt_run/") self.set_folder(apt_folder) def set_folder(self, folder_path): folder_path = os.path.expanduser(folder_path) folder_path = os.path.abspath(folder_path) if folder_path[-1] != '/': folder_path += '/' self.apt_folder = folder_path self.installed_pkgs_file = self.apt_folder + "installed_pkgs.txt" def enable(self): if not self.is_enable(): os.makedirs(self.apt_folder) return True return False def disable(self): if self.is_enable(): shutil.rmtree(self.apt_folder) return True return False def is_enable(self): return os.path.exists(self.apt_folder) def get_user_pkgs(self): user = LocalSystem() user_pkgs = user.pkg_profile return user_pkgs def pre_install_pkgs(self): if self.is_enable(): user_pkgs = self.get_user_pkgs() with open(self.installed_pkgs_file, 'w') as text: text.write("\n".join(user_pkgs)) def post_invoke(self): if not self.is_enable(): return [] with open(self.installed_pkgs_file, 'r') as text: pre_installed_pkgs = set([line.strip() for line in text]) pkgs = self.get_user_pkgs() pos_installed_pkgs = set([pkg.strip() for pkg in pkgs]) installed_pkgs = list(pos_installed_pkgs - pre_installed_pkgs) return installed_pkgs def get_recommendation_pkgs(self, installed_pkgs): app_recommender = AppRecommender() app_recommender.recommender.set_strategy('cbpkg') rec = app_recommender.make_recommendation( reference_pkgs=installed_pkgs, print_recommendation=False) pkgs_regex = re.compile(r'^\d:\s([^\s]+)', re.MULTILINE) pkgs = pkgs_regex.findall(rec.__str__()) return pkgs def make_recommendations(self, installed_pkgs): if len(installed_pkgs) > 0: pkgs = self.get_recommendation_pkgs(installed_pkgs) if len(pkgs) > 0: print '\nApprecommeder: The following packages are' \ ' interesting' for pkg in pkgs: print ' - {}'.format(pkg) def get_args(): aptrun_description = 'Integration of AppRecommender with apt' parser = argparse.ArgumentParser(description=aptrun_description) parser.add_argument( '--pre-install-pkgs', help='Indentify installed packages before install the new packages', action='store_true') parser.add_argument( '--post-invoke', help='Indentify the installed packages and makes recommendation', action='store_true') args = vars(parser.parse_args()) return args def main(): args = get_args() apt_run = AptRun() if args['pre_install_pkgs']: apt_run.pre_install_pkgs() elif args['post_invoke']: installed_pkgs = apt_run.post_invoke() apt_run.make_recommendations(installed_pkgs) if __name__ == '__main__': main() AppRecommender-0.7.5/apprecommender/main/cli.py000066400000000000000000000100641306751311600214760ustar00rootroot00000000000000#!/usr/bin/env python import xapian from apprecommender.main.app_recommender import AppRecommender from apprecommender.config import Config from apprecommender.initialize import Initialize from apprecommender.strategy import (MachineLearning, MachineLearningBVA, MachineLearningBOW, MachineLearningTrainError) from apprecommender.main import collect_user_data from apprecommender.main import show_classifications from apprecommender.main.apt_run import AptRun from apprecommender.main.options import get_parser SUCCESS = 0 ERROR_INIT = 1 ERROR_TRAIN = 2 PERMISSION_DENIED = 3 ERROR_INIT_TRAIN = 4 def parse_options(args, config): if args['strategy']: config.strategy = args['strategy'] if args['debug']: config.debug = 1 if args['verbose']: config.verbose = 1 if args['profile_size']: config.profile_size = args['profile_size'] if args['because']: config.because = True if args['num_recommendations']: config.num_recommendations = args['num_recommendations'] def run_apprecommender(reference_pkgs): try: app_recommender = AppRecommender() app_recommender.make_recommendation(reference_pkgs) return SUCCESS except xapian.DatabaseOpeningError: return ERROR_INIT except IOError: if "ml" in Config().strategy: return ERROR_TRAIN except OSError: return PERMISSION_DENIED def run_initialize(): print "Initializing AppRecommender" initialize = Initialize() try: initialize.prepare_data() except OSError: return PERMISSION_DENIED return SUCCESS def run_train(): print "Training machine learning" try: MachineLearning.train(MachineLearningBVA) MachineLearning.train(MachineLearningBOW) except IOError: return PERMISSION_DENIED except MachineLearningTrainError: return ERROR_INIT_TRAIN return SUCCESS def run(args): if args['update']: init_result = run_initialize() if init_result != SUCCESS: return init_result train_result = run_train() if train_result != SUCCESS: return train_result return SUCCESS elif args['init']: return run_initialize() elif args['train']: return run_train() elif args['contribute']: collect_user_data.main() elif args['show_classifications']: show_classifications.main() elif args['enable_apt']: try: apt_run = AptRun() if apt_run.enable(): print 'AppRecommender now makes recommendations when you ' \ ' install new packages with apt' else: print 'This is already enabled' return SUCCESS except OSError: return PERMISSION_DENIED elif args['disable_apt']: try: apt_run = AptRun() if apt_run.disable(): print 'AppRecommender now dont makes recommendations when' \ 'you install new packages with apt' else: print 'This is already disabled' return SUCCESS except OSError: return PERMISSION_DENIED else: config = Config() parse_options(args, config) reference_pkgs = args['packages'] return run_apprecommender(reference_pkgs) def main(): parser = get_parser() args = vars(parser.parse_args()) result = run(args) if result is ERROR_INIT: print "\n" print "Please, Initialize AppRecommender" print "Run: apprec.py --init" elif result is ERROR_TRAIN: print "\n" print "Please, run Machine Learning Training" print "Run: apprec.py --train" elif result is PERMISSION_DENIED: print "Please, run this command as sudo" elif result is ERROR_INIT_TRAIN: print 'Error: You need install more packages to use machine' \ ' learning recommendations' if __name__ == '__main__': main() AppRecommender-0.7.5/apprecommender/main/collect_user_data.py000066400000000000000000000303141306751311600244030ustar00rootroot00000000000000#!/usr/bin/env python import binascii import commands import datetime as dt import logging import os import re import subprocess import tarfile import time import xapian from apprecommender.apt_cache import AptCache from apprecommender.config import Config from apprecommender.data import get_user_installed_pkgs from apprecommender.data_classification import get_alternative_pkg from apprecommender.main.app_recommender import AppRecommender from apprecommender.main.ml_cross_validation import ml_cross_validation from apprecommender.ml.data import MachineLearningData from apprecommender.ml.pkg_time import PkgTime from apprecommender.utils import print_progress_bar LOG_PATH = os.path.expanduser('~/app_recommender_log') SUFIX = dt.datetime.now().strftime('%Y%m%d%H%M') LOG_PATH += SUFIX ALL_INSTALLED_PKGS = LOG_PATH + '/all_pkgs.txt' MANUAL_INSTALLED_PKGS_PATH = LOG_PATH + '/manual_installed_pkgs.txt' PKGS_TIME_PATH = LOG_PATH + '/pkgs_time.txt' HISTORY = LOG_PATH + '/user_history.txt' PKGS_BINARY = LOG_PATH + '/pkgs_binary.txt' RECOMMENDATION_PATH = LOG_PATH + '/{0}_recommendation.txt' USER_PREFERENCES = LOG_PATH + '/user_preferences.txt' POPCON_SUBMISSION = LOG_PATH + '/popcon-submission' PC_INFORMATIONS = LOG_PATH + '/pc_informations.txt' RECOMMENDATIONS_TIME = LOG_PATH + '/recommendations_time.txt' PKGS_DEPENDENCIES = [] RE_MATCH = re.compile(r'^\d:\s([^\s]+)', re.MULTILINE) def create_log_folder(): print "Creating log folder" if not os.path.exists(LOG_PATH): os.mkdir(LOG_PATH, 0755) def create_file(file_path): if not os.path.exists(file_path): with open(file_path, 'a'): os.utime(file_path, None) return True return False def delete_file(file_path): if os.path.exists(file_path): os.remove(file_path) def save_list(list_to_save, file_path): delete_file(file_path) create_file(file_path) with open(file_path, 'w') as text: for element in list_to_save: text.write(str(element) + '\n') def rename_file(original_name, new_name): os.rename(original_name, new_name) def get_submission_id(submission_header): fields = submission_header.split(' ') return fields[2][3:] def create_popularity_contest_file(): if os.path.exists('popularity-contest.conf'): return host_id = binascii.hexlify(os.urandom(16)) with open('popularity-contest.conf', 'w') as text: text.write('MY_HOSTID="{0}"\n'.format(host_id)) text.write('PARTICIPATE="no"\n') text.write('USEHTTP="no"\n') text.write('DAY="4"\n') def collect_popcon_submission(): print "Collecting popularity-contest submission" create_popularity_contest_file() popcon = subprocess.Popen('./popularity-contest', shell=False, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) popcon_output = popcon.stdout.read() popcon_parse = popcon_output.splitlines() submission_id = get_submission_id(popcon_parse[0]) submission = [line for line in popcon_parse] save_list(submission, POPCON_SUBMISSION) file_name = LOG_PATH + "/" + submission_id + ".txt" rename_file(POPCON_SUBMISSION, file_name) def collect_manual_installed_pkgs(): print "Collecting manual installed pkgs" if create_file(MANUAL_INSTALLED_PKGS_PATH): packages = commands.getoutput('apt-mark showmanual') packages = [pkg for pkg in packages.splitlines()] save_list(packages, MANUAL_INSTALLED_PKGS_PATH) def collect_all_user_pkgs(): print "Collecting all user packages" if create_file(ALL_INSTALLED_PKGS): packages = get_user_installed_pkgs() save_list(packages, ALL_INSTALLED_PKGS) def collect_pkgs_time(): print "Collecting packages time" pkg_time = PkgTime() if create_file(PKGS_TIME_PATH): manual_pkgs = [] with open(MANUAL_INSTALLED_PKGS_PATH, 'r') as text: manual_pkgs = [line.strip() for line in text] pkgs_time = pkg_time.get_packages_time(manual_pkgs) pkg_time.save_package_time(pkgs_time, PKGS_TIME_PATH) def get_pkg_binary(pkg): stat_command = "which {0}".format(pkg) pkg_bin = commands.getoutput(stat_command.format(pkg)) if pkg_bin: return pkg return get_alternative_pkg(pkg) def get_pkgs_of_recommendation(strategy): app_recommender = AppRecommender() app_recommender.recommender.set_strategy(strategy) rec = app_recommender.make_recommendation(print_recommendation=False) pkgs = RE_MATCH.findall(rec.__str__()) return pkgs def collect_user_preferences(): Config().num_recommendations = 6 strategies = ['cb', 'cb_eset', 'cbtm', 'mlbva', 'mlbva_eset', 'mlbow', 'mlbow_eset'] recommendations = {} recommendations_time = [] print "Preparing recommendations..." len_strategies = len(strategies) for index, strategy in enumerate(strategies): first_time = int(round(time.time() * 1000)) recommendations[strategy] = get_pkgs_of_recommendation(strategy) last_time = int(round(time.time() * 1000)) recommendations_time.append("{0}: {1}".format(strategy, last_time - first_time)) print_progress_bar(index + 1, len_strategies) all_recommendations = set(sum(recommendations.values(), [])) all_recommendations = sorted(list(all_recommendations)) index = 0 user_preferences = {} all_rec_len = len(all_recommendations) message = "\n\nPackage [{0}/{1}] - {2} \n" message += "Description: {3}\n\n" message += "Rank a package recommendation with 1-4\n" message += "1 - Bad\n" message += "2 - Redundant\n" message += "3 - Useful\n" message += "4 - Useful Surprise\n\n" message += "exit - Cancel collect data\n\n" message += "Rank: " message_error = "\nPlease use digits 1-4 to rank a package: " apt_cache = AptCache() for i in range(len(all_recommendations)): pkg = all_recommendations[i] pkg_description = apt_cache[pkg].versions[0].description rank = -1 raw_message = message.format((index + 1), all_rec_len, pkg, pkg_description) clear_prints() print "\n\nCollecting user preferences" if i > 0: print "\n" for j in range(i): prev_pkg = all_recommendations[j] print( "[{0}/{1}] {2}, rank: {3}".format(j + 1, all_rec_len, prev_pkg, user_preferences[prev_pkg])) while rank < 1 or rank > 4: try: rank = raw_input(raw_message) if rank == 'exit': break rank = int(rank) except: rank = -2 raw_message = message_error if rank == 'exit': exit(2) user_preferences[pkg] = rank index += 1 preferences_list = ["{0}:{1}".format(package, user_preferences[package]) for package in all_recommendations] for rec_key, rec_value in recommendations.iteritems(): save_list(rec_value, RECOMMENDATION_PATH.format(rec_key)) save_list(preferences_list, USER_PREFERENCES) save_list(recommendations_time, RECOMMENDATIONS_TIME) def get_uninstalled_dependencies(): user_pkgs = [] unistalled_pkgs = [] user_pkgs = get_user_installed_pkgs() for pkg in PKGS_DEPENDENCIES: if pkg not in user_pkgs: unistalled_pkgs.append(pkg) return unistalled_pkgs def check_dependencies(): unistalled_pkgs = get_uninstalled_dependencies() unistalled_dependencies = '' if len(unistalled_pkgs) > 0: unistalled_dependencies = ''.join(str(pkg) + ' ' for pkg in unistalled_pkgs) return unistalled_dependencies def collect_pc_informations(): print "Collecting PC informations" informations = [] linux_kernel_version = commands.getoutput('uname -s -r') distribution_version = commands.getoutput('lsb_release -a') distribution_version = distribution_version.splitlines() processor = commands.getoutput("cat /proc/cpuinfo | grep 'model name'") processor = processor.splitlines()[0].split(':')[1].strip() processor = "Processor: {0}".format(processor) informations.append(linux_kernel_version) informations.extend(distribution_version) informations.append(processor) save_list(informations, PC_INFORMATIONS) def collect_user_data(): collect_pc_informations() collect_all_user_pkgs() collect_manual_installed_pkgs() collect_pkgs_time() collect_popcon_submission() def initial_prints(): experiment_agree = """ Participate in this package survey? This survey has the objective to collect user feedback to allow the comparison between some new strategies for AppRecommender. This survey will them present a series of recommended packages that can be evaluates as follows: Bad: A package that you would not install on your system. Redundant: You already have a package that provides the same functionality as the one being recommended. Useful: A package that you may install on you system. Useful Surprise: A package that you would install on your system, but the recommendatio also surprised you in a positive way. This survey will also collect the result of some cross validation metrics generated for the AppRecommender strategies that use machine learning. Therefore, this survey will collect the following data: * A list of your evaluations for the recommended packages. * The result of the cross validation metrics for AppRecommender machine learning strategies. * The time in seconds that it took for each strategies to genarate its recommendations Once this process is over, a tar.gz file will be generated on your HOME dir. After that just send this file over to: lucas.moura128@gmail.com lucianopcbr@gmail.com terceiro@debian.org """ print experiment_agree def user_accept_collect_data(): accept_message = "\nDo you want to participate on this survey ? [y, N]: " accept_input = raw_input(accept_message) return accept_input.lower() == 'y' def clear_prints(): print '\n' * 80 os.system('clear') def train_machine_learning(): try: print "Training machine learning" os.system("cp {} {}".format( MachineLearningData.PKGS_CLASSIFICATIONS, LOG_PATH)) except xapian.DatabaseOpeningError: print "\n\nPlease check if you prepared the AppRecommender data" print "Try to run the following commands:" print " $ cd .." print " $ sudo apprec --init\n" exit(1) except IOError: print "\n\nPlease run the train command before executing this script:" print " $ sudo apprec --train\n" def run_cross_validation(): print "Collecting cross validations" strategies = ['mlbva', 'mlbva_eset', 'mlbow', 'mlbow_eset'] len_strategies = len(strategies) for index, strategy in enumerate(strategies): ml_cross_validation(LOG_PATH, strategy) print_progress_bar(index + 1, len_strategies) def make_tarfile(output_filename, source_dir): with tarfile.open(output_filename, "w:gz") as tar: tar.add(source_dir, arcname=os.path.basename(source_dir)) def main(): logging.getLogger().disabled = True initial_prints() if not user_accept_collect_data(): exit(1) create_log_folder() train_machine_learning() run_cross_validation() collect_user_preferences() make_tarfile(LOG_PATH + '.tar.gz', LOG_PATH) subprocess.call(['rm', '-rf', LOG_PATH]) print "\n\nFinished: All files and recommendations were collected" print "Collect data folder: {0}.tar.gz\n".format(LOG_PATH) print "Please, send this file to either one of these emails:\n" print "lucas.moura128@gmail.com, lucianopcbr@gmail.com, terceiro@debian.org" # noqa if __name__ == '__main__': main() AppRecommender-0.7.5/apprecommender/main/ml_cross_validation.py000066400000000000000000000072341306751311600247670ustar00rootroot00000000000000#!/usr/bin/python import datetime as dt import logging import os import pickle import sys import getopt from apprecommender.ml.cross_validation import (CrossValidationBVA, CrossValidationBOW) from apprecommender.evaluation import (SimpleAccuracy, Precision, Recall, FPR, F_score) from apprecommender.ml.data import MachineLearningData from apprecommender.ml.bag_of_words import BagOfWords from apprecommender.config import Config BASE_DIR = Config().base_dir CROSS_VALIDATION_FOLDER = BASE_DIR + '/cross_validation_data/' def get_strategy(ml_strategy_str, pkg_data, partition_size, rounds, metrics_list, labels): if ml_strategy_str == 'bow': return CrossValidationBOW( pkg_data, partition_size, rounds, metrics_list, labels) else: return CrossValidationBVA( pkg_data, partition_size, rounds, metrics_list, labels) def get_pkg_data(ml_strategy_str, ml_data, labels): if ml_strategy_str == 'bow': path = BagOfWords.BAG_OF_WORDS_PKGS_CLASSIFICATION else: path = MachineLearningData.PKGS_CLASSIFICATIONS with open(path, 'ra') as pkgs_classification: return pickle.load(pkgs_classification) def ml_cross_validation(folder_path, ml_strategy_str): logger = logging.getLogger('') logger.setLevel(logging.CRITICAL) if folder_path[-1] != '/': folder_path += '/' if not os.path.exists(folder_path): os.mkdir(folder_path) partition_size = 0.8 rounds = 5 metrics_list = [SimpleAccuracy(), Precision(), Recall(), FPR(), F_score(1)] labels = ['RU', 'U', 'NU'] ml_data = MachineLearningData() pkg_data = get_pkg_data(ml_strategy_str, ml_data, labels) ml_cross_validation = get_strategy( ml_strategy_str, pkg_data, partition_size, rounds, metrics_list, labels) cross_validaton_file = 'cross_validation_result_{}_{}_{}_{}.txt'.format( ml_strategy_str, rounds, partition_size, dt.datetime.now().strftime('%Y%m%d%H%M')) ml_cross_validation.run(None) cross_validation_file_path = folder_path + cross_validaton_file with open(cross_validation_file_path, 'w') as result: result.write(ml_cross_validation.__str__()) return ml_cross_validation def print_help(): print "\n" print "Usage: get_axipkgs" print " -h, --help \t\t Show this help" print " -s, --strategy \t Set machine_learning of one strategy" \ ", exemple: bva, bow" print "\n" print " [ strategy options ] " print " bva - run cross_validation from mlbva, Binary Vector" \ " Approach" print " bow - run cross_validation from mlbow, Bag of Words" if __name__ == '__main__': short_options = "hdvo:s:" long_options = ["help", "strategy"] valid_strategies = ['bva', 'bow'] ml_strategy_str = None try: opts, args = getopt.getopt(sys.argv[1:], short_options, long_options) except getopt.GetoptError as error: logging.error("Bad syntax: %s" % str(error)) print_help() sys.exit() for option, param in opts: if option in ("-h", "--help"): print_help() sys.exit() elif option in ("-s", "--strategy"): ml_strategy_str = param else: print_help() assert False, "unhandled option" if ml_strategy_str in valid_strategies: print ml_cross_validation(CROSS_VALIDATION_FOLDER, ml_strategy_str) print("Cross validation results saved on: %s" % (CROSS_VALIDATION_FOLDER)) else: print_help() AppRecommender-0.7.5/apprecommender/main/options.py000066400000000000000000000043071306751311600224250ustar00rootroot00000000000000import argparse def get_parser(): apprec_description = 'Package recommender system for Debian (and derived) \ distros' parser = argparse.ArgumentParser(description=apprec_description) parser.add_argument( '-s', '--strategy', help='select strategy to run apprecommender (default: cb)', type=str) parser.add_argument( '-d', '--debug', help='run apprecommender on debug mode', type=int) parser.add_argument( '-v', '--verbose', help='run apprecommender on verbose mode', type=int) parser.add_argument( '-z', '--profile-size', help='set the profile size of an user on apprecommender', type=int) parser.add_argument( '-i', '--init', help='initialize apprecommender database', action='store_true') parser.add_argument( '-t', '--train', help='train machine learning algorithms', action='store_true') parser.add_argument( '-b', '--because', help="display which user's packages generated a recommendation", action='store_true') parser.add_argument( '-n', '--num-recommendations', help='set the number of packages that will be recommended', type=int) parser.add_argument( '-c', '--contribute', help='classify recommendations and help apprecommender to improve', action='store_true') parser.add_argument( '-p', '--packages', help="Add reference package for strategy 'cbpkg'", type=str, nargs='+', default=[]) parser.add_argument( '--show-classifications', help='Show the user classifications for machine learning algorithms', action='store_true') parser.add_argument( '-e', '--enable-apt', help='Enable recommendations when install a package with apt', action='store_true') parser.add_argument( '-r', '--disable-apt', help='Disable recommendations when install a package with apt', action='store_true') parser.add_argument( '--update', help='Run both init and train commands', action='store_true') return parser AppRecommender-0.7.5/apprecommender/main/show_classifications.py000066400000000000000000000022321306751311600251430ustar00rootroot00000000000000#!/usr/bin/python import os import pickle from apprecommender.ml.pkg_time import PkgTime from apprecommender.config import Config def main(): path = Config().user_data_dir + 'pkgs_classifications.txt' if not os.path.exists(path): print 'Could not find file pkgs_classification' print 'Have you run apprec --train ?' exit(-1) pkg_time = PkgTime() pkgs_times = pkg_time.get_package_data() with open(path, 'ra') as data: pkg_classification = pickle.load(data) classifications = {'RU': [], 'U': [], 'NU': []} for pkg, values in pkg_classification.iteritems(): classifications[values[-1]].append(pkg) for classification, pkgs in classifications.iteritems(): print '\n' print 'Classification: {}'.format(classification) print '\n' for pkg in sorted(pkgs): pkg_text = '{} \t' if len(pkg) < 15: pkg_text += '\t' if len(pkg) < 7: pkg_text += '\t' pkg_text += ' {}' print pkg_text.format(pkg, pkgs_times[pkg][1].strip()) print '\nNum pkgs: {}'.format(len(pkg_classification)) AppRecommender-0.7.5/apprecommender/ml/000077500000000000000000000000001306751311600200405ustar00rootroot00000000000000AppRecommender-0.7.5/apprecommender/ml/__init__.py000066400000000000000000000000001306751311600221370ustar00rootroot00000000000000AppRecommender-0.7.5/apprecommender/ml/bag_of_words.py000066400000000000000000000121771306751311600230550ustar00rootroot00000000000000import os import pickle from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.naive_bayes import GaussianNB from apprecommender.apt_cache import AptCache from apprecommender.config import Config from apprecommender.ml.data import MachineLearningData class BagOfWords(): USER_DATA_DIR = Config().user_data_dir BAG_OF_WORDS_DIR = USER_DATA_DIR + 'bag_of_words/' BAG_OF_WORDS_MODEL = BAG_OF_WORDS_DIR + 'bag_of_words_model.pickle' BAG_OF_WORDS_TERMS = BAG_OF_WORDS_DIR + 'bag_of_words_terms.pickle' BAG_OF_WORDS_DEBTAGS = BAG_OF_WORDS_DIR + 'bag_of_words_debtags.pickle' BAG_OF_WORDS_PKGS_CLASSIFICATION = BAG_OF_WORDS_DIR + \ 'bow_pkgs_classification.pickle' MODEL_ALREADY_CREATED = 1 CREATED_MODEL = 0 @staticmethod def save(bag_of_words, file_path): with open(file_path, 'wb') as text: pickle.dump(bag_of_words, text) @staticmethod def load(file_path): with open(file_path, 'rb') as text: bag_of_words = pickle.load(text) return bag_of_words def __init__(self): self.vectorizer = TfidfVectorizer( max_df=0.8, max_features=5000, min_df=5, stop_words='english', use_idf=True) def check_dir(self): return os.path.exists(BagOfWords.BAG_OF_WORDS_DIR) def combine_pkg_info(self, description, debtags, section): description.extend(debtags) description.append(section) return description def classify_pkg(self, attribute_vector, transform=True): if transform: pkg_feature = self.vectorizer.transform([attribute_vector]) pkg_feature = pkg_feature.toarray() else: pkg_feature = attribute_vector label = self.classifier.predict(pkg_feature) return label[0] def create_pkg_data(self, pkg, axi, cache, ml_data): description = self.get_pkg_description(pkg, cache, ml_data) debtags = self.get_pkg_debtags(pkg, axi, ml_data) section = self.get_pkg_section(pkg, cache, ml_data) return ' '.join(self.combine_pkg_info(description, debtags, section)) def get_pkgs_classification(self, pkgs_list): pkgs_classification = [] with open(MachineLearningData.PKGS_CLASSIFICATIONS) as pkgs: pkgs_data = pickle.load(pkgs) for pkg_name in pkgs_list: pkgs_classification.append(pkgs_data[pkg_name][-1]) return pkgs_classification def get_pkg_description(self, pkg, cache, ml_data): return ml_data.get_pkg_terms(cache, pkg) def get_pkg_debtags(self, pkg, axi, ml_data): return map(lambda x: x.replace('::', '_'), ml_data.get_pkg_debtags(axi, pkg)) def get_pkg_section(self, pkg, cache, ml_data): return ml_data.get_pkg_section(cache, pkg) def get_used_terms_and_debtags(self, features_lists): terms, debtags = [], [] for feature in features_lists: if '_' in feature: debtags.append(feature.replace('_', '::')) else: terms.append(feature) return terms, debtags def prepare_data(self, pkg_list, axi, cache, ml_data): pkgs_description = [] pkgs_classification = [] for pkg in pkg_list: pkg_data = self.create_pkg_data(pkg, axi, cache, ml_data) pkgs_description.append(pkg_data) pkgs_classification = self.get_pkgs_classification(pkg_list) return (pkgs_description, pkgs_classification) def save_features(self, features, path): if not self.check_dir(): os.mkdir(BagOfWords.BAG_OF_WORDS_DIR) with open(path, 'wa') as feature_file: pickle.dump(features, feature_file) def save_pkgs_features(self, path, pkgs_list, features_array, pkg_classification): pkgs_classification = {} for index, pkg in enumerate(pkgs_list): value = features_array[index, :].tolist() value.append(pkg_classification[index]) pkgs_classification[pkg] = value with open(path, 'wa') as bow_pkgs_classification: pickle.dump(pkgs_classification, bow_pkgs_classification) def train_model(self, pkgs_list, axi, save_files=True): cache = AptCache() ml_data = MachineLearningData() pkgs_description, pkg_classification = self.prepare_data( pkgs_list, axi, cache, ml_data) pkg_features = self.vectorizer.fit_transform(pkgs_description) features_array = pkg_features.toarray() terms, debtags = self.get_used_terms_and_debtags( self.vectorizer.get_feature_names()) self.classifier = GaussianNB() self.classifier.fit(features_array, pkg_classification) path = BagOfWords.BAG_OF_WORDS_PKGS_CLASSIFICATION if save_files: self.save_features(terms, BagOfWords.BAG_OF_WORDS_TERMS) self.save_features(debtags, BagOfWords.BAG_OF_WORDS_DEBTAGS) self.save_pkgs_features( path, pkgs_list, features_array, pkg_classification) return BagOfWords.CREATED_MODEL AppRecommender-0.7.5/apprecommender/ml/bayes_matrix.py000066400000000000000000000152471306751311600231120ustar00rootroot00000000000000import pickle import numpy as np class BayesMatrix: ''' This class contains the implementation of the naive bayes algorithm using only matrix operations in order to perform its tasks. ''' @staticmethod def save(bayes_matrix, file_path): with open(file_path, 'wb') as text: pickle.dump(bayes_matrix, text) @staticmethod def load(file_path): with open(file_path, 'rb') as text: bayes_matrix = pickle.load(text) return bayes_matrix ''' data: A matrix on the format p x a, where p is the number of packages that will be used to train the algorithm and a is the number of features that a package has. classifications: A matrix that holds the temporal classification labels for the packages found on the attributes' matrix. This matrix is a column one, where the number of lines represents the number of packages used to train the algorithm. order_of_classifications: A array with the possible classifications on crescent order labels: A column matrix that holds the possible labels that can be used to classify a given package. adjacency: A matrix in the format l x p, where l is the number of possible classifications labels. This is a binary matrix that holds which packages were classified with some given label. histogram: A column vector l x 1, where l is the possible classification labels. This matrix holds the values of how many packages p were classified with a given label l. label_probability: A column matrix that holds the individual probability for each label l for the given training data. feature_per_label: A l x a matrix that hold for each label, the number of times a feature a was present on the label. prob: A l x a matrix that holds the probability of a given feature a to be present in a given label l. diag_histogram: A diagonal matrix for the histogram one. attribute_vector: A vector 1 x a with the values of features to get a classification for this vector based on the training ''' def __init__(self): self.data = None self.classifications = None self.labels = None self.adjacecy = None self.histogram = None self.label_probability = None self.feature_per_label = None self.prob = None self.diag_histogram = None def training(self, data_matrix, classifications, order_of_classifications): self.data = data_matrix.astype(float) order_of_classifications = order_of_classifications[:] self.used_order_of_classifications = ( self.get_used_order_of_classifications(classifications, order_of_classifications)) self.labels = (self.convert_possible_labels_to_number( self.used_order_of_classifications).astype(float)) num_packages = self.data.shape[0] num_labels = self.labels.shape[0] self.classifications = (self.convert_classifications_to_number( classifications, self.used_order_of_classifications).astype(float)) self.adjacency = self.get_adjacent_matrix(num_labels, num_packages).astype(float) self.histogram = self.adjacency.dot(np.ones((num_packages, 1))) self.label_probability = self.histogram / num_packages self.feature_per_label = self.adjacency * self.data self.diag_histogram = np.diag(np.array(self.histogram)[:, 0]) self.prob = np.linalg.inv( self.diag_histogram) * self.feature_per_label def get_classification(self, attribute_vector): attribute_vector = attribute_vector.astype(float) prob_vector = self.prob.copy() label_probability_log = np.log(self.label_probability + 1) indexes_one = np.matrix(np.where(attribute_vector == 1.0)[1]) indexes_one = indexes_one.tolist()[0] indexes_zero = np.matrix(np.where(attribute_vector == 0.0)[1]) indexes_zero = indexes_zero.tolist()[0] prob_vector[:, indexes_one] = 1 + prob_vector[:, indexes_one] prob_vector[:, indexes_zero] = 2 - prob_vector[:, indexes_zero] prob_vector = np.log(prob_vector) prob_vector = prob_vector * np.ones((prob_vector.shape[1], 1)) prob_vector = label_probability_log + prob_vector line, col = np.unravel_index(prob_vector.argmax(), prob_vector.shape) best_prob_index = line return self.used_order_of_classifications[best_prob_index] def convert_possible_labels_to_number(self, order_of_classifications): numbers = "" for i in range(len(order_of_classifications)): numbers += "{0};".format(i) return np.matrix(numbers[0:-1]) def convert_classifications_to_number(self, classifications, order_of_classifications): numbers = "" for i in range(len(classifications)): number = order_of_classifications.index(classifications[i]) numbers += "{0};".format(number) return np.matrix(numbers[0:-1]) def get_adjacent_matrix(self, num_labels, num_packages): adjacent_matrix = np.zeros((num_labels, num_packages)) for i in range(len(self.classifications)): index = int(self.classifications[i].item()) adjacent_matrix[index][i] = 1 return adjacent_matrix def get_used_order_of_classifications(self, classifications, order_of_classifications): used_classifications = set() num_possible_classifications = len(order_of_classifications) for name in classifications: if len(used_classifications) == num_possible_classifications: return order_of_classifications used_classifications.add(name[0].item()) for name in order_of_classifications[:]: if name not in used_classifications: index = order_of_classifications.index(name) del order_of_classifications[index] return order_of_classifications AppRecommender-0.7.5/apprecommender/ml/cross_validation.py000066400000000000000000000302231306751311600237550ustar00rootroot00000000000000import numpy as np import xapian from abc import ABCMeta from collections import defaultdict from apprecommender.evaluation import CrossValidation, Metric from apprecommender.strategy import XAPIAN_DATABASE_PATH from apprecommender.ml.bag_of_words import BagOfWords from apprecommender.ml.bayes_matrix import BayesMatrix from apprecommender.ml.utils import create_column_matrix, create_binary_matrix NOT_NECESSARY = 1 class OverallAccuracy(Metric): ''' Simple comparison between generated predictions and real target values. ''' def __init__(self): self.desc = 'Overall_Accuracy' def run(self, evaluation): predicted = evaluation.predicted_results target = evaluation.real_results overall_accuracy = np.sum(predicted == target) overall_accuracy /= float(predicted.shape[0]) return overall_accuracy * 100 class ConfusionMatrix(): def __init__(self, predicted_results, real_results): self.predicted_results = predicted_results self.real_results = real_results self.repository_size = len(predicted_results) self.true_positive_len = 0 self.true_negative_len = 0 self.false_positive_len = 0 self.false_negative_len = 0 self.predicted_relevant_len = 0 self.real_relevant_len = 0 self.real_negative_len = 0 def run(self): matrix_values = np.zeros(shape=(2, 2)) num_classification = len(self.predicted_results) for i in range(num_classification): row = self.predicted_results[i][0] column = self.real_results[i][0] matrix_values[row][column] += 1 self.true_positive_len = matrix_values[1][1] self.true_negative_len = matrix_values[0][0] self.false_positive_len = matrix_values[1][0] self.false_negative_len = matrix_values[0][1] self.predicted_relevant_len = (self.true_positive_len + self.false_positive_len) self.real_relevant_len = (self.true_positive_len + self.false_negative_len) self.real_negative_len = self.repository_size - self.real_relevant_len def __str__(self): result = 'TP: {0}\nFP: {1}'.format(self.true_positive_len, self.false_positive_len) result += '\nFN: {0}\nTN: {1}\n'.format(self.false_negative_len, self.true_negative_len) return result class Evaluation(): ''' :param predicted_results: The classifications generated by the machine learning algorithm. This variable will be a column matrix, where the number of lines is equal to the number of data used to validate the algorithm. :param real_results: The real classifications of the data used to test the machine learning algorithm. This variable will be a column matrix, where the number of lines is equal to the number of data used to validate the algorithm. :possible_classification: An list containg the labels that a input vector can be classified upon. ''' def __init__(self, predicted_results, real_results, possible_classifications): self.predicted_results = predicted_results self.real_results = real_results self.possible_classifications = possible_classifications self.repository_size = predicted_results.shape[0] self.classes_outputs = {} self.create_classification_outputs() def create_classification_outputs(self): for classification in self.possible_classifications: self.classes_outputs[classification] = ( self.create_confusion_matrix(classification)) def create_confusion_matrix(self, classification): default_value = 0 # Create binary classifications using the one received as parameter binary_predictions = create_binary_matrix(self.predicted_results, classification, default_value) binary_real = create_binary_matrix(self.real_results, classification, default_value) confusion_matrix = ConfusionMatrix(binary_predictions, binary_real) confusion_matrix.run() return confusion_matrix def run(self, metric): results = {} for label, confusion_matrix in self.classes_outputs.iteritems(): results[label] = metric.run(confusion_matrix) return results class CrossValidationMachineLearning(CrossValidation): __metaclass__ = ABCMeta def __init__(self, pkg_data, partition_proportion, rounds, metrics_list, labels): self.pkg_data = pkg_data self.labels = labels self.label_groups = {} self.round_label_groups = [] self.round_num_data = [] self.evaluation = None self.overall_accuracy = [] super(CrossValidationMachineLearning, self).__init__(partition_proportion, rounds, None, metrics_list, 0) def __str__(self): result_str = '' metrics_mean = {} num_data = len(self.pkg_data) result_str += 'Model used {0}\n'.format(self.label) result_str += 'Num data used: {0}\n'.format(num_data) for label in self.labels: result_str += 'Num of data marked as {0}: {1}\n'.format( label, len(self.label_groups[label])) result_str += '\n\n' for r in range(self.rounds): result_str += 'Round {0}:\n\n'.format(r) result_str += 'Overall Accuracy: {0}\n'.format( self.overall_accuracy[r]) result_str += 'Training data used: {0}\n'.format( self.round_num_data[r]) for label in self.labels: result_str += 'Data marked as {0}: {1}\n'.format( label, len(self.round_label_groups[r][label])) result_str += '\n' result_str += '\n\n' for metric in self.metrics_list: result_str += '{0}:\n'.format(metric.desc) metrics_mean[metric.desc] = 0 for r in range(self.rounds): result_str += '\tRound {0}:\n'.format(r) mean = 0 for label in self.labels: result = self.cross_results[metric.desc][r][label] mean += result result_str += '\t\tClass {0}: {1}\n'.format(label, result) mean /= len(self.labels) result_str += '\t\tMean: {0}\n\n'.format(mean) metrics_mean[metric.desc] += mean metrics_mean[metric.desc] /= self.rounds result_str += '\n\n' result_str += 'Average results:\n' result_str += '---------------\n' for metric in self.metrics_list: result_str += '{0}: {1}\n'.format(metric.desc, metrics_mean[metric.desc]) return result_str def create_labels_groups(self, data): label_groups = {} label_groups.fromkeys(self.labels) label_groups = defaultdict(lambda: [], label_groups) for input_vector in data.values(): label = input_vector[-1] label_groups[label].append(input_vector) return label_groups def get_model(self, cross_item_score): ''' This function should get the data that will be used as training data, train the algorithm with this data and return the generated model ''' self.round_num_data.append(len(cross_item_score)) self.round_label_groups.append( self.create_labels_groups(cross_item_score)) def get_user_score(self, user): user_score = self.pkg_data self.label_groups = self.create_labels_groups(user_score) return user_score def get_real_results(self, round_partition): ''' This method should return the real labels for the validation set used on the algorithm. ''' classifications = [] for input_vector in round_partition.values(): classifications.append(input_vector[-1]) # make classifications a column array return create_column_matrix(classifications) def get_result_size(self): return NOT_NECESSARY def get_evaluation(self, predicted_result, real_result): self.evaluation = Evaluation(predicted_result, real_result, self.labels) return self.evaluation def run_metrics(self, predicted_result, real_result): super(CrossValidationMachineLearning, self).run_metrics( predicted_result, real_result) self.overall_accuracy.append(OverallAccuracy().run(self.evaluation)) class CrossValidationBVA(CrossValidationMachineLearning): def __init__(self, pkg_data, partition_proportion, rounds, metrics_list, labels): super(CrossValidationBVA, self).__init__( pkg_data, partition_proportion, rounds, metrics_list, labels) self.label = "Binary vector model" def get_model(self, cross_item_score): super(CrossValidationBVA, self).get_model(cross_item_score) bayes_matrix = BayesMatrix() all_matrix = (np.matrix(cross_item_score.values())) data_matrix = all_matrix[0:, 0:-1] classifications = all_matrix[0:, -1] bayes_matrix.training(data_matrix, classifications, self.labels) return bayes_matrix ''' :param round_user: The model created by the machine learning algorithm. :param round_partition: The data that will be used to evaluate the machine learning algorithm. :param result_size: Not necessary for this context ''' def get_predicted_results(self, round_user, round_partition, result_size=0): ''' This method should generate the predictions for the packages received. It basically needs to used the generated model and use it to generate the prediction. ''' predicted_results = [] for pkg, input_vector in round_partition.iteritems(): input_vector = np.matrix(input_vector[:-1]) predicted_results.append( round_user.get_classification(input_vector)) return create_column_matrix(predicted_results) class CrossValidationBOW(CrossValidationMachineLearning): def __init__(self, pkg_data, partition_proportion, rounds, metrics_list, labels): super(CrossValidationBOW, self).__init__( pkg_data, partition_proportion, rounds, metrics_list, labels) self.axi = xapian.Database(XAPIAN_DATABASE_PATH) self.label = "Bag of words model" def get_model(self, cross_item_score): super(CrossValidationBOW, self).get_model(cross_item_score) pkgs_list = cross_item_score.keys() bag_of_words = BagOfWords() bag_of_words.train_model(pkgs_list, self.axi, save_files=False) return bag_of_words ''' :param round_user: The model created by the machine learning algorithm. :param round_partition: The data that will be used to evaluate the machine learning algorithm. :param result_size: Not necessary for this context ''' def get_predicted_results(self, round_user, round_partition, result_size=0): ''' This method should generate the predictions for the packages received. It basically needs to used the generated model and use it to generate the prediction. ''' predicted_results = [] for pkg in round_partition.keys(): predicted_results.append( round_user.classify_pkg(pkg)[0]) return create_column_matrix(predicted_results) AppRecommender-0.7.5/apprecommender/ml/data.py000066400000000000000000000161521306751311600213300ustar00rootroot00000000000000from os import path from os import makedirs import Stemmer import pickle import xapian from apprecommender.apt_cache import AptCache from apprecommender.config import Config from apprecommender.decider import FilterTag, FilterDescription from apprecommender.ml.pkg_time import PkgTime class MachineLearningData(): XAPIAN_DATABASE_PATH = Config().axi_desktopapps USER_DATA_DIR = Config().user_data_dir BASE_DIR = Config().base_dir PKG_DATA_PATH = USER_DATA_DIR + 'pkg_data.txt' PKGS_CLASSIFICATIONS = USER_DATA_DIR + 'pkgs_classifications.txt' MACHINE_LEARNING_TERMS = USER_DATA_DIR + 'machine_learning_terms.txt' MACHINE_LEARNING_DEBTAGS = USER_DATA_DIR + 'machine_learning_debtags.txt' MACHINE_LEARNING_TRAINING = USER_DATA_DIR + 'machine_learning_training.txt' def __init__(self): self.axi = xapian.Database(MachineLearningData.XAPIAN_DATABASE_PATH) self.stemmer = Stemmer.Stemmer('english') valid_tags = [] with open(path.join(Config().filters_dir, "debtags")) as tags: valid_tags = [line.strip() for line in tags if not line.startswith("#")] self.filter_tag = FilterTag(valid_tags) self.filter_description = FilterDescription() def create_data(self, labels): if not path.exists(MachineLearningData.USER_DATA_DIR): makedirs(MachineLearningData.USER_DATA_DIR) pkgs = self.get_pkgs_classification(labels) cache = AptCache() terms_name = self.get_terms_for_all_pkgs(cache, pkgs.keys()) debtags_name = self.get_debtags_for_all_pkgs(self.axi, pkgs.keys()) debtags_name = self.filter_debtags(debtags_name) debtags_name = sorted(debtags_name) terms_name = self.filter_terms(terms_name) terms_name = sorted(terms_name) pkgs_classifications = ( self.get_pkgs_table_classification(self.axi, pkgs, cache, debtags_name, terms_name)) try: self.save_pkg_data( terms_name, MachineLearningData.MACHINE_LEARNING_TERMS) self.save_pkg_data( debtags_name, MachineLearningData.MACHINE_LEARNING_DEBTAGS) self.save_pkg_data( pkgs_classifications, MachineLearningData.PKGS_CLASSIFICATIONS) except IOError: raise return pkgs_classifications def get_pkgs_classification(self, labels): pkgs_percent = {} pkgs_classification = {} pkg_time = PkgTime() pkg_data = pkg_time.get_package_data() for name, time_values in pkg_data.iteritems(): _, access = time_values pkgs_percent[name] = access pkgs = pkgs_percent.keys() pkgs = sorted(pkgs, key=lambda pkg: pkgs_percent[pkg]) pkgs = list(reversed(pkgs)) if len(pkgs) > len(labels): size = len(pkgs) / len(labels) for index, label in enumerate(labels): index_begin = size * index index_end = index_begin + size classifications = dict.fromkeys(pkgs[index_begin:index_end], label) pkgs_classification.update(classifications) index_begin = size * len(labels) if index_begin < len(labels): classifications = dict.fromkeys(pkgs[index_begin], label[-1]) pkgs_classification.update(classifications) else: for index, pkg in enumerate(pkgs): pkgs_classification[pkg] = labels[index] return pkgs_classification def get_pkg_data(self, axi, pkg_name, data_type): pkg_name = 'XP' + pkg_name query = xapian.Query(xapian.Query.OP_OR, [pkg_name]) enquire = xapian.Enquire(axi) enquire.set_query(query) mset = enquire.get_mset(0, 10) pkg_info = [] for pkg in mset: for term in axi.get_document(pkg.docid).termlist(): pkg_term = term.term if pkg_term.startswith(data_type): pkg_info.append(pkg_term[len(data_type):]) elif data_type == 'term': if pkg_term[0].islower(): pkg_info.append(pkg_term) return pkg_info def get_pkg_debtags(self, axi, pkg_name): return self.get_pkg_data(axi, pkg_name, 'XT') def get_pkg_terms(self, cache, pkg_name): description = self.get_pkg_description(cache, pkg_name) tokens = description.lower().split() stems = [self.stemmer.stemWord(token) for token in tokens if self.filter_description(token)] return stems def get_pkg_section(self, cache, pkg_name): return cache[pkg_name].section def get_pkg_description(self, cache, pkg_name): if pkg_name not in cache: return [] else: description = cache[pkg_name].candidate.description return description.strip() def get_debtags_name(self, file_path): with open(file_path, 'r') as text: debtags_name = [debtag.strip() for debtag in text] return debtags_name def create_row_table_list(self, labels_name, pkg_elements): row_list = [] for debtag in labels_name: row_list.append(1 if debtag in pkg_elements else 0) return row_list def get_terms_for_all_pkgs(self, cache, pkgs): pkg_terms = set() for pkg in pkgs: pkg_terms = pkg_terms | set(self.get_pkg_terms(cache, pkg)) return pkg_terms def get_debtags_for_all_pkgs(self, axi, pkgs): pkg_debtags = set() for pkg in pkgs: pkg_debtags = pkg_debtags | set(self.get_pkg_debtags(axi, pkg)) return pkg_debtags def filter_terms(self, terms): filtered_terms = [] for term in terms: if self.filter_description(term): filtered_terms.append(term) return filtered_terms def filter_debtags(self, debtags): filtered_debtags = [] for tag in debtags: if self.filter_tag('XT' + tag): filtered_debtags.append(tag) return filtered_debtags def get_pkgs_table_classification(self, axi, pkgs, cache, debtags_name, terms_name): pkgs_classification = {} for key, value in pkgs.iteritems(): pkgs_classification[key] = [] debtags = self.get_pkg_debtags(axi, key) debtags = self.create_row_table_list(debtags_name, debtags) pkgs_classification[key].extend(debtags) terms = self.get_pkg_terms(cache, key) terms = self.create_row_table_list(list(terms_name), terms) pkgs_classification[key].extend(terms) pkgs_classification[key].append(value) return pkgs_classification def save_pkg_data(self, pkg_data, file_path): try: ml_data = open(file_path, 'wb') with ml_data: pickle.dump(pkg_data, ml_data) except IOError: raise AppRecommender-0.7.5/apprecommender/ml/pkg_time.py000066400000000000000000000064571306751311600222250ustar00rootroot00000000000000#!/usr/bin/env python import commands import os import re from apprecommender.config import Config from apprecommender.data_classification import get_time_from_package from apprecommender.user import LocalSystem from apprecommender.utils import print_progress_bar USER_DATA_DIR = Config().user_data_dir class PkgTime: def create_pkg_data(self): user = LocalSystem() user_pkgs = user.pkg_profile pkgs_time = self.get_packages_time(user_pkgs) self.save_package_time(pkgs_time) return pkgs_time def get_best_time(self, pkg): valid_path_regex = re.compile( r'/usr/bin/|/usr/game/|/usr/lib/.+/') invalid_path_regex = re.compile( r'(.+-){2,}|/usr/lib/mime/packages/|/init.d/|/media/') invalid_files_regex = re.compile( r'\.desktop|\.conf|\.egg-info|\.txt') pkg_files = commands.getoutput('dpkg -L {}'.format(pkg)) bestatime, bestmtime = 0, 0 for pkg_file in pkg_files.splitlines(): if invalid_path_regex.search(pkg_file): continue if invalid_files_regex.search(pkg_file): continue if os.path.isdir(pkg_file): continue if valid_path_regex.search(pkg_file): modify, access = get_time_from_package(pkg_file, pkg_bin=False) modify = int(modify) if modify else 0 access = int(access) if access else 0 if access > bestatime: bestatime = access bestmtime = modify return (bestmtime, bestatime) def get_package_data(self, file_path=USER_DATA_DIR + 'pkg_data.txt'): if os.path.isfile(file_path): pkgs_time = {} with open(file_path, 'r') as pkg_data: for pkg_line in pkg_data: name, modify, access = pkg_line.split(' ') pkgs_time[name] = [modify, access] return pkgs_time else: return self.create_pkg_data() def get_packages_time(self, pkgs, verbose=False): pkgs_time = {} len_pkgs = len(pkgs) for index, pkg in enumerate(pkgs): modify, access = self.get_best_time(pkg) if modify and access: if verbose: print 'ADD: {}'.format(pkg) pkgs_time[pkg] = [] pkgs_time[pkg].append(modify) pkgs_time[pkg].append(access) else: if verbose: print 'NOT: {} {} {}'.format(pkg, modify, access) print_progress_bar(index + 1, len_pkgs) return pkgs_time def print_package_time(self, pkgs_time): for key, value in pkgs_time.iteritems(): print "{} : Modify {}, Access {}".format(key, value[0], value[1]) def save_package_time(self, pkgs_time, file_path=USER_DATA_DIR + 'pkg_data.txt'): with open(file_path, 'w') as pkg_data: pkg_str = "{pkg} {modify} {access}\n" for pkg, times in pkgs_time.iteritems(): pkg_line = pkg_str.format(pkg=pkg, modify=times[0], access=times[1]) pkg_data.write(pkg_line) AppRecommender-0.7.5/apprecommender/ml/utils.py000066400000000000000000000004551306751311600215560ustar00rootroot00000000000000from numpy import array, where INVALID_PARAMETERS = -1 def create_column_matrix(matrix): matrix = array(matrix) matrix.shape = (len(matrix), 1) return matrix def create_binary_matrix(original_vector, value, default_value): return where(original_vector == value, 1, default_value) AppRecommender-0.7.5/apprecommender/recommender.py000066400000000000000000000144341306751311600223100ustar00rootroot00000000000000#!/usr/bin/env python """ recommender - python module for classes related to recommenders. """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ import heapq import inspect import logging import operator import os import xapian from collections import namedtuple from fuzzywuzzy import fuzz from operator import attrgetter import apprecommender.strategy from apprecommender.apt_cache import AptCache from apprecommender.config import Config class RecommendationResult: """ Class designed to describe a recommendation result: items and scores. """ def __init__(self, item_score, ranking=0, limit=0, user_profile=None): """ Set initial parameters. """ self.item_score = item_score self.size = len(item_score) self.limit = limit self.cache = AptCache() self.pkg_descriptions = {} if ranking: self.ranking = ranking if user_profile: self.fill_pkg_descriptions(user_profile) def fill_pkg_descriptions(self, user_profile): for pkg in user_profile: description = self.cache[pkg].candidate.description self.pkg_descriptions[pkg] = description.lower() def __str__(self): """ String representation of the object. """ result = self.get_prediction(self.limit) rec_str = '\n' index = 1 for pkg, _ in result: summary = self.cache[pkg].candidate.summary description = self.cache[pkg].candidate.description rec_str += '{}: {} \t {}\n'.format( index, pkg.ljust(20), summary) if self.pkg_descriptions: because_pkgs = self.get_because(description.lower()) rec_str += ' because you installed: \t {}\n\n'.format( ', '.join(because_pkgs)) index += 1 return rec_str def get_because(self, rec_description): because = [] PkgRatio = namedtuple('PkgRatio', ['pkg', 'ratio']) for pkg, description in self.pkg_descriptions.iteritems(): ratio = fuzz.ratio(rec_description, description) because.append(PkgRatio(pkg, ratio)) pkgs = heapq.nlargest(4, because, key=attrgetter('ratio')) return [pkg for pkg, _ in pkgs] def get_prediction(self, limit=0): """ Return prediction based on recommendation size (number of items). """ sorted_result = sorted(self.item_score.items(), key=operator.itemgetter(1)) if not limit or limit > self.size: limit = self.size return list(reversed(sorted_result[-limit:])) class Recommender: """ Class designed to play the role of recommender. """ def __init__(self): """ Set initial parameters. """ self.cfg = Config() # Load xapian indexes self.axi_desktopapps = xapian.Database(self.cfg.axi_desktopapps) if self.cfg.popcon: self.popcon_desktopapps = xapian.Database( self.cfg.popcon_desktopapps) # Load valid programs, desktopapps and tags # format: one package or tag name per line self.valid_desktopapps = [] self.valid_tags = [] logging.info("Loading recommender filters") with open(os.path.join(self.cfg.filters_dir, "desktopapps")) as pkgs: self.valid_desktopapps = [line.strip() for line in pkgs if not line.startswith("#")] with open(os.path.join(self.cfg.filters_dir, "debtags")) as tags: self.valid_tags = [line.strip() for line in tags if not line.startswith("#")] # Set xapian index weighting scheme if self.cfg.weight == "bm25": self.weight = xapian.BM25Weight(self.cfg.bm25_k1, self.cfg.bm25_k2, self.cfg.bm25_k3, self.cfg.bm25_b, self.cfg.bm25_nl) else: self.weight = xapian.TradWeight() self.set_strategy(self.cfg.strategy) def get_all_strategies(self): cls_members = inspect.getmembers(apprecommender.strategy, inspect.isclass) valid_strategies = {} for name, obj in cls_members: class_strategies = getattr(obj, 'get_valid_strategies', None) if class_strategies: valid_strategies = dict(class_strategies(), **valid_strategies) return valid_strategies def set_strategy(self, strategy_str, n=0): """ Set the recommendation strategy. """ valid_strategies = self.get_all_strategies() profile_size = n if n else self.cfg.profile_size self.items_repository = self.axi_desktopapps self.valid_pkgs = self.valid_desktopapps logging.info("Setting recommender strategy to \'%s\'" % strategy_str) if strategy_str in valid_strategies: strategy_type = valid_strategies[strategy_str] class_name = strategy_type.class_name content_type = strategy_type.content_type self.strategy = eval(class_name)( content_type, profile_size) else: logging.info("Strategy not defined.") self.strategy = None def get_recommendation(self, user, result_size=100): """ Produces recommendation using previously loaded strategy. """ if self.strategy is None: return "" return self.strategy.run(self, user, result_size) AppRecommender-0.7.5/apprecommender/singleton.py000066400000000000000000000023601306751311600220050ustar00rootroot00000000000000#!/usr/bin/env python """ singleton - python class that implements singleton design pattern. """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ class Singleton(object): """ Base class for inheritance of only-one-instance classes. Singleton design pattern. """ def __new__(cls, *args, **kwargs): """ Creates a new instance of the class only if none already exists. """ if '_inst' not in vars(cls): cls._inst = object.__new__(cls) return cls._inst AppRecommender-0.7.5/apprecommender/strategy.py000066400000000000000000000403531306751311600216510ustar00rootroot00000000000000#!/usr/bin/env python """ strategy - python module for classes and methods related to recommendation strategies. """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ import collections import logging import operator import pickle import re import recommender import subprocess import xapian import numpy as np from abc import ABCMeta, abstractmethod from apprecommender.apt_cache import AptCache from apprecommender.config import Config from apprecommender.decider import (PkgMatchDecider, PkgReverseDependeciesDecider) from apprecommender.ml.bag_of_words import BagOfWords from apprecommender.ml.bayes_matrix import BayesMatrix from apprecommender.ml.data import MachineLearningData from apprecommender.utils import get_class_and_module_name XAPIAN_DATABASE_PATH = Config().axi_desktopapps USER_DATA_DIR = Config().user_data_dir PKGS_CLASSIFICATIONS_INDICES = (USER_DATA_DIR + 'pkgs_classifications_indices.txt') StrategyType = collections.namedtuple('StrategyType', 'class_name content_type') class RecommendationStrategy(object): """ Base class for recommendation strategies. """ def run(self, rec, user, recommendation_size): raise NotImplementedError class ContentBased(RecommendationStrategy): """ Content-based recommendation strategy based on Apt-xapian-index. """ @classmethod def get_valid_strategies(cls): class_name = get_class_and_module_name(cls) valid_strategies = {'cb': StrategyType(class_name, 'mix'), 'cbt': StrategyType(class_name, 'tag'), 'cbd': StrategyType(class_name, 'desc'), 'cbh': StrategyType(class_name, 'half'), 'cbtm': StrategyType(class_name, 'time'), 'cb_eset': StrategyType(class_name, 'mix_eset'), 'cbt_eset': StrategyType(class_name, 'tag_eset'), 'cbd_eset': StrategyType(class_name, 'desc_eset'), 'cbh_eset': StrategyType(class_name, 'half_eset')} return valid_strategies def __init__(self, content, profile_size): self.description = "Content-based" self.content = content self.profile_size = profile_size def get_sugestion_from_profile(self, rec, user, profile, recommendation_size, because=True, pkg_decider=None): query = xapian.Query(xapian.Query.OP_OR, profile) enquire = xapian.Enquire(rec.items_repository) enquire.set_weighting_scheme(rec.weight) enquire.set_query(query) user_profile = None if pkg_decider is None: pkg_decider = PkgMatchDecider(user.installed_pkgs) # Retrieve matching packages try: mset = enquire.get_mset(0, recommendation_size, None, pkg_decider) except xapian.DatabaseError as error: logging.critical("Content-based strategy: " + error.get_msg()) # Compose result dictionary item_score = {} ranking = [] for m in mset: item_score[m.document.get_data()] = m.weight ranking.append(m.document.get_data()) if because and Config().because: user_profile = user.pkg_profile result = recommender.RecommendationResult( item_score, ranking, user_profile=user_profile) return result def run(self, rec, user, rec_size): """ Perform recommendation strategy. """ logging.debug("Composing user profile...") profile = user.content_profile(rec.items_repository, self.content, self.profile_size, rec.valid_tags) logging.debug(profile) result = self.get_sugestion_from_profile(rec, user, profile, rec_size) return result class PackageReference(ContentBased): @classmethod def get_valid_strategies(cls): class_name = get_class_and_module_name(cls) valid_strategies = {'cbpkg': StrategyType(class_name, 'mix')} return valid_strategies def __init__(self, content, profile_size): ContentBased.__init__(self, content, profile_size) self.content = content self.description = 'Package-reference' self.profile_size = profile_size self.cache = AptCache() self.pkgs_regex = re.compile(r'^\s+(?:\|)?(.+)$', re.MULTILINE) def get_reverse_dependencies_pkgs(self, reference_pkgs): reverse_dependencies_pkgs = [] for pkg in reference_pkgs: command = 'apt-cache rdepends {}'.format(pkg) rdepends = subprocess.check_output(command, stderr=subprocess.STDOUT, shell=True) rdepends_pkgs = self.pkgs_regex.findall(rdepends) reverse_dependencies_pkgs += rdepends_pkgs return reverse_dependencies_pkgs def content_profile_for_reference_pkgs(self, reference_pkgs): content_profile = reference_pkgs[:] for pkg in reference_pkgs: content_profile += pkg.split('-') content_profile = list(set(content_profile)) return content_profile def run(self, rec, user, rec_size): reference_pkgs = user.reference_pkgs reverse_dependencies_pkgs = self.get_reverse_dependencies_pkgs( reference_pkgs) pkg_decider = PkgReverseDependeciesDecider(reverse_dependencies_pkgs, user.installed_pkgs) profile = user.content_profile(rec.items_repository, self.content, self.profile_size, rec.valid_tags) profile += self.content_profile_for_reference_pkgs(reference_pkgs) rec.items_repository = xapian.Database(Config().axi) result = self.get_sugestion_from_profile( rec, user, profile, rec_size, pkg_decider=pkg_decider) return result class MachineLearningTrainError(Exception): def __init__(self, value=''): self.value = value def __str__(self): return repr(self.value) class MachineLearning(ContentBased): __metaclass__ = ABCMeta PKGS_CLASSIFICATIONS = None def __init__(self, content, profile_size, suggestion_size=200): ContentBased.__init__(self, content, profile_size) self.content = content self.description = 'Machine-learning' self.profile_size = profile_size self.suggestion_size = suggestion_size self.cache = AptCache() self.ml_data = MachineLearningData() self.axi = xapian.Database(XAPIAN_DATABASE_PATH) def display_recommended_terms(self, terms_name, debtags_name, item_score, rec_size): sorted_result = sorted(item_score.items(), key=operator.itemgetter(1)) sorted_result = list(reversed(sorted_result)) sorted_result = [pkg[0] for pkg in sorted_result][0:rec_size] sorted_result = list(reversed(sorted_result)) for pkg in sorted_result: pkg_terms = self.ml_data.get_pkg_terms(self.cache, pkg) pkg_debtags = self.ml_data.get_pkg_debtags(self.axi, pkg) terms_match = [] for term in pkg_terms: if term in terms_name: terms_match.append(term) debtags_match = [] for debtag in pkg_debtags: if debtag in debtags_name: debtags_match.append(debtag) print "\n\n=" print "{0}".format(pkg) print "debtags:" print debtags_match print "-" print "terms:" print terms_match print "=" def get_item_score(self, pkgs_score, pkgs_classifications): item_score = {} order = ['RU', 'U', 'NU'] order_values = [0, 1000, 2000] for pkg, classification in pkgs_classifications.iteritems(): item_score[pkg] = order_values[order.index(classification)] item_score[pkg] += pkgs_score[pkg] return item_score def get_pkgs_and_scores(self, rec, user): profile = user.content_profile(rec.items_repository, self.content, self.suggestion_size, rec.valid_tags) content_based = self.get_sugestion_from_profile( rec, user, profile, self.suggestion_size, because=False) pkgs, pkgs_score = [], {} for pkg_line in str(content_based).splitlines()[1:]: pkg = re.search(r'\d+:\s([\w-]+)', pkg_line) if not pkg.groups(): continue pkg = pkg.groups()[0] pkg_score = int(pkg_line.split(':')[0].strip()) pkgs.append(pkg) pkgs_score[pkg] = self.suggestion_size - pkg_score return pkgs, pkgs_score def get_pkgs_classifications(self, pkgs, terms_name, debtags_name): ml_strategy = self.get_ml_strategy() pkgs_classifications = {} kwargs = {} kwargs['terms_name'] = terms_name kwargs['debtags_name'] = debtags_name kwargs['ml_strategy'] = ml_strategy for pkg in pkgs: if pkg not in self.cache: continue attribute_vector = self.prepare_pkg_data( pkg, **kwargs) classification = self.get_pkg_classification( ml_strategy, attribute_vector) pkgs_classifications[pkg] = classification return pkgs_classifications def load_terms_and_debtags(self): terms_name = [] debtags_name = [] terms_path = self.get_terms_path() debtags_path = self.get_debtags_path() with open(terms_path, 'rb') as terms: terms_name = pickle.load(terms) with open(debtags_path, 'rb') as debtags: debtags_name = pickle.load(debtags) return terms_name, debtags_name @staticmethod def train(cls): ml_data = MachineLearningData() labels = ['RU', 'U', 'NU'] try: MachineLearning.PKGS_CLASSIFICATIONS = ml_data.create_data( labels) if len(MachineLearning.PKGS_CLASSIFICATIONS) >= 10: cls.run_train(MachineLearning.PKGS_CLASSIFICATIONS) else: raise MachineLearningTrainError() except IOError: raise @abstractmethod def get_debtags_path(self): raise NotImplementedError("Method not implemented.") @abstractmethod def get_ml_strategy(self): raise NotImplementedError("Method not implemented.") @abstractmethod def get_pkg_classification(self, ml_strategy, attribute_vector): raise NotImplementedError("Method not implemented.") @abstractmethod def get_terms_path(self): raise NotImplementedError("Method not implemented.") @abstractmethod def prepare_pkg_data(self, pkg, **kwargs): raise NotImplementedError("Method not implemented.") @abstractmethod def run_train(cls, pkgs_classifications): raise NotImplementedError("Method not implemented.") def run(self, rec, user, rec_size): user_profile = None terms_name, debtags_name = self.load_terms_and_debtags() pkgs, pkgs_score = self.get_pkgs_and_scores(rec, user) pkgs_classifications = self.get_pkgs_classifications(pkgs, terms_name, debtags_name) item_score = self.get_item_score(pkgs_score, pkgs_classifications) if Config().because: user_profile = user.pkg_profile return recommender.RecommendationResult( item_score, limit=rec_size, user_profile=user_profile) class MachineLearningBVA(MachineLearning): @classmethod def get_valid_strategies(cls): class_name = get_class_and_module_name(cls) valid_strategies = {'mlbva': StrategyType(class_name, 'mlbva_mix'), 'mlbva_eset': StrategyType(class_name, 'mlbva_mix_eset')} return valid_strategies @classmethod def run_train(cls, pkgs_classifications): all_matrix = (np.matrix(pkgs_classifications.values())) data_matrix = all_matrix[0:, 0:-1] classifications = all_matrix[0:, -1] order_of_classifications = ['NU', 'U', 'RU'] bayes_matrix = BayesMatrix() bayes_matrix.training(data_matrix, classifications, order_of_classifications) BayesMatrix.save(bayes_matrix, MachineLearningData.MACHINE_LEARNING_TRAINING) def __init__(self, content, profile_size, suggestion_size=200): super(MachineLearningBVA, self).__init__( content, profile_size, suggestion_size) self.description = "Machine-learning-binary-vector-approach" def get_debtags_path(self): return MachineLearningData.MACHINE_LEARNING_DEBTAGS def get_ml_strategy(self): return BayesMatrix.load( MachineLearningData.MACHINE_LEARNING_TRAINING) def get_pkg_classification(self, ml_strategy, attribute_vector): return ml_strategy.get_classification(attribute_vector) def get_terms_path(self): return MachineLearningData.MACHINE_LEARNING_TERMS def prepare_pkg_data(self, pkg, **kwargs): terms_name = kwargs['terms_name'] debtags_name = kwargs['debtags_name'] pkg_terms = self.ml_data.get_pkg_terms(self.cache, pkg) pkg_debtags = self.ml_data.get_pkg_debtags(self.axi, pkg) debtags_attributes = self.ml_data.create_row_table_list( debtags_name, pkg_debtags) terms_attributes = self.ml_data.create_row_table_list( terms_name, pkg_terms) attribute_vector = terms_attributes + debtags_attributes attribute_vector = np.matrix(attribute_vector) return attribute_vector class MachineLearningBOW(MachineLearning): @classmethod def get_valid_strategies(cls): class_name = get_class_and_module_name(cls) valid_strategies = {'mlbow': StrategyType(class_name, 'mlbow_mix'), 'mlbow_eset': StrategyType(class_name, 'mlbow_mix_eset')} return valid_strategies def __init__(self, content, profile_size, suggestion_size=200): super(MachineLearningBOW, self).__init__( content, profile_size, suggestion_size) self.description = "Machine-learning-bag-of-words" def get_debtags_path(self): return BagOfWords.BAG_OF_WORDS_DEBTAGS def get_ml_strategy(self): return BagOfWords.load( BagOfWords.BAG_OF_WORDS_MODEL) def get_pkg_classification(self, ml_strategy, attribute_vector): return ml_strategy.classify_pkg(attribute_vector) def get_terms_path(self): return BagOfWords.BAG_OF_WORDS_TERMS def prepare_pkg_data(self, pkg, **kwargs): ml_strategy = kwargs['ml_strategy'] attribute_vector = ml_strategy.create_pkg_data( pkg, self.axi, self.cache, self.ml_data) return attribute_vector @classmethod def run_train(cls, pkgs_classifications): bag_of_words = BagOfWords() pkgs_list = pkgs_classifications.keys() axi = xapian.Database(XAPIAN_DATABASE_PATH) bag_of_words.train_model(pkgs_list, axi) BagOfWords.save(bag_of_words, BagOfWords.BAG_OF_WORDS_MODEL) AppRecommender-0.7.5/apprecommender/tests/000077500000000000000000000000001306751311600205725ustar00rootroot00000000000000AppRecommender-0.7.5/apprecommender/tests/test_apt_run.py000066400000000000000000000042301306751311600236520ustar00rootroot00000000000000#!/usr/bin/env python import os import shutil import unittest from mock import patch from apprecommender.main.apt_run import AptRun from apprecommender.user import LocalSystem class AptRunTests(unittest.TestCase): TEST_FOLDER = 'apprecommender/tests/.apt_run' def setUp(self): if os.path.exists(AptRunTests.TEST_FOLDER): shutil.rmtree(AptRunTests.TEST_FOLDER) def test_enable_apt_run(self): apt_run = AptRun() apt_run.set_folder(AptRunTests.TEST_FOLDER) apt_run.enable() result = apt_run.is_enable() self.assertTrue(result) def test_dont_enable_apt_run_if_already_enabled(self): apt_run = AptRun() apt_run.set_folder(AptRunTests.TEST_FOLDER) apt_run.enable() result = apt_run.enable() self.assertFalse(result) def test_disable_apt_run(self): apt_run = AptRun() apt_run.set_folder(AptRunTests.TEST_FOLDER) os.makedirs(AptRunTests.TEST_FOLDER) apt_run.disable() result = apt_run.is_enable() self.assertFalse(result) def test_dont_disable_apt_run_if_already_disabled(self): apt_run = AptRun() apt_run.set_folder(AptRunTests.TEST_FOLDER) result = apt_run.disable() self.assertFalse(result) def test_pre_install_pkgs(self): apt_run = AptRun() apt_run.set_folder(AptRunTests.TEST_FOLDER) apt_run.enable() apt_run.pre_install_pkgs() user = LocalSystem() assert_pkgs = user.pkg_profile pkgs = [] with open(apt_run.installed_pkgs_file, 'r') as text: pkgs = [line.strip() for line in text] self.assertListEqual(assert_pkgs, pkgs) @patch('apprecommender.main.apt_run.AptRun.get_user_pkgs') def test_post_invoke(self, mock_user_pkgs): mock_user_pkgs.return_value = ['vim', 'gedit'] apt_run = AptRun() apt_run.set_folder(AptRunTests.TEST_FOLDER) apt_run.enable() with open(apt_run.installed_pkgs_file, 'w') as text: text.write('gedit') installed_pkgs = apt_run.post_invoke() self.assertEqual(['vim'], installed_pkgs) AppRecommender-0.7.5/apprecommender/tests/test_data.py000066400000000000000000000054151306751311600231210ustar00rootroot00000000000000#!/usr/bin/env python """ dataTests - Data classes test case """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ import unittest import xapian from apprecommender.data import PopconSubmission, axi_search_pkg_tags from apprecommender.config import Config class AxiSearchTests(unittest.TestCase): @classmethod def setUpClass(self): cfg = Config() self.axi = xapian.Database(cfg.axi) def test_search_pkg_tags(self): tags = axi_search_pkg_tags(self.axi, 'vim') self.assertEqual(set(tags), set(['XTscope::application', 'XTrole::program', 'XTimplemented-in::c', 'XTworks-with::unicode', 'XTworks-with::text', 'XTuse::editing', 'XTinterface::commandline', 'XTdevel::editor', 'XTuitoolkit::ncurses', 'XTinterface::text-mode'])) class PopconSubmissionTests(unittest.TestCase): @classmethod def setUpClass(self): self.submission_path = "apprecommender/tests/test_data/test_popcon" self.submission = PopconSubmission(self.submission_path) def test_user_id(self): with open(self.submission_path) as popcon_file: user_id = popcon_file.readline().split()[2].lstrip("ID:") self.assertEqual(self.submission.user_id, user_id) def test_load(self): with open(self.submission_path) as popcon_file: size = len(popcon_file.readlines()) self.assertEqual(len(self.submission.packages), size - 2) def test_str(self): output = "\nPopularity-contest submission ID " output += "8b44fcdbcf676e711a153d5db099test\n " output += "dash: 1\n perl-base: 1\n libusbmuxd1: 1\n " output += "libc6-i686: 1\n libc6: 1" self.assertEqual(self.submission.__str__(), output) AppRecommender-0.7.5/apprecommender/tests/test_data/000077500000000000000000000000001306751311600225425ustar00rootroot00000000000000AppRecommender-0.7.5/apprecommender/tests/test_data/popcon_dir/000077500000000000000000000000001306751311600246765ustar00rootroot00000000000000AppRecommender-0.7.5/apprecommender/tests/test_data/popcon_dir/test_popcon_0000066400000000000000000000005441306751311600274000ustar00rootroot00000000000000POPULARITY-CONTEST-0 TIME:1309407492 ID:8b44fcdbcf676e711a153d5db0test_0 ARCH:i386 POPCONVER:1.52 1309407475 1303670994 gimp /usr/bin/perl 1309407451 1303670982 inkscape /lib/i686/cmov/libc-2.11.2.so 1309407450 1303670973 imagination /lib/ld-2.11.2.so 1309407434 1295654294 dash /bin/dash 0 0 libusbmuxd1 END-POPULARITY-CONTEST-0 TIME:1309407492 AppRecommender-0.7.5/apprecommender/tests/test_data/popcon_dir/test_popcon_1000066400000000000000000000003631306751311600274000ustar00rootroot00000000000000POPULARITY-CONTEST-0 TIME:1309407492 ID:8b44fcdbcf676e711a153d5db0test_1 ARCH:i386 POPCONVER:1.52 1309407475 1303670994 gimp /usr/bin/perl 1309407434 1295654294 dash /bin/dash 0 0 libusbmuxd1 END-POPULARITY-CONTEST-0 TIME:1309407492 AppRecommender-0.7.5/apprecommender/tests/test_data/popcon_dir/test_popcon_2000066400000000000000000000005411306751311600273770ustar00rootroot00000000000000POPULARITY-CONTEST-0 TIME:1309407492 ID:8b44fcdbcf676e711a153d5db0test_2 ARCH:i386 POPCONVER:1.52 1309407475 1303670994 iceweasel /usr/bin/perl 1309407451 1303670982 python /lib/i686/cmov/libc-2.11.2.so 1309407450 1303670973 libc6 /lib/ld-2.11.2.so 1309407434 1295654294 dash /bin/dash 0 0 libusbmuxd1 END-POPULARITY-CONTEST-0 TIME:1309407492 AppRecommender-0.7.5/apprecommender/tests/test_data/popcon_dir/test_popcon_3000066400000000000000000000004701306751311600274010ustar00rootroot00000000000000POPULARITY-CONTEST-0 TIME:1309407492 ID:8b44fcdbcf676e711a153d5db0test_3 ARCH:i386 POPCONVER:1.52 1309407475 1303670994 eog /usr/bin/perl 1309407451 1303670982 nautilus /lib/i686/cmov/libc-2.11.2.so 1309407450 1303670973 libc6 /lib/ld-2.11.2.so 0 0 libusbmuxd1 END-POPULARITY-CONTEST-0 TIME:1309407492 AppRecommender-0.7.5/apprecommender/tests/test_data/popcon_dir/test_popcon_4000066400000000000000000000004731306751311600274050ustar00rootroot00000000000000POPULARITY-CONTEST-0 TIME:1309407492 ID:8b44fcdbcf676e711a153d5db0test_4 ARCH:i386 POPCONVER:1.52 1309407475 1303670994 konqueror /usr/bin/perl 1309407451 1303670982 kedit /lib/i686/cmov/libc-2.11.2.so 1309407450 1303670973 libc6 /lib/ld-2.11.2.so 0 0 libusbmuxd1 END-POPULARITY-CONTEST-0 TIME:1309407492 AppRecommender-0.7.5/apprecommender/tests/test_data/popcon_dir/test_popcon_5000066400000000000000000000003701306751311600274020ustar00rootroot00000000000000POPULARITY-CONTEST-0 TIME:1309407492 ID:8b44fcdbcf676e711a153d5db0test_5 ARCH:i386 POPCONVER:1.52 1309407475 1303670994 konqueror /usr/bin/perl 1309407434 1295654294 dash /bin/dash 0 0 libusbmuxd1 END-POPULARITY-CONTEST-0 TIME:1309407492 AppRecommender-0.7.5/apprecommender/tests/test_data/popcon_dir/test_popcon_6000066400000000000000000000005411306751311600274030ustar00rootroot00000000000000POPULARITY-CONTEST-0 TIME:1309407492 ID:8b44fcdbcf676e711a153d5db0test_6 ARCH:i386 POPCONVER:1.52 1309407475 1303670994 perl-base /usr/bin/perl 1309407451 1303670982 eog /lib/i686/cmov/libc-2.11.2.so 1309407450 1303670973 nautilus /lib/ld-2.11.2.so 1309407434 1295654294 dash /bin/dash 0 0 libusbmuxd1 END-POPULARITY-CONTEST-0 TIME:1309407492 AppRecommender-0.7.5/apprecommender/tests/test_data/popcon_dir/test_popcon_7000066400000000000000000000005401306751311600274030ustar00rootroot00000000000000POPULARITY-CONTEST-0 TIME:1309407492 ID:8b44fcdbcf676e711a153d5db0test_7 ARCH:i386 POPCONVER:1.52 1309407475 1303670994 apticron /usr/bin/perl 1309407451 1303670982 aptitude /lib/i686/cmov/libc-2.11.2.so 1309407450 1303670973 apt /lib/ld-2.11.2.so 1309407434 1295654294 dash /bin/dash 0 0 libusbmuxd1 END-POPULARITY-CONTEST-0 TIME:1309407492 AppRecommender-0.7.5/apprecommender/tests/test_data/popcon_dir/test_popcon_8000066400000000000000000000005401306751311600274040ustar00rootroot00000000000000POPULARITY-CONTEST-0 TIME:1309407492 ID:8b44fcdbcf676e711a153d5db0test_8 ARCH:i386 POPCONVER:1.52 1309407475 1303670994 apticron /usr/bin/perl 1309407451 1303670982 eog /lib/i686/cmov/libc-2.11.2.so 1309407450 1303670973 nautilus /lib/ld-2.11.2.so 1309407434 1295654294 dash /bin/dash 0 0 libusbmuxd1 END-POPULARITY-CONTEST-0 TIME:1309407492 AppRecommender-0.7.5/apprecommender/tests/test_data/popcon_dir/test_popcon_9000066400000000000000000000005451306751311600274120ustar00rootroot00000000000000POPULARITY-CONTEST-0 TIME:1309407492 ID:8b44fcdbcf676e711a153d5db0test_9 ARCH:i386 POPCONVER:1.52 1309407475 1303670994 perl-base /usr/bin/perl 1309407451 1303670982 libc6-i686 /lib/i686/cmov/libc-2.11.2.so 1309407450 1303670973 libc6 /lib/ld-2.11.2.so 1309407434 1295654294 dash /bin/dash 0 0 libusbmuxd1 END-POPULARITY-CONTEST-0 TIME:1309407492 AppRecommender-0.7.5/apprecommender/tests/test_data/tags_filter000066400000000000000000000124471306751311600250000ustar00rootroot00000000000000accessibility::input accessibility::ocr accessibility::screen-magnify accessibility::screen-reader accessibility::speech accessibility::speech-recognition admin::accounting admin::automation admin::backup admin::benchmarking admin::boot admin::cluster admin::configuring admin::file-distribution admin::filesystem admin::forensics admin::hardware admin::install admin::issuetracker admin::kernel admin::logging admin::login admin::monitoring admin::package-management admin::power-management admin::recovery admin::user-management admin::virtualization biology::emboss biology::format:aln biology::format:fasta biology::format:nexus biology::nucleic-acids biology::peptidic devel::bugtracker devel::buildtools devel::code-generator devel::compiler devel::debian devel::debugger devel::doc devel::docsystem devel::ecma-cli devel::editor devel::examples devel::ide devel::interpreter devel::i18n devel::library devel::machinecode devel::modelling devel::packaging devel::prettyprint devel::profiler devel::rcs devel::rpc devel::runtime devel::testing-qa devel::ui-builder devel::web field::arts field::astronomy field::aviation field::biology field::biology:bioinformatics field::biology:molecular field::biology:structural field::chemistry field::computer-science field::electronics field::finance field::genealogy field::geography field::geology field::linguistics field::mathematics field::medicine field::medicine:imaging field::meteorology field::physics field::religion field::statistics game::adventure game::arcade game::board game::board:chess game::card game::demos game::fps game::mud game::platform game::puzzle game::rpg game::rpg:rogue game::simulation game::sport game::sport:racing game::strategy game::tetris game::toys game::typing junior::arcade junior::games-gl junior::meta mail::filters mail::imap mail::list mail::notification mail::pop mail::smtp mail::delivery-agent mail::transport-agent mail::user-agent office::finance office::groupware office::presentation office::project-management office::spreadsheet works-with::3dmodel works-with::archive works-with::audio works-with::biological-sequence works-with::bugs works-with::calendar works-with::db works-with::dictionary works-with::dtp works-with::fax works-with::file works-with::font works-with::graphs works-with::im works-with::logfile works-with::mail works-with::music-notation works-with::network-traffic works-with::people works-with::pim works-with::image works-with::image:raster works-with::image:vector works-with::semantic-data works-with::software:package works-with::software:running works-with::software:source works-with::spreadsheet works-with::text works-with::unicode works-with::vcs works-with::video works-with-format::bib works-with-format::chm works-with-format::diff works-with-format::djvu works-with-format::docbook works-with-format::dvi works-with-format::elf works-with-format::epub works-with-format::gif works-with-format::xml:gpx works-with-format::html works-with-format::ical works-with-format::info works-with-format::iso9660 works-with-format::jpg works-with-format::json works-with-format::ldif works-with-format::man works-with-format::mp3 works-with-format::mpc works-with-format::odf works-with-format::oggtheora works-with-format::oggvorbis works-with-format::pdf works-with-format::plaintext works-with-format::png works-with-format::po works-with-format::postscript works-with-format::rdf:json-ld works-with-format::rdf:n3 works-with-format::rdf:ntriples works-with-format::rdf:turtle works-with-format::rdf:xml works-with-format::sgml works-with-format::svg works-with-format::swf works-with-format::tar works-with-format::tex works-with-format::tiff works-with-format::vrml works-with-format::wav works-with-format::xml works-with-format::xml:rss works-with-format::xml:xslt works-with-format::zip system::cloud system::embedded system::laptop system::mobile system::server system::virtual security::antivirus security::authentication security::cryptography security::firewall security::forensics security::ids security::integrity security::log-analyzer security::privacy sound::compression sound::midi sound::mixer sound::player sound::recorder sound::sequencer sound::speech suite::apache suite::bsd suite::debian suite::eclipse suite::emacs suite::gforge suite::gimp suite::gkrellm suite::gnome suite::gnu suite::gnustep suite::gpe suite::kde suite::mozilla suite::netscape suite::openoffice suite::openstack suite::opie suite::postgresql suite::roxen suite::samba suite::sugar suite::webmin suite::xfce suite::xmms2 suite::zope use::analysing use::browsing use::calculating use::chatting use::checking use::comparing use::compressing use::configuring use::converting use::dialing use::downloading use::driver use::editing use::entertaining use::filtering use::gameplaying use::learning use::login use::measuring use::monitor use::organizing use::playing use::printing use::proxying use::routing use::searching use::scanning use::simulating use::storing use::synchronizing use::timekeeping use::transmission use::typesetting use::viewing use::text-formatting web::application web::appserver web::blog web::browser web::cms web::cgi web::commerce web::forum web::microblog web::portal web::scripting web::search-engine web::server web::wiki science::calculation science::modelling science::data-acquisition science::plotting science::bibliography science::publishing science::visualisation AppRecommender-0.7.5/apprecommender/tests/test_data/test_popcon000066400000000000000000000005451306751311600250260ustar00rootroot00000000000000POPULARITY-CONTEST-0 TIME:1309407492 ID:8b44fcdbcf676e711a153d5db099test ARCH:i386 POPCONVER:1.52 1309407475 1303670994 perl-base /usr/bin/perl 1309407451 1303670982 libc6-i686 /lib/i686/cmov/libc-2.11.2.so 1309407450 1303670973 libc6 /lib/ld-2.11.2.so 1309407434 1295654294 dash /bin/dash 0 0 libusbmuxd1 END-POPULARITY-CONTEST-0 TIME:1309407492 AppRecommender-0.7.5/apprecommender/tests/test_data_classification.py000066400000000000000000000005561306751311600261750ustar00rootroot00000000000000#!/usr/bin/env python import unittest from apprecommender.data_classification import linear_percent_function class DataClassificationTests(unittest.TestCase): def test_linear_percent_function(self): modify, access, time_now = 100, 175, 200 percent = linear_percent_function(modify, access, time_now) self.assertEqual(0.75, percent) AppRecommender-0.7.5/apprecommender/tests/test_decider.py000066400000000000000000000070361306751311600236100ustar00rootroot00000000000000import unittest from apprecommender.decider import PkgInitDecider class PkgInitDeciderTests(unittest.TestCase): def setUp(self): self.pkg_init_decider = PkgInitDecider() def test_python_pkg_regex(self): pkg = 'python-test' self.assertTrue(self.pkg_init_decider.is_pkg_a_prefix_or_suffix(pkg)) pkg = 'python3-test' self.assertTrue(self.pkg_init_decider.is_pkg_a_prefix_or_suffix(pkg)) pkg = 'test-pkg' self.assertFalse(self.pkg_init_decider.is_pkg_a_prefix_or_suffix(pkg)) def test_ruby_pkg_regex(self): pkg = 'ruby-test' self.assertTrue(self.pkg_init_decider.is_pkg_a_prefix_or_suffix(pkg)) pkg = 'test-pkg' self.assertFalse(self.pkg_init_decider.is_pkg_a_prefix_or_suffix(pkg)) def test_texlive_pkg_regex(self): pkg = 'texlive-test' self.assertTrue(self.pkg_init_decider.is_pkg_a_prefix_or_suffix(pkg)) pkg = 'test-pkg' self.assertFalse(self.pkg_init_decider.is_pkg_a_prefix_or_suffix(pkg)) def test_pkg_gir_regex(self): pkg = 'gir1.2-test' self.assertTrue(self.pkg_init_decider.is_pkg_a_prefix_or_suffix(pkg)) pkg = 'test-pkg' self.assertFalse(self.pkg_init_decider.is_pkg_a_prefix_or_suffix(pkg)) def test_pkg_golang_regex(self): pkg = 'golang-test' self.assertTrue(self.pkg_init_decider.is_pkg_a_prefix_or_suffix(pkg)) pkg = 'test-pkg' self.assertFalse(self.pkg_init_decider.is_pkg_a_prefix_or_suffix(pkg)) def test_pkg_data_regex(self): pkg = 'test-data' self.assertTrue(self.pkg_init_decider.is_pkg_a_prefix_or_suffix(pkg)) pkg = 'test-pkg' self.assertFalse(self.pkg_init_decider.is_pkg_a_prefix_or_suffix(pkg)) def test_pkg_dev_regex(self): pkg = 'test-dev' self.assertTrue(self.pkg_init_decider.is_pkg_a_prefix_or_suffix(pkg)) pkg = 'test-pkg' self.assertFalse(self.pkg_init_decider.is_pkg_a_prefix_or_suffix(pkg)) def test_pkg_utils_regex(self): pkg = 'test-utils' self.assertTrue(self.pkg_init_decider.is_pkg_a_prefix_or_suffix(pkg)) pkg = 'test-utils-1.9' self.assertTrue(self.pkg_init_decider.is_pkg_a_prefix_or_suffix(pkg)) pkg = 'test-pkg' self.assertFalse(self.pkg_init_decider.is_pkg_a_prefix_or_suffix(pkg)) def test_pkg_common_regex(self): pkg = 'test-common' self.assertTrue(self.pkg_init_decider.is_pkg_a_prefix_or_suffix(pkg)) pkg = 'test-pkg' self.assertFalse(self.pkg_init_decider.is_pkg_a_prefix_or_suffix(pkg)) def test_pkg_fonts_regex(self): pkg = 'test-fonts' self.assertTrue(self.pkg_init_decider.is_pkg_a_prefix_or_suffix(pkg)) pkg = 'test-pkg' self.assertFalse(self.pkg_init_decider.is_pkg_a_prefix_or_suffix(pkg)) def test_pkg_png_regex(self): pkg = 'test-png' self.assertTrue(self.pkg_init_decider.is_pkg_a_prefix_or_suffix(pkg)) pkg = 'test-pkg' self.assertFalse(self.pkg_init_decider.is_pkg_a_prefix_or_suffix(pkg)) def test_pkg_core_regex(self): pkg = 'test-core' self.assertTrue(self.pkg_init_decider.is_pkg_a_prefix_or_suffix(pkg)) pkg = 'test-pkg' self.assertFalse(self.pkg_init_decider.is_pkg_a_prefix_or_suffix(pkg)) def test_pkg_default_regex(self): pkg = 'test-default' self.assertTrue(self.pkg_init_decider.is_pkg_a_prefix_or_suffix(pkg)) pkg = 'test-pkg' self.assertFalse(self.pkg_init_decider.is_pkg_a_prefix_or_suffix(pkg)) AppRecommender-0.7.5/apprecommender/tests/test_evaluation.py000066400000000000000000000067711306751311600243650ustar00rootroot00000000000000#!/usr/bin/env python """ evaluationTests - Evaluation class test case """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ import unittest from apprecommender.evaluation import (Accuracy, Precision, Recall, Coverage, Evaluation, CrossValidationRecommender) from apprecommender.recommender import RecommendationResult class MetricsTests(unittest.TestCase): @classmethod def setUpClass(self): repository = ['apple', 'grape', 'pineaple', 'melon', 'watermelon', 'orange'] real = RecommendationResult(dict.fromkeys(['apple', 'grape', 'pineaple', 'melon'], 1)) predicted = RecommendationResult(dict.fromkeys(['apple', 'grape', 'orange'], 1)) self.evaluation = Evaluation(predicted, real, len(repository)) def test_class_accuracy(self): accuracy = Accuracy().run(self.evaluation) self.assertEqual(accuracy, 0.5) def test_precision(self): precision = Precision().run(self.evaluation) self.assertEqual("%.2f" % precision, "0.67") def test_recall(self): recall = Recall().run(self.evaluation) self.assertEqual(recall, 0.5) def test_coverage(self): evaluations_set = set() evaluations_set.add(self.evaluation) coverage = Coverage().run(evaluations_set) self.assertEqual(coverage, 0.5) def test_evaluation(self): self.assertEqual(self.evaluation.true_positive, ['apple', 'grape']) self.assertEqual(self.evaluation.false_positive, ['orange']) self.assertEqual(self.evaluation.false_negative, ['pineaple', 'melon']) class CrossValidationTests(unittest.TestCase): def create_cross_validation(self, partition_proportion, rounds, rec, metrics_list, result_proportion): return CrossValidationRecommender(partition_proportion, rounds, rec, metrics_list, result_proportion) def test_get_partition_size(self): cross_validation = self.create_cross_validation(0.7, 1, None, [], 1) cross_item_score = {'item1': [1, 0, 1], 'item2': [1, 0, 1], 'item3': [1, 0, 1], 'item4': [1, 0, 1], 'item5': [1, 0, 1], 'item6': [1, 0, 1], 'item7': [1, 0, 1], 'item8': [1, 0, 1], 'item9': [1, 0, 1], 'item10': [1, 0, 1]} expected_result = 7 self.assertEqual(expected_result, cross_validation.get_partition_size(cross_item_score)) AppRecommender-0.7.5/apprecommender/tests/test_initialize.py000066400000000000000000000010571306751311600243470ustar00rootroot00000000000000#!/usr/bin/env python import unittest from apprecommender.initialize import Initialize class InitializeTests(unittest.TestCase): def test_get_tags(self): initialize = Initialize() tags = initialize.get_tags() self.assertTrue(len(tags) > 0) combined_tags = ''.join(tags) for tag in Initialize.EXCLUDED_TAGS: self.assertTrue(tag not in combined_tags) def test_get_axipkgs(self): initialize = Initialize() pkgs = initialize.get_axipkgs() self.assertTrue(len(pkgs) > 0) AppRecommender-0.7.5/apprecommender/tests/test_ml/000077500000000000000000000000001306751311600222415ustar00rootroot00000000000000AppRecommender-0.7.5/apprecommender/tests/test_ml/test_bayes_matrix.py000066400000000000000000000104271306751311600263450ustar00rootroot00000000000000#!/usr/bin/env python import unittest import numpy as np from apprecommender.ml.bayes_matrix import BayesMatrix class PkgClassificationTests(unittest.TestCase): def setUp(self): self.bayes_matrix = BayesMatrix() def test_training(self): data_matrix = np.matrix("1 0 1 0 1; 0 1 1 0 1; 1 0 0 1 1; 1 0 1 1 0;\ 0 1 1 1 0") classifications = np.matrix([[1], [2], [0], [1], [2]]) order_of_classifications = [0, 1, 2] prob = np.matrix("1 0 0 1 1; 1 0 1 0.5 0.5; 0 1 1 0.5 0.5").astype( float) self.bayes_matrix = BayesMatrix() self.bayes_matrix.training(data_matrix, classifications, order_of_classifications) self.assertTrue(np.allclose(prob, self.bayes_matrix.prob)) def test_get_classification(self): self.bayes_matrix = BayesMatrix() self.bayes_matrix.data = np.matrix( "1 0 1 0 1; 0 1 1 0 1; 1 0 0 1 1; 1 0 1 1 0;\ 0 1 1 1 0").astype(float) self.bayes_matrix.labels = np.matrix("0; 1; 2").astype(float) self.bayes_matrix.label_probability = (np.matrix( "0.2; 0.4; 0.4").astype(float)) self.bayes_matrix.order_of_classifications = [0, 1, 2] self.bayes_matrix.used_order_of_classifications = [0, 1, 2] self.bayes_matrix.prob = np.matrix( "1 0 0 1 1; 1 0 1 0.5 0.5; 0 1 1 0.5 0.5").astype(float) attribute_vector = np.matrix("1 0 1 1 0") self.assertEqual( 1, self.bayes_matrix.get_classification(attribute_vector)) def test_convert_classifications_to_numbers(self): classifications = np.matrix([['M'], ['B'], ['G']]) order_of_classifications = ['B', 'M', 'G'] expected = np.array([[1], [0], [2]]) actual = self.bayes_matrix.convert_classifications_to_number( classifications, order_of_classifications) for index, label in enumerate(expected): self.assertEqual(label[0], actual[index, 0]) def test_get_used_order_of_classifications(self): classifications = np.matrix([['B'], ['G']]) order_of_classifications = ['B', 'M', 'G'] expected = ['B', 'G'] actual = self.bayes_matrix.get_used_order_of_classifications( classifications, order_of_classifications) self.assertEquals(expected, actual) classifications = np.matrix([['M'], ['M'], ['B'], ['G']]) order_of_classifications = ['B', 'M', 'G'] expected = ['B', 'M', 'G'] actual = self.bayes_matrix.get_used_order_of_classifications( classifications, order_of_classifications) self.assertEquals(expected, actual) classifications = np.matrix([['M'], ['G']]) order_of_classifications = ['B', 'M', 'G'] expected = ['M', 'G'] actual = self.bayes_matrix.get_used_order_of_classifications( classifications, order_of_classifications) classifications = np.matrix([['B']]) order_of_classifications = ['B', 'M', 'G'] expected = ['B'] actual = self.bayes_matrix.get_used_order_of_classifications( classifications, order_of_classifications) classifications = np.matrix([['B'], ['D'], ['F']]) order_of_classifications = ['A', 'B', 'C', 'D', 'E', 'F', 'G'] expected = ['B', 'D', 'F'] actual = self.bayes_matrix.get_used_order_of_classifications( classifications, order_of_classifications) self.assertEquals(expected, actual) classifications = np.matrix([['B'], ['D'], ['F']]) order_of_classifications = ['A', 'B', 'C', 'D', 'E', 'F'] expected = ['B', 'D', 'F'] actual = self.bayes_matrix.get_used_order_of_classifications( classifications, order_of_classifications) self.assertEquals(expected, actual) def test_dont_change_labels_when_run_training(self): data_matrix = np.matrix("1 0 1 0 1; 0 1 1 0 1; 1 0 0 1 1; 1 0 1 1 0") classifications = np.matrix([[1], [2], [1], [2]]) labels = [0, 1, 2] self.bayes_matrix = BayesMatrix() self.bayes_matrix.training(data_matrix, classifications, labels) expected_labels = [0, 1, 2] self.assertEquals(expected_labels, labels) AppRecommender-0.7.5/apprecommender/tests/test_ml/test_evaluation.py000066400000000000000000000266571306751311600260410ustar00rootroot00000000000000import unittest from collections import OrderedDict from numpy import array, matrix from apprecommender.ml.cross_validation import (ConfusionMatrix, CrossValidationBVA, Evaluation) from apprecommender.evaluation import (SimpleAccuracy, Precision, Recall, FPR, F_score, MCC, Accuracy) class ConfusionMatrixTest(unittest.TestCase): def test_confusion_matrix_values(self): predicted_results = array([[1], [0], [1], [0]]) real_results = array([[1], [0], [0], [1]]) confusion_matrix = ConfusionMatrix(predicted_results, real_results) confusion_matrix.run() tp, tn, fp, fn = 1, 1, 1, 1 self.assertEqual(tp, confusion_matrix.true_positive_len) self.assertEqual(tn, confusion_matrix.true_negative_len) self.assertEqual(fp, confusion_matrix.false_positive_len) self.assertEqual(fn, confusion_matrix.false_negative_len) predicted_results = array([[1], [1], [1], [0]]) real_results = array([[1], [1], [0], [1]]) confusion_matrix = ConfusionMatrix(predicted_results, real_results) confusion_matrix.run() tp, tn, fp, fn = 2, 0, 1, 1 self.assertEqual(tp, confusion_matrix.true_positive_len) self.assertEqual(tn, confusion_matrix.true_negative_len) self.assertEqual(fp, confusion_matrix.false_positive_len) self.assertEqual(fn, confusion_matrix.false_negative_len) class EvaluationTest(unittest.TestCase): def create_evaluation(self, predicted_values, real_values, labels): return Evaluation(predicted_values, real_values, labels) def test_evaluation_simple_accuracy(self): labels = [1, 2, 3] predicted_values = array([[1], [2], [3], [2], [1]]) real_values = array([[1], [2], [2], [1], [3]]) metric = SimpleAccuracy() evaluation = self.create_evaluation(predicted_values, real_values, labels) results = evaluation.run(metric) expected_label_1 = 0.6 expected_label_2 = 0.6 expected_label_3 = 0.6 self.assertEquals(expected_label_1, results[1]) self.assertEquals(expected_label_2, results[2]) self.assertEquals(expected_label_3, results[3]) class CrossValidationTests(unittest.TestCase): def create_cross_validation_ml(self, pkg_data, partition_proportion, rounds, metrics_list, labels): return CrossValidationBVA( pkg_data, partition_proportion, rounds, metrics_list, labels) def compare_column_matrix(self, expected_matrix, actual_matrix): self.assertEquals(expected_matrix.shape, actual_matrix.shape) num_itens = actual_matrix.shape[0] for i in range(num_itens): self.assertEqual(expected_matrix[i, 0], actual_matrix[i, 0]) def test_get_real_results(self): cross_validation_ml = self.create_cross_validation_ml( None, 0.1, 1, [], []) test_data = {'test1': [1, 0, 1, 0, 'T'], 'test2': [1, 1, 1, 0, 'F']} expected_result = array([['T'], ['F']]) actual_result = cross_validation_ml.get_real_results(test_data) self.compare_column_matrix(expected_result, actual_result) def test_cross_validation_process(self): data_matrix = (('test1', [1, 0, 1, 0, 1, 1, 1, 1, 'G']), ('test2', [0, 1, 0, 1, 1, 1, 1, 0, 'M']), ('test3', [1, 0, 1, 0, 1, 0, 0, 1, 'B']), ('test4', [0, 0, 0, 0, 1, 1, 1, 1, 'M']), ('test5', [1, 1, 1, 1, 0, 0, 0, 1, 'G']), ('test6', [1, 1, 0, 0, 1, 1, 0, 0, 'M']), ('test7', [0, 0, 1, 0, 1, 0, 1, 1, 'B']), ('test8', [1, 1, 1, 0, 0, 0, 1, 0, 'G']), ('test9', [0, 1, 1, 0, 0, 1, 1, 1, 'B']), ('test10', [1, 1, 1, 0, 1, 0, 0, 1, 'G'])) data_matrix = OrderedDict(data_matrix) partition_proportion = 0.7 rounds = 1 metrics_list = [SimpleAccuracy()] labels = ['B', 'M', 'G'] cross_validation_ml = CrossValidationBVA( data_matrix, partition_proportion, rounds, metrics_list, labels) self.assertEquals(len(data_matrix), len(cross_validation_ml.get_user_score(None))) expected_num_B = 3 # noqa expected_num_G = 4 # noqa expected_num_M = 3 # noqa for label in labels: self.assertEqual(eval('expected_num_{0}'.format(label)), len(cross_validation_ml.label_groups[label])) expected_num_data = 10 self.assertEqual(expected_num_data, len(cross_validation_ml.pkg_data)) bayes_model = cross_validation_ml.get_model(data_matrix) data = array([[1, 0, 1, 0, 1, 1, 1, 1], [0, 1, 0, 1, 1, 1, 1, 0], [1, 0, 1, 0, 1, 0, 0, 1], [0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 0, 1], [1, 1, 0, 0, 1, 1, 0, 0], [0, 0, 1, 0, 1, 0, 1, 1], [1, 1, 1, 0, 0, 0, 1, 0], [0, 1, 1, 0, 0, 1, 1, 1], [1, 1, 1, 0, 1, 0, 0, 1]]) labels_number = matrix([[0], [1], [2]]) classifications_numbers = matrix([[2], [1], [0], [1], [2], [1], [0], [2], [0], [2]]) histogram = array([[3], [3], [4]]) actual_labels_number = bayes_model.labels actual_classifications_number = bayes_model.classifications actual_histogram = bayes_model.histogram self.assertEquals(data.shape, bayes_model.data.shape) self.compare_column_matrix(labels_number, actual_labels_number) self.compare_column_matrix(classifications_numbers, actual_classifications_number) self.compare_column_matrix(histogram, actual_histogram) predictions = cross_validation_ml.get_predicted_results(bayes_model, data_matrix) expected_shape = (10, 1) self.assertEquals(expected_shape, predictions.shape) for i in range(len(predictions)): self.assertIn(predictions[i, 0], labels) real_results = cross_validation_ml.get_real_results(data_matrix) cross_validation_ml.run_metrics(predictions, real_results) class MetricsTest(unittest.TestCase): def test_simple_accuracy(self): predicted_results = array([[1], [1], [0], [0]]) actual_results = array([[1], [1], [0], [1]]) labels = [0, 1] metric = SimpleAccuracy() evaluation = Evaluation(predicted_results, actual_results, labels) results = evaluation.run(metric) expected_1 = 0.75 expected_0 = 0.75 self.assertEquals(expected_1, results[1]) self.assertEquals(expected_0, results[0]) def test_precision(self): predicted_results = array([[1], [1], [0], [0]]) actual_results = array([[1], [1], [0], [1]]) labels = [0, 1] metric = Precision() evaluation = Evaluation(predicted_results, actual_results, labels) results = evaluation.run(metric) expected_1 = 1 expected_0 = 0.5 self.assertEquals(expected_1, results[1]) self.assertEquals(expected_0, results[0]) predicted_results = array([[0], [0], [0], [0]]) evaluation = Evaluation(predicted_results, actual_results, labels) results = evaluation.run(metric) expected_1 = 0 expected_0 = 0.25 self.assertEquals(expected_1, results[1]) self.assertEquals(expected_0, results[0]) def test_recall(self): predicted_results = array([[1], [1], [0], [0], [1]]) actual_results = array([[1], [1], [0], [1], [1]]) labels = [0, 1] metric = Recall() evaluation = Evaluation(predicted_results, actual_results, labels) results = evaluation.run(metric) expected_1 = 0.75 expected_0 = 1 self.assertEquals(expected_1, results[1]) self.assertEquals(expected_0, results[0]) predicted_results = array([[0], [0], [1], [0], [0]]) actual_results = array([[1], [1], [0], [1], [1]]) evaluation = Evaluation(predicted_results, actual_results, labels) results = evaluation.run(metric) expected_1 = 0 expected_0 = 0 self.assertEquals(expected_1, results[1]) self.assertEquals(expected_0, results[0]) def test_fpr(self): predicted_results = array([[1], [1], [0], [1], [0]]) actual_results = array([[0], [0], [0], [1], [0]]) labels = [0, 1] metric = FPR() evaluation = Evaluation(predicted_results, actual_results, labels) results = evaluation.run(metric) expected_1 = 0.5 expected_0 = 0 self.assertEquals(expected_1, results[1]) self.assertEquals(expected_0, results[0]) def test_f1_score(self): predicted_results = array([[1], [1], [0], [1], [0], [1]]) actual_results = array([[1], [1], [1], [0], [1], [1]]) labels = [0, 1] metric = F_score(1) evaluation = Evaluation(predicted_results, actual_results, labels) results = evaluation.run(metric) expected_1 = 0.6666666666666666 expected_0 = 0 self.assertAlmostEqual(expected_1, results[1]) self.assertEqual(expected_0, results[0]) def test_f0_5_score(self): predicted_results = array([[1], [1], [0], [1], [0], [1]]) actual_results = array([[1], [1], [1], [0], [1], [1]]) labels = [0, 1] metric = F_score(0.5) evaluation = Evaluation(predicted_results, actual_results, labels) results = evaluation.run(metric) expected_1 = 0.71428571 expected_0 = 0 self.assertAlmostEqual(expected_1, results[1]) self.assertEqual(expected_0, results[0]) def test_f2_score(self): predicted_results = array([[1], [1], [0], [1], [0], [1]]) actual_results = array([[1], [1], [1], [0], [1], [1]]) labels = [0, 1] metric = F_score(2) evaluation = Evaluation(predicted_results, actual_results, labels) results = evaluation.run(metric) expected_1 = 0.625 expected_0 = 0 self.assertAlmostEqual(expected_1, results[1]) self.assertEqual(expected_0, results[0]) def test_mcc_score(self): predicted_results = array([[1], [1], [0], [1], [0], [1]]) actual_results = array([[1], [1], [1], [0], [0], [1]]) labels = [0, 1] metric = MCC() evaluation = Evaluation(predicted_results, actual_results, labels) results = evaluation.run(metric) expected_1, expected_0 = 0.25, 0.25 self.assertAlmostEqual(expected_1, results[1]) self.assertEqual(expected_0, results[0]) def test_accuracy(self): predicted_results = array([[1], [1], [0], [1], [0], [1]]) actual_results = array([[1], [1], [1], [0], [0], [1]]) labels = [0, 1] metric = Accuracy() evaluation = Evaluation(predicted_results, actual_results, labels) results = evaluation.run(metric) expected_1, expected_0 = 0.625, 0.625 self.assertAlmostEqual(expected_1, results[1]) self.assertEqual(expected_0, results[0]) AppRecommender-0.7.5/apprecommender/tests/test_ml/test_pkg_classification.py000066400000000000000000000051231306751311600275070ustar00rootroot00000000000000#!/usr/bin/env python import unittest import xapian from mock import patch from apprecommender.apt_cache import AptCache from apprecommender.ml.data import MachineLearningData class PkgClassificationTests(unittest.TestCase): def setUp(self): self.ml_data = MachineLearningData() self.cache = AptCache() def test_get_pkg_debtags(self): vim_debtags = ['devel::editor', 'implemented-in::c', 'interface::commandline', 'interface::text-mode', 'role::program', 'scope::application', 'uitoolkit::ncurses', 'use::editing', 'works-with::text', 'works-with::unicode'] axi_path = "/var/lib/apt-xapian-index/index" axi = xapian.Database(axi_path) vim_debtags_result = self.ml_data.get_pkg_debtags(axi, 'vim') for debtag in vim_debtags: self.assertTrue(debtag in vim_debtags_result) @patch('apprecommender.ml.data.MachineLearningData.get_pkg_description') def test_get_pkg_terms(self, mock_description): mock_description.return_value = 'Vim is an text editor written in C' vim_terms = [u'vim', u'text', u'editor'] vim_terms_result = self.ml_data.get_pkg_terms(self.cache, 'vim') for term in vim_terms: self.assertTrue(term in vim_terms_result) def test_create_row_table_list(self): labels_name = ['devel::editor', 'implemented-in::c', 'complet', 'contain', 'syntax', 'unix', 'version'] pkg_elements = ['implemented-in::c', 'complet'] row_list_to_assert = [0, 1, 1, 0, 0, 0, 0] row_list = self.ml_data.create_row_table_list(labels_name, pkg_elements) self.assertEqual(row_list_to_assert, row_list) @patch('apprecommender.ml.data.MachineLearningData.get_pkg_description') def test_get_pkg_classification(self, mock_description): mock_description.return_value = 'vim is an text editor written in c' axi_path = "/var/lib/apt-xapian-index/index" axi = xapian.Database(axi_path) pkgs = {'vim': 'EX'} debtags_name = ['devel::editor', 'implemented-in::c', 'devel::interpreter', 'devel::lang:python'] terms_name = ['vim', 'editor', 'python'] assert_pkgs_classification = {'vim': [1, 1, 0, 0, 1, 1, 0, 'EX']} pkgs_classification = self.ml_data.get_pkgs_table_classification( axi, pkgs, self.cache, debtags_name, terms_name) self.assertEqual(assert_pkgs_classification, pkgs_classification) AppRecommender-0.7.5/apprecommender/tests/test_ml/test_pkg_time.py000066400000000000000000000070611306751311600254550ustar00rootroot00000000000000#!/usr/bin/env python import unittest from mock import patch from apprecommender.ml.pkg_time import PkgTime class PkgTimeTests(unittest.TestCase): def setUp(self): self.pkg_time = PkgTime() @patch('commands.getoutput') @patch('apprecommender.ml.pkg_time.get_time_from_package') def test_invalid_paths_get_best_time(self, mock_time, mock_command): mock_time.return_value = [10, 10] mock_command.return_value = '/usr/lib/a-b-c/\n' access, modify = self.pkg_time.get_best_time('test') self.assertEqual(access, 0) self.assertEqual(modify, 0) mock_command.return_value = '/usr/lib/a-b-c-d/\n' access, modify = self.pkg_time.get_best_time('test') self.assertEqual(access, 0) self.assertEqual(modify, 0) mock_command.return_value = '/usr/lib/mime/packages/test\n' access, modify = self.pkg_time.get_best_time('test') self.assertEqual(access, 0) self.assertEqual(modify, 0) mock_command.return_value = '/etc/init.d/test\n' access, modify = self.pkg_time.get_best_time('test') self.assertEqual(access, 0) self.assertEqual(modify, 0) mock_command.return_value = '/media/files/test\n' access, modify = self.pkg_time.get_best_time('test') self.assertEqual(access, 0) self.assertEqual(modify, 0) @patch('commands.getoutput') @patch('apprecommender.ml.pkg_time.get_time_from_package') def test_valid_paths_get_best_time(self, mock_time, mock_command): mock_time.return_value = [10, 10] mock_command.return_value = '/usr/lib/a-b/\n' access, modify = self.pkg_time.get_best_time('test') self.assertEqual(access, 10) self.assertEqual(modify, 10) mock_time.return_value = [20, 20] mock_command.return_value = '/usr/bin/test\n' access, modify = self.pkg_time.get_best_time('test') self.assertEqual(access, 20) self.assertEqual(modify, 20) mock_time.return_value = [30, 30] mock_command.return_value = '/usr/game/test\n' access, modify = self.pkg_time.get_best_time('test') self.assertEqual(access, 30) self.assertEqual(modify, 30) mock_time.return_value = [40, 40] mock_command.return_value = '/usr/lib/test/test\n' access, modify = self.pkg_time.get_best_time('test') self.assertEqual(access, 40) self.assertEqual(modify, 40) @patch('commands.getoutput') @patch('apprecommender.ml.pkg_time.get_time_from_package') def test_invalid_files_get_best_time(self, mock_time, mock_command): mock_time.return_value = [10, 10] mock_command.return_value = '/usr/bin/test.desktop\n' access, modify = self.pkg_time.get_best_time('test') self.assertEqual(access, 0) self.assertEqual(modify, 0) mock_time.return_value = [10, 10] mock_command.return_value = '/usr/games/test.conf\n' access, modify = self.pkg_time.get_best_time('test') self.assertEqual(access, 0) self.assertEqual(modify, 0) mock_time.return_value = [10, 10] mock_command.return_value = '/usr/lib/python/test.egg-info\n' access, modify = self.pkg_time.get_best_time('test') self.assertEqual(access, 0) self.assertEqual(modify, 0) mock_time.return_value = [10, 10] mock_command.return_value = '/usr/lib/test/test.txt\n' access, modify = self.pkg_time.get_best_time('test') self.assertEqual(access, 0) self.assertEqual(modify, 0) AppRecommender-0.7.5/apprecommender/tests/test_ml/test_utils.py000066400000000000000000000012621306751311600250130ustar00rootroot00000000000000import unittest from numpy import array from apprecommender.ml.utils import create_binary_matrix class MLUtilsTest(unittest.TestCase): def test_create_binary_matrix(self): test_matrix = array([[2], [3], [2], [4]]) classification = 2 default_value = 0 expected_result = array([[1], [0], [1], [0]]) actual_result = create_binary_matrix(test_matrix, classification, default_value) self.assertEquals(expected_result.shape, actual_result.shape) num_data = len(actual_result) for i in range(num_data): self.assertEqual(expected_result[i][0], actual_result[i][0]) AppRecommender-0.7.5/apprecommender/tests/test_recommender.py000066400000000000000000000077241306751311600245150ustar00rootroot00000000000000#!/usr/bin/env python """ recommenderTests - Recommender class test case """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ import unittest from apprecommender.recommender import RecommendationResult, Recommender from apprecommender.user import User from apprecommender.config import Config from apprecommender.strategy import (ContentBased, MachineLearningBVA, MachineLearningBOW, PackageReference) class RecommendationResultTests(unittest.TestCase): @classmethod def setUpClass(self): self.result = RecommendationResult({"gimp": 1.5, "inkscape": 3.0, "eog": 1}) def test_str(self): rec = '\n1: inkscape \t vector-based drawing program\n' rec += '2: gimp \t GNU Image Manipulation Program\n' # noqa rec += '3: eog \t Eye of GNOME graphics viewer program\n' # noqa self.assertEqual(self.result.__str__(), rec) def test_get_prediction(self): prediction = [("inkscape", 3.0), ("gimp", 1.5), ("eog", 1)] self.assertEqual(self.result.get_prediction(), prediction) class RecommenderTests(unittest.TestCase): @classmethod def setUpClass(self): cfg = Config() cfg.popcon_index = "test_data/.sample_pxi" cfg.popcon_dir = "test_data/popcon_dir" cfg.clusters_dir = "test_data/clusters_dir" cfg.popcon = 0 self.rec = Recommender() def test_set_strategy(self): self.rec.set_strategy("cb") self.assertIsInstance(self.rec.strategy, ContentBased) self.assertEqual(self.rec.strategy.content, "mix") self.rec.set_strategy("cbt") self.assertIsInstance(self.rec.strategy, ContentBased) self.assertEqual(self.rec.strategy.content, "tag") self.rec.set_strategy("cbd") self.assertIsInstance(self.rec.strategy, ContentBased) self.assertEqual(self.rec.strategy.content, "desc") self.rec.set_strategy("cbtm") self.assertIsInstance(self.rec.strategy, ContentBased) self.assertEqual(self.rec.strategy.content, "time") self.rec.set_strategy("mlbva") self.assertIsInstance(self.rec.strategy, MachineLearningBVA) self.assertEqual(self.rec.strategy.content, "mlbva_mix") self.rec.set_strategy("mlbow") self.assertIsInstance(self.rec.strategy, MachineLearningBOW) self.assertEqual(self.rec.strategy.content, "mlbow_mix") self.rec.set_strategy("mlbva_eset") self.assertIsInstance(self.rec.strategy, MachineLearningBVA) self.assertEqual(self.rec.strategy.content, "mlbva_mix_eset") self.rec.set_strategy("mlbow_eset") self.assertIsInstance(self.rec.strategy, MachineLearningBOW) self.assertEqual(self.rec.strategy.content, "mlbow_mix_eset") self.rec.set_strategy("cbpkg") self.assertIsInstance(self.rec.strategy, PackageReference) self.assertEqual(self.rec.strategy.content, "mix") def test_get_recommendation(self): user = User({"inkscape": 1, "gimp": 1, "eog": 1, "vim": 1}) result = self.rec.get_recommendation(user) self.assertIsInstance(result, RecommendationResult) self.assertGreater(len(result.item_score), 0) AppRecommender-0.7.5/apprecommender/tests/test_run.py000066400000000000000000000025661306751311600230200ustar00rootroot00000000000000#!/usr/bin/env python import unittest import logging import apprecommender.main.cli as apprec from apprecommender.main.options import get_parser from apprecommender.config import Config from apprecommender.ml.data import MachineLearningData class RunTests(unittest.TestCase): def setUp(self): logging.getLogger().disabled = True self.axi_desktopapps = Config().axi_desktopapps parser = get_parser() self.args = vars(parser.parse_args('')) def tearDown(self): Config().axi_desktopapps = self.axi_desktopapps def test_success_run_apprec(self): logging.getLogger().disabled = False result = apprec.run(self.args) self.assertEqual(apprec.SUCCESS, result) def test_error_init_on_run_apprec(self): Config().axi_desktopapps = "asd" result = apprec.run(self.args) self.assertEqual(apprec.ERROR_INIT, result) def test_error_train_on_run_apprec(self): config = Config() strategy = config.strategy config.strategy = 'mlbva' training_path = MachineLearningData.MACHINE_LEARNING_TRAINING MachineLearningData.MACHINE_LEARNING_TRAINING = "error.txt" result = apprec.run(self.args) config.strategy = strategy MachineLearningData.MACHINE_LEARNING_TRAINING = training_path self.assertEqual(apprec.ERROR_TRAIN, result) AppRecommender-0.7.5/apprecommender/tests/test_singleton.py000066400000000000000000000021331306751311600242040ustar00rootroot00000000000000#!/usr/bin/env python """ singletonTests - Singleton class test case """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ import unittest from apprecommender.singleton import Singleton class SingletonTests(unittest.TestCase): def test_creation(self): object_1 = Singleton() object_2 = Singleton() self.assertEqual(id(object_1), id(object_2)) AppRecommender-0.7.5/apprecommender/tests/test_strategy.py000066400000000000000000000040131306751311600240430ustar00rootroot00000000000000#!/usr/bin/env python """ strategyTests - Recommendation strategies classes test case """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ import unittest import xapian from apprecommender.decider import (PkgMatchDecider, PkgExpandDecider, TagExpandDecider) class PkgMatchDeciderTests(unittest.TestCase): def setUp(self): pkgs_list = ["gimp", "eog", "inkscape"] self.decider = PkgMatchDecider(pkgs_list) self.doc = xapian.Document() def test_match(self): self.doc.set_data("emacs") self.assertTrue(self.decider(self.doc)) def test_no_match(self): self.doc.set_data("gimp") self.assertFalse(self.decider(self.doc)) class PkgExpandDeciderTests(unittest.TestCase): def setUp(self): pkgs_list = ["gimp", "eog", "inkscape"] self.decider = PkgExpandDecider(pkgs_list) def test_match(self): self.assertTrue(self.decider("XPemacs")) def test_no_match(self): self.assertFalse(self.decider("XTgimp")) class TagExpandDeciderTests(unittest.TestCase): def setUp(self): self.decider = TagExpandDecider() def test_match(self): self.assertTrue(self.decider("XTgimp")) def test_no_match(self): self.assertFalse(self.decider("gimp")) AppRecommender-0.7.5/apprecommender/tests/test_user.py000066400000000000000000000146031306751311600231650ustar00rootroot00000000000000#!/usr/bin/env python """ userTests - User class test case """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ import unittest import xapian from mock import patch from apprecommender.user import User, LocalSystem, FilterTag, FilterDescription from apprecommender.config import Config from apprecommender.data import SampleAptXapianIndex class FilterTagTests(unittest.TestCase): @classmethod def setUpClass(self): tags_filter = "apprecommender/tests/test_data/tags_filter" self.debtag = "use::searching" with open(tags_filter) as valid_tags: self.valid_tags = [line.strip() for line in valid_tags] def test_call_true(self): self.assertTrue(FilterTag(self.valid_tags)("XT" + self.debtag)) def test_call_false(self): self.assertFalse(FilterTag(self.valid_tags)(self.debtag)) class FilterDescriptionTests(unittest.TestCase): def test_call_true(self): self.assertTrue(FilterDescription()("program")) def test_call_false(self): self.assertFalse(FilterDescription()("XTprogram")) class UserTests(unittest.TestCase): @classmethod def setUpClass(self): cfg = Config() self.axi = xapian.Database(cfg.axi) packages = ["gimp", "aaphoto", "eog", "emacs", "dia", "ferret", "festival", "file", "inkscape", "xpdf"] path = "apprecommender/tests/test_data/.sample_axi" self.sample_axi = SampleAptXapianIndex(packages, self.axi, path) self.user = User({"gimp": 1, "aaphoto": 1, "eog": 1, "emacs": 1}) def test_hash(self): new_user = User(dict()) self.assertIsNotNone(new_user.id) self.assertNotEqual(self.user.id, new_user.id) def test_profile_default(self): new_user = User(dict()) desktop = set(["x11", "accessibility", "game", "junior", "office", "interface::x11"]) self.assertEqual(new_user.demographic_profile, desktop) def test_profile_desktop(self): self.user.set_demographic_profile(set(["desktop"])) desktop = set(["x11", "accessibility", "game", "junior", "office", "interface::x11"]) self.assertEqual(self.user.demographic_profile, desktop) def test_profile_admin(self): self.user.set_demographic_profile(set(["admin"])) admin = set(["admin", "hardware", "mail", "protocol", "network", "security", "web", "interface::web"]) self.assertEqual(self.user.demographic_profile, admin) def test_profile_devel(self): self.user.set_demographic_profile(set(["devel"])) devel = set(["devel", "role::devel-lib", "role::shared-lib"]) self.assertEqual(self.user.demographic_profile, devel) def test_profile_art(self): self.user.set_demographic_profile(set(["art"])) art = set(["field::arts", "sound"]) self.assertEqual(self.user.demographic_profile, art) def test_profile_science(self): self.user.set_demographic_profile(set(["science"])) science = set(["science", "biology", "field::astronomy", "field::aviation", "field::biology", "field::chemistry", "field::eletronics", "field::finance", "field::geography", "field::geology", "field::linguistics", "field::mathematics", "field::medicine", "field::meteorology", "field::physics", "field::statistics"]) self.assertEqual(self.user.demographic_profile, science) def test_multi_profile(self): self.user.set_demographic_profile(set(["devel", "art"])) devel_art = set(["devel", "role::devel-lib", "role::shared-lib", "field::arts", "sound"]) self.assertEqual(self.user.demographic_profile, devel_art) self.user.set_demographic_profile(set(["art", "admin", "desktop"])) desktop_art_admin = set(["x11", "accessibility", "game", "junior", "office", "interface::x11", "field::arts", "sound", "admin", "hardware", "mail", "protocol", "network", "security", "web", "interface::web"]) self.assertEqual(self.user.demographic_profile, desktop_art_admin) def test_items(self): self.assertEqual(set(self.user.items()), set(["gimp", "aaphoto", "eog", "emacs"])) def test_maximal_pkg_profile(self): old_pkg_profile = self.user.items() aaphoto_deps = ["libc6", "libgomp1", "libjasper1", "libjpeg62", "libpng12-0"] libc6_deps = ["libc-bin", "libgcc1"] for pkg in aaphoto_deps + libc6_deps: self.user.item_score[pkg] = 1 self.assertEqual(old_pkg_profile, self.user.maximal_pkg_profile()) class LocalSystemTest(unittest.TestCase): def setUp(self): self.user = LocalSystem() @patch('commands.getoutput') @patch('glob.glob', return_value=['test']) def test_get_apt_installed_pkgs(self, mock_glob, mock_command): mock_command.return_value = 'Commandline: apt install test1 test2\n' apt_pkgs = self.user.get_apt_installed_pkgs() self.assertEqual(2, len(apt_pkgs)) self.assertIn('test1', apt_pkgs) self.assertIn('test2', apt_pkgs) mock_command.return_value = 'Commandline: apt remove test1 test2\n' apt_pkgs = self.user.get_apt_installed_pkgs() self.assertEqual(0, len(apt_pkgs)) mock_command.return_value = 'Commandline: apt upgrade\n' apt_pkgs = self.user.get_apt_installed_pkgs() self.assertEqual(0, len(apt_pkgs)) AppRecommender-0.7.5/apprecommender/user.py000066400000000000000000000412361306751311600207660ustar00rootroot00000000000000#!/usr/bin/env python """ user - python module for classes and methods related to recommenders' users. """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ import commands import datetime import glob import logging import os import pickle import random import re import xapian import apprecommender.data as data from apprecommender.apt_cache import AptCache from apprecommender.config import Config from apprecommender.decider import (FilterTag, FilterDescription, FilterTag_or_Description) from apprecommender.error import Error from apprecommender.singleton import Singleton class DemographicProfile(Singleton): def __init__(self): self.admin = set(["admin", "hardware", "mail", "protocol", "network", "security", "web", "interface::web"]) self.devel = set(["devel", "role::devel-lib", "role::shared-lib"]) self.desktop = set(["x11", "accessibility", "game", "junior", "office", "interface::x11"]) self.art = set(["field::arts", "sound"]) self.science = set(["science", "biology", "field::astronomy", "field::aviation", "field::biology", "field::chemistry", "field::eletronics", "field::finance", "field::geography", "field::geology", "field::linguistics", "field::mathematics", "field::medicine", "field::meteorology", "field::physics", "field::statistics"]) def __call__(self, profiles_set): demographic_profile = set() for profile in profiles_set: profile_str = "self." + profile demographic_profile = (demographic_profile | eval(profile_str, {}, {"self": self})) return demographic_profile class User: """ Define a user of a recommender. """ def __init__(self, item_score, user_id=0, arch=0, demo_profiles_set=0, reference_pkgs=None): """ Set initial user attributes. pkg_profile gets the whole set of items, a random user_id is set if none was provided and the demographic profile defaults to 'desktop'. """ self.item_score = item_score self.pkg_profile = self.items() self.installed_pkgs = data.get_user_installed_pkgs() self.arch = arch self.reference_pkgs = reference_pkgs if reference_pkgs else [] if user_id: self.user_id = user_id else: random.seed() self.id = random.getrandbits(128) if not demo_profiles_set: profiles_set = set(["desktop"]) self.set_demographic_profile(profiles_set) def items(self): """ Return the set of user items. """ return self.item_score.keys() def set_demographic_profile(self, profiles_set): """ Set demographic profle based on labels in 'profiles_set'. """ self.demographic_profile = DemographicProfile()(profiles_set) def content_profile(self, items_repository, content, size, valid_tags=0, time_context=0): """ Get user profile for a specific type of content: packages tags, description or both (mixed and half-half profiles) """ if content == "tag": profile = self.tfidf_profile(items_repository, size, FilterTag(valid_tags), time_context) elif content == "desc": profile = self.tfidf_profile(items_repository, size, FilterDescription(), time_context) elif content == 'mlbow_mix' or content == 'mlbva_mix': self.pkg_profile = self.get_most_usefull_pkgs() profile = self.tfidf_profile(items_repository, size, FilterTag_or_Description(valid_tags), time_context) elif content == "mix": profile = self.tfidf_profile(items_repository, size, FilterTag_or_Description(valid_tags), time_context) elif content == "half": tag_profile = self.tfidf_profile(items_repository, size, FilterTag(valid_tags), time_context) desc_profile = self.tfidf_profile(items_repository, size, FilterDescription(), time_context) profile = tag_profile[:size / 2] + desc_profile[:size / 2] elif content == "time": tag_profile = self.tfidf_profile(items_repository, size, FilterTag(valid_tags), time_context=1) desc_profile = self.tfidf_profile(items_repository, size, FilterDescription(), time_context=1) profile = tag_profile[:size / 2] + desc_profile[:size / 2] elif content == "tag_eset": profile = self.eset_profile(items_repository, size, FilterTag(valid_tags)) elif content == "desc_eset": profile = self.eset_profile(items_repository, size, FilterDescription()) elif content == 'mlbow_mix_eset' or content == 'mlbva_mix_eset': self.pkg_profile = self.get_most_usefull_pkgs() profile = self.eset_profile(items_repository, size, FilterTag_or_Description(valid_tags)) elif content == "mix_eset": profile = self.eset_profile(items_repository, size, FilterTag_or_Description(valid_tags)) elif content == "half_eset": tag_profile = self.eset_profile(items_repository, size, FilterTag(valid_tags)) desc_profile = self.eset_profile(items_repository, size, FilterDescription()) profile = tag_profile[:size / 2] + desc_profile[:size / 2] else: logging.debug("Unknown content type %s." % content) raise Error logging.debug("User %s profile: %s" % (content, profile)) return profile def tfidf_profile(self, items_repository, size, content_filter, time_context=0): """ Return the most relevant tags for the user list of packages based on the sublinear tfidf weight of packages' tags. """ docs = data.axi_search_pkgs(items_repository, self.pkg_profile) # weights = data.tfidf_plus(items_repository,docs,content_filter) weights = data.tfidf_weighting(items_repository, docs, content_filter, time_context=time_context) # Eliminate duplicated stemmed term profile = self._eliminate_duplicated([w[0] for w in weights], size) return profile def eset_profile(self, items_repository, size, content_filter): """ Return most relevant tags for a list of packages. """ # Store package documents in a relevant set enquire = xapian.Enquire(items_repository) docs = data.axi_search_pkgs(items_repository, self.pkg_profile) rset_packages = xapian.RSet() for d in docs: rset_packages.add_document(d.docid) # Get expanded query terms (statistically good differentiators) eset_tags = enquire.get_eset(size * 2, rset_packages, xapian.Enquire.INCLUDE_QUERY_TERMS, 1, content_filter) # Eliminate duplicated stemmed term profile = self._eliminate_duplicated([res.term for res in eset_tags], size) return profile def _eliminate_duplicated(self, sorted_list, size): profile = sorted_list[:size] next_index = size duplicate = 1 while duplicate: duplicate = 0 for term in profile[:]: if term.startswith("Z"): for p in profile[:]: if p.startswith(term.lstrip("Z")): duplicate = 1 profile.remove(p) if len(sorted_list) > next_index: profile.append(sorted_list[next_index]) next_index += 1 return profile def filter_pkg_profile(self, filter_list_or_file): """ Return list of packages from profile listed in the filter_file. """ if type(filter_list_or_file).__name__ == "list": valid_pkgs = filter_list_or_file elif type(filter_list_or_file).__name__ == "str": try: with open(filter_list_or_file) as valid: valid_pkgs = [line.strip() for line in valid] except IOError: logging.critical("Could not open profile filter file: %s" % filter_list_or_file) raise Error else: logging.debug("No filter provided for user profiling.") return self.pkg_profile old_profile_size = len(self.pkg_profile) for pkg in self.pkg_profile[:]: # iterate list copy if pkg not in valid_pkgs: self.pkg_profile.remove(pkg) logging.debug("Discarded package %s during profile filtering" % pkg) profile_size = len(self.pkg_profile) logging.debug("Filtered package profile: reduced packages profile size \ from %d to %d." % (old_profile_size, profile_size)) return self.pkg_profile def maximal_pkg_profile(self): """ Return list of packages that are not dependence of any other package in the list. """ cache = AptCache() old_profile_size = len(self.pkg_profile) for p in self.pkg_profile[:]: # iterate list copy if p in cache: pkg = cache[p] if pkg.candidate: for dep in pkg.candidate.dependencies: for or_dep in dep.or_dependencies: if or_dep.name in self.pkg_profile: self.pkg_profile.remove(or_dep.name) profile_size = len(self.pkg_profile) logging.debug("Maximal package profile: reduced packages profile size \ from %d to %d." % (old_profile_size, profile_size)) return self.pkg_profile def get_most_usefull_pkgs(self): classification_path = Config().user_data_dir classification_path += 'pkgs_classifications.txt' if not os.path.exists(classification_path): return -1 with open(classification_path, 'ra') as data: pkg_classification = pickle.load(data) classifications = {'RU': [], 'U': [], 'NU': []} for pkg, values in pkg_classification.iteritems(): classifications[values[-1]].append(pkg) return classifications['RU'] class RandomPopcon(User): def __init__(self, submissions_dir, arch=0, pkgs_filter=0): """ Set initial parameters. """ len_profile = 0 match_arch = False while len_profile < 100 or not match_arch: path = random.choice([os.path.join(root, submission) for root, dirs, files in os.walk(submissions_dir) for submission in files]) user = PopconSystem(path) print arch print user.arch if arch and user.arch == arch: match_arch = True print "match" if pkgs_filter: user.filter_pkg_profile(pkgs_filter) len_profile = len(user.pkg_profile) print "p", len_profile submission = data.PopconSubmission(path) User.__init__(self, submission.packages, submission.user_id, submission.arch) class PopconSystem(User): def __init__(self, path, user_id=0): """ Set initial parameters. """ submission = data.PopconSubmission(path) if not user_id: user_id = submission.user_id User.__init__(self, submission.packages, user_id, submission.arch) class LocalSystem(User): """ Extend the class User to consider the packages installed on the local system as the set of selected itens. """ def __init__(self, reference_pkgs=None): """ Set initial parameters. """ user_pkgs = self.get_manual_installed_pkgs() item_score = {pkg: 1 for pkg in user_pkgs} self.user_id = "local-" + str(datetime.datetime.now()) User.__init__(self, item_score, reference_pkgs=reference_pkgs) def get_system_pkgs(self): system_pkgs = [] all_pkgs = commands.getoutput("dpkg-query -Wf \ '${Package;-40}${Priority}\n'") priority_terms = set(['important', 'required', 'standard']) for line in all_pkgs.splitlines(): line_split = line.split(' ') pkg_name = line_split[0] pkg_priority = line_split[-1].strip() if (pkg_priority in priority_terms): system_pkgs.append(pkg_name) return system_pkgs def get_apt_installed_pkgs(self): apt_pkgs = set() apt_log = glob.glob('/var/log/apt/history.log*') installed_pkgs_regex = re.compile( r'^Commandline:.+apt.+install\s(.+)', re.MULTILINE) no_remove_pkgs_regex = re.compile(r'--no-remove') automatic_remove_regex = re.compile(r'APT::Get::AutomaticRemove=true') apt_log = reversed(sorted(apt_log)) for log in apt_log: command = 'zcat' if log.endswith('gz') else 'cat' history_files = commands.getoutput( '{} {} | grep "Commandline:"'.format(command, log)) ''' The log_files will hold packages with this format: Commandline: apt install google-chrome-stable Therefore it is necessary to perform another filter on it to only get the package name. ''' for apt_command in history_files.splitlines(): installed_pkgs = installed_pkgs_regex.search(apt_command) no_remove_pkgs = no_remove_pkgs_regex.search(apt_command) automatic_remove_pkgs = automatic_remove_regex.search( apt_command) if (installed_pkgs and not no_remove_pkgs and not automatic_remove_pkgs): pkgs = set(installed_pkgs.group(1).split()) apt_pkgs |= pkgs return apt_pkgs def __get_manual_marked_pkgs(self): list_manual = commands.getoutput('apt-mark showmanual') list_manual = list_manual.splitlines() return set([pkg for pkg in list_manual]) def __remove_lib_packages(self, pkgs): return set([pkg for pkg in pkgs if not re.match(r'^lib', pkg)]) def __remove_apt_packages(self, pkgs): return set([pkg for pkg in pkgs if not re.match(r'^apt', pkg)]) def get_manual_installed_pkgs(self): apt_pkgs = self.get_apt_installed_pkgs() manual_pkgs = self.__get_manual_marked_pkgs() system_pkgs = self.get_system_pkgs() pkgs = apt_pkgs.intersection(manual_pkgs) pkgs = self.__remove_lib_packages(pkgs) pkgs = self.__remove_apt_packages(pkgs) pkgs -= set(system_pkgs) return pkgs AppRecommender-0.7.5/apprecommender/utils.py000066400000000000000000000016231306751311600211440ustar00rootroot00000000000000#!/usr/bin/env python import sys def print_progress_bar(number, n_numbers, message='Progress', bar_length=40): percent = float(number) / float(n_numbers) hashes = '#' * int(round(percent * bar_length)) spaces = ' ' * (bar_length - len(hashes)) percent = int(round(percent * 100)) percent_message = ("\r{}: [{}] [{} / {}] {}%".format(message, hashes + spaces, number, n_numbers, percent)) sys.stdout.write(percent_message) sys.stdout.flush() if number == n_numbers: print '\n' def get_class_and_module_name(cls): class_name = cls.__name__ module_name = cls.__module__ return module_name + '.' + class_name AppRecommender-0.7.5/bin/000077500000000000000000000000001306751311600151775ustar00rootroot00000000000000AppRecommender-0.7.5/bin/apprec.py000077500000000000000000000054511306751311600170330ustar00rootroot00000000000000#!/usr/bin/env python """ AppRecommender - A GNU/Linux application recommender """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ import sys import xapian sys.path.insert(0, '../') from apprecommender.app_recommender import AppRecommender from apprecommender.initialize import Initialize from apprecommender.load_options import LoadOptions from apprecommender.config import Config from apprecommender.strategy import (MachineLearning, MachineLearningBVA, MachineLearningBOW) from apprecommender.data_collect import collect_user_data SUCCESS = 0 ERROR_INIT = 1 ERROR_TRAIN = 2 def check_for_flag(options, short_flag, long_flag): for option, _ in options: if option in (short_flag, long_flag): return True return False def run_apprecommender(options): try: app_recommender = AppRecommender() app_recommender.make_recommendation() return SUCCESS except xapian.DatabaseOpeningError: return ERROR_INIT except IOError: if "ml" in Config().strategy: return ERROR_TRAIN def run(): load_options = LoadOptions() load_options.load() options = load_options.options if check_for_flag(options, '-i', '--init'): print "Initializing AppRecommender" initialize = Initialize() initialize.prepare_data() return SUCCESS elif check_for_flag(options, '-t', '--train'): print "Training machine learning" MachineLearning.train(MachineLearningBVA) MachineLearning.train(MachineLearningBOW) return SUCCESS elif check_for_flag(options, '-c', '--contribute'): collect_user_data.main() else: return run_apprecommender(load_options.options) def main(): result = run() if result is ERROR_INIT: print "\n" print "Please, Initialize AppRecommender" print "Run: apprec.py --init" elif result is ERROR_TRAIN: print "\n" print "Please, run Machine Learning Training" print "Run: apprec.py --train" if __name__ == '__main__': main() AppRecommender-0.7.5/bin/apt_config/000077500000000000000000000000001306751311600173105ustar00rootroot00000000000000AppRecommender-0.7.5/bin/apt_config/__init__.py000066400000000000000000000000001306751311600214070ustar00rootroot00000000000000AppRecommender-0.7.5/bin/apt_config/add_apt_conf.py000077500000000000000000000020341306751311600222650ustar00rootroot00000000000000#!/usr/bin/python import os import sys sys.path.insert(0, "{0}/../../".format(os.path.dirname(__file__))) APT_FOLDER = "/home/%s/.app-recommender/apt_conf" % os.getenv("SUDO_USER") APT_CONF_FILE = '/etc/apt/apt.conf.d/99app-recommender' FILES_FOLDER = os.path.dirname(os.path.abspath(__file__)) POST_INVOKE_PATH = FILES_FOLDER + "/post_invoke.py" PRE_INSTALL_PKGS_PATH = FILES_FOLDER + "/pre_install_pkgs.py" INSTALLED_PKGS_FILE = APT_FOLDER + "/installed_pkgs.txt" def main(): post_invoke = 'DPkg::Post-Invoke {"python %s";};' % POST_INVOKE_PATH pre_install_pkgs = ('DPkg::Pre-Install-Pkgs {"python %s";};' % PRE_INSTALL_PKGS_PATH) print("Creating folder: {}".format(APT_FOLDER)) if not os.path.exists(APT_FOLDER): os.makedirs(APT_FOLDER) print("Creating file: {}".format(APT_CONF_FILE)) with open(APT_CONF_FILE, 'w') as text: text.write(post_invoke) text.write('\n') text.write(pre_install_pkgs) text.write('\n') if __name__ == "__main__": main() AppRecommender-0.7.5/bin/apt_config/clear_apt_conf.py000077500000000000000000000003171306751311600226250ustar00rootroot00000000000000#!/usr/bin/python import os import shutil from add_apt_conf import APT_FOLDER, APT_CONF_FILE def main(): os.remove(APT_CONF_FILE) shutil.rmtree(APT_FOLDER) if __name__ == "__main__": main() AppRecommender-0.7.5/bin/apt_config/post_invoke.py000066400000000000000000000011131306751311600222160ustar00rootroot00000000000000#!/usr/bin/python import commands from add_apt_conf import INSTALLED_PKGS_FILE def main(): with open(INSTALLED_PKGS_FILE, 'r') as text: pre_installed_pkgs = set([line.strip() for line in text]) pkgs = commands.getoutput("apt-mark showmanual") pos_installed_pkgs = set([line.strip() for line in pkgs.splitlines()]) installed_pkgs = list(pos_installed_pkgs - pre_installed_pkgs) if len(installed_pkgs) > 0: print("\n\n") print("installed packages: {}".format(installed_pkgs)) print("\n\n") if __name__ == "__main__": main() AppRecommender-0.7.5/bin/apt_config/pre_install_pkgs.py000066400000000000000000000003261306751311600232230ustar00rootroot00000000000000#!/usr/bin/python import commands from add_apt_conf import INSTALLED_PKGS_FILE def main(): commands.getoutput("apt-mark showmanual > {}".format(INSTALLED_PKGS_FILE)) if __name__ == "__main__": main() AppRecommender-0.7.5/bin/cross_validation.py000077500000000000000000000050221306751311600211160ustar00rootroot00000000000000#!/usr/bin/env python """ CrossValidation - python module for classes and methods related to recommenders evaluation. """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ import os import logging import datetime import sys sys.path.insert(0, '../') from apprecommender.config import Config from apprecommender.evaluation import (CrossValidation, Precision, Recall, F_score, FPR, Accuracy) from apprecommender.recommender import Recommender from apprecommender.user import PopconSystem if __name__ == '__main__': cfg = Config() rec = Recommender() # user = LocalSystem() # user = RandomPopcon(cfg.popcon_dir) # user = RandomPopcon(cfg.popcon_dir,os.path.join(cfg.filters_dir, # "desktopapps")) popcon_entries = "~/.app-recommender/popcon-entries/" \ "00/0001166d0737c6dffb083071e5ee69f5" user = PopconSystem(os.path.expanduser(popcon_entries)) user.filter_pkg_profile(os.path.join(cfg.filters_dir, "desktopapps")) user.maximal_pkg_profile() begin_time = datetime.datetime.now() metrics = [] metrics.append(Precision()) metrics.append(Recall()) metrics.append(F_score(0.5)) metrics.append(Accuracy()) metrics.append(FPR()) validation = CrossValidation(0.9, 20, rec, metrics, 0.005) validation.run(user) print validation end_time = datetime.datetime.now() delta = end_time - begin_time logging.info("Cross-validation for user %s" % user.user_id) logging.info("Recommender strategy: %s" % rec.strategy.description) logging.debug("Cross-validation started at %s" % begin_time) logging.debug("Cross-validation completed at %s" % end_time) logging.info("Time elapsed: %d seconds." % delta.seconds) AppRecommender-0.7.5/bin/demo_rec.py000077500000000000000000000106651306751311600173410ustar00rootroot00000000000000#!/usr/bin/env python """ DemoRecommender - demonstration of a GNU/Linux application recommender. """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ import os import commands import re import sys sys.path.insert(0, '../') import xapian from debian import debtags # ??? from apprecommender.strategy import PkgMatchDecider DB_PATH = "/var/lib/debtags/package-tags" INDEX_PATH = os.path.expanduser("~/.app-recommender/debtags_index") def load_debtags_db(path): """ Load debtags database. """ debtags_db = debtags.DB() tag_filter = re.compile(r"^special::.+$|^.+::TODO$") try: debtags_db.read(open(path, "r"), lambda x: not tag_filter.match(x)) except IOError: print >> sys.stderr, ("IOError: could not open debtags file \'%s\'" % path) exit(1) return debtags_db def get_system_pkgs(): """ Return set of system packages. """ dpkg_output = commands.getoutput('/usr/bin/dpkg --get-selections') return dpkg_output.replace('install', '\t').split() def get_most_relevant_tags(debtags_db, pkgs_list): """ Return most relevant tags considering a list of packages. """ relevant_db = debtags_db.choose_packages(pkgs_list) relevance_index = debtags.relevance_index_function(debtags_db, relevant_db) sorted_relevant_tags = sorted(relevant_db.iter_tags(), lambda a, b: cmp(relevance_index(a), relevance_index(b))) return normalize_tags(' '.join(sorted_relevant_tags[-50:])) def normalize_tags(string): """ Normalize tag string so that it can be indexed and retrieved. """ return string.replace(':', '_').replace('-', '\'') def create_debtags_index(debtags_db, index_path): """ Create a xapian index for debtags info based on file 'debtags_db' and place it at 'index_path'. """ if not os.path.exists(index_path): os.makedirs(index_path) print "Creating new debtags xapian index at \'%s\'" % index_path debtags_index = xapian.WritableDatabase(index_path, xapian.DB_CREATE_OR_OVERWRITE) for pkg, tags in debtags_db.iter_packages_tags(): doc = xapian.Document() doc.set_data(pkg) for tag in tags: doc.add_term(normalize_tags(tag)) print "indexing ", debtags_index.add_document(doc) return debtags_index def load_debtags_index(debtags_db, reindex): """ Load an existing or new debtags index, based on boolean reindex. """ if not reindex: try: print ("Opening existing debtags xapian index at \'%s\'" % INDEX_PATH) debtags_index = xapian.Database(INDEX_PATH) except xapian.DatabaseError: print "Could not open debtags xapian index" reindex = 1 if reindex: debtags_index = create_debtags_index(debtags_db, INDEX_PATH) return debtags_index if __name__ == '__main__': reindex = 0 if len(sys.argv) == 2: DB_PATH = sys.argv[1] reindex = 1 print "reindex true" elif len(sys.argv) > 2: print >> sys.stderr, ("Usage: %s [PATH_TO_DEBTAGS_DATABASE]" % sys.argv[0]) sys.exit(1) debtags_db = load_debtags_db(DB_PATH) installed_pkgs = get_system_pkgs() best_tags = get_most_relevant_tags(debtags_db, installed_pkgs) debtags_index = load_debtags_index(debtags_db, reindex) qp = xapian.QueryParser() query = qp.parse_query(best_tags) enquire = xapian.Enquire(debtags_index) enquire.set_query(query) mset = enquire.get_mset(0, 20, None, PkgMatchDecider(installed_pkgs)) for m in mset: print "%2d: %s" % (m.rank, m.document.get_data()) AppRecommender-0.7.5/bin/example/000077500000000000000000000000001306751311600166325ustar00rootroot00000000000000AppRecommender-0.7.5/bin/example/dpkg_debian6000066400000000000000000000367561306751311600211130ustar00rootroot00000000000000acpi 1.5-2 acpi-support-base 0.137-5 acpid 1:2.0.7-1 adduser 3.112+nmu2 alsa-base 1.0.23+dfsg-2 alsa-utils 1.0.23-3 anacron 2.3-14 apt 0.8.10.3 apt-listchanges 2.85.7 apt-utils 0.8.10.3 aptitude 0.6.3-3.2 at 3.1.12-1 base-files 6.0 base-passwd 3.5.22 bash 4.1-3 bash-completion 1:1.2-3 bc 1.06.95-2 bind9-host 1:9.7.2.dfsg.P3-1.1 bsd-mailx 8.1.2-0.20100314cvs-1 bsdmainutils 8.0.13 bsdutils 1:2.17.2-9 busybox 1:1.17.1-8 bzip2 1.0.5-6 capplets-data 1:2.30.1-2 console-setup 1.68 console-terminus 4.30-2 consolekit 0.4.1-4 coreutils 8.5-1 cpio 2.11-4 cpp 4:4.4.5-1 cpp-4.4 4.4.5-8 cron 3.0pl1-116 cups 1.4.4-7 cups-bsd 1.4.4-7 cups-client 1.4.4-7 cups-common 1.4.4-7 cups-ppdc 1.4.4-7 dash 0.5.5.1-7.4 dbus 1.2.24-4 dbus-x11 1.2.24-4 dc 1.06.95-2 debconf 1.5.36.1 debconf-i18n 1.5.36.1 debian-archive-keyring 2010.08.28 debian-faq 4.0.4+nmu1 debianutils 3.4 defoma 0.11.11 desktop-base 6.0.5 desktop-file-utils 0.15-2 diffutils 1:3.0-1 discover 2.1.2-5 discover-data 2.2010.10.18 dmidecode 2.9-1.2 dmsetup 2:1.02.48-5 dmz-cursor-theme 0.4.3 dnsutils 1:9.7.2.dfsg.P3-1.1 doc-debian 4.0.2 doc-linux-text 2008.08-1 docbook-xml 4.5-7 dosfstools 3.0.9-1 dpkg 1.15.8.10 e2fslibs 1.41.12-2 e2fsprogs 1.41.12-2 eject 2.1.5+deb1+cvs20081104-7.1 eog 2.30.2-1 epiphany-browser 2.30.6-1 epiphany-browser-data 2.30.6-1 esound-common 0.2.41-8 evince 2.30.3-2 evince-common 2.30.3-2 evolution 2.30.3-5 evolution-common 2.30.3-5 evolution-data-server 2.30.3-2 evolution-data-server-common 2.30.3-2 exim4 4.72-6 exim4-base 4.72-6 exim4-config 4.72-6 exim4-daemon-light 4.72-6 file 5.04-5 file-roller 2.30.2-2 findutils 4.4.2-1+b1 fontconfig 2.8.0-2.1 fontconfig-config 2.8.0-2.1 ftp 0.17-23 gcc-4.4-base 4.4.5-8 gconf2 2.28.1-6 gconf2-common 2.28.1-6 gdm3 2.30.5-6 gedit 2.30.4-1 gedit-common 2.30.4-1 gettext-base 0.18.1.1-3 ghostscript 8.71~dfsg2-9 gir1.0-clutter-1.0 1.2.12-3 gir1.0-freedesktop 0.6.14-1+b1 gir1.0-glib-2.0 0.6.14-1+b1 gir1.0-gstreamer-0.10 0.10.30-1 gir1.0-gtk-2.0 0.6.5-7 gir1.0-json-glib-1.0 0.10.2-2 gnome-about 2.30.2-2 gnome-applets 2.30.0-3 gnome-applets-data 2.30.0-3 gnome-control-center 1:2.30.1-2 gnome-core 1:2.30+7 gnome-desktop-data 2.30.2-2 gnome-disk-utility 2.30.1-2 gnome-doc-utils 0.20.1-1 gnome-icon-theme 2.30.3-2 gnome-js-common 0.1.1-1 gnome-keyring 2.30.3-5 gnome-menus 2.30.3-1 gnome-mime-data 2.18.0-1 gnome-panel 2.30.2-2 gnome-panel-data 2.30.2-2 gnome-power-manager 2.32.0-2 gnome-screensaver 2.30.0-2 gnome-session 2.30.2-3 gnome-session-bin 2.30.2-3 gnome-session-common 2.30.2-3 gnome-settings-daemon 2.30.2-2 gnome-terminal 2.30.2-1 gnome-terminal-data 2.30.2-1 gnome-themes 2.30.2-1 gnome-user-guide 2.30.1-1 gnupg 1.4.10-4 gpgv 1.4.10-4 grep 2.6.3-3 groff-base 1.20.1-10 grub-common 1.98+20100804-14 grub-pc 1.98+20100804-14 gsfonts 1:8.11+urwcyr1.0.7~pre44-4.2 gstreamer0.10-alsa 0.10.30-1 gstreamer0.10-plugins-base 0.10.30-1 gstreamer0.10-plugins-good 0.10.24-1 gstreamer0.10-x 0.10.30-1 gtk2-engines 1:2.20.1-1 gtk2-engines-pixbuf 2.20.1-2 gvfs 1.6.4-3 gvfs-backends 1.6.4-3 gzip 1.3.12-9 hdparm 9.32-1 hicolor-icon-theme 0.12-1 host 1:9.7.2.dfsg.P3-1.1 hostname 3.04 iceweasel 3.5.16-4 ifupdown 0.6.10 info 4.13a.dfsg.1-6 initramfs-tools 0.98.8 initscripts 2.88dsf-13.1 insserv 1.14.0-2 install-info 4.13a.dfsg.1-6 installation-report 2.44 iproute 20100519-3 iptables 1.4.8-3 iputils-ping 3:20100418-3 isc-dhcp-client 4.1.1-P1-15 isc-dhcp-common 4.1.1-P1-15 iso-codes 3.23-1 kbd 1.15.2-2 keyboard-configuration 1.68 klibc-utils 1.5.20-1 laptop-detect 0.13.7 less 436-1 libaa1 1.4p5-38 libacl1 2.2.49-4 libarchive1 2.8.4-1 libart-2.0-2 2.3.21-1 libasound2 1.0.23-2.1 libaspell15 0.60.6-4 libatasmart4 0.17+git20100219-2 libatk1.0-0 1.30.0-1 libattr1 1:2.4.44-2 libaudiofile0 0.2.6-8 libaudit0 1.7.13-1+b2 libavahi-client3 0.6.27-2 libavahi-common-data 0.6.27-2 libavahi-common3 0.6.27-2 libavahi-glib1 0.6.27-2 libavahi-gobject0 0.6.27-2 libavahi-ui0 0.6.27-2 libavc1394-0 0.5.3-1+b2 libbind9-60 1:9.7.2.dfsg.P3-1.1 libblas3gf 1.2-8 libblkid1 2.17.2-9 libbluetooth3 4.66-3 libbonobo2-0 2.24.3-1 libbonobo2-common 2.24.3-1 libbonoboui2-0 2.24.3-1 libbonoboui2-common 2.24.3-1 libboost-iostreams1.42.0 1.42.0-4 libbsd0 0.2.0-1 libbz2-1.0 1.0.5-6 libc-bin 2.11.2-10 libc6 2.11.2-10 libc6-i686 2.11.2-10 libcaca0 0.99.beta17-1 libcairo2 1.8.10-6 libcamel1.2-14 2.30.3-2 libcanberra-gtk0 0.24-1 libcanberra0 0.24-1 libcap2 1:2.19-3 libcdio-cdda0 0.81-4 libcdio-paranoia0 0.81-4 libcdio10 0.81-4 libcdparanoia0 3.10.2+debian-9 libck-connector0 0.4.1-4 libclutter-1.0-0 1.2.12-3 libcomerr2 1.41.12-2 libcpufreq0 007-1 libcroco3 0.6.2-1 libcups2 1.4.4-7 libcupscgi1 1.4.4-7 libcupsdriver1 1.4.4-7 libcupsimage2 1.4.4-7 libcupsmime1 1.4.4-7 libcupsppdc1 1.4.4-7 libcwidget3 0.5.16-3 libdatrie1 0.2.4-1 libdb4.6 4.6.21-16 libdb4.7 4.7.25-9 libdb4.8 4.8.30-2 libdbus-1-3 1.2.24-4 libdbus-glib-1-2 0.88-2.1 libdevmapper1.02.1 2:1.02.48-5 libdiscover2 2.1.2-5 libdjvulibre-text 3.5.23-3 libdjvulibre21 3.5.23-3 libdns69 1:9.7.2.dfsg.P3-1.1 libdrm-intel1 2.4.21-1~squeeze3 libdrm-nouveau1 2.4.21-1~squeeze3 libdrm-radeon1 2.4.21-1~squeeze3 libdrm2 2.4.21-1~squeeze3 libdv4 1.0.0-2.1 libebackend1.2-0 2.30.3-2 libebook1.2-9 2.30.3-2 libecal1.2-7 2.30.3-2 libedata-book1.2-2 2.30.3-2 libedata-cal1.2-7 2.30.3-2 libedataserver1.2-13 2.30.3-2 libedataserverui1.2-8 2.30.3-2 libedit2 2.11-20080614-2 libeggdbus-1-0 0.6-1 libegroupwise1.2-13 2.30.3-2 libenchant1c2a 1.6.0-1 libept1 1.0.4 libesd0 0.2.41-8 libevent-1.4-2 1.4.13-stable-1 libevince2 2.30.3-2 libevolution 2.30.3-5 libexempi3 2.1.1-1 libexif12 0.6.19-1 libexpat1 2.0.1-7 libfam0 2.7.0-17 libffi5 3.0.9-3 libfile-copy-recursive-perl 0.38-1 libflac8 1.2.1-2+b1 libfontconfig1 2.8.0-2.1 libfontenc1 1:1.0.5-2 libfreetype6 2.4.2-2.1 libfs6 2:1.0.2-1 libgail18 2.20.1-2 libgc1c2 1:6.8-1.2 libgcc1 1:4.4.5-8 libgconf2-4 2.28.1-6 libgcr0 2.30.3-5 libgcrypt11 1.4.5-2 libgdata-google1.2-1 2.30.3-2 libgdata1.2-1 2.30.3-2 libgdbm3 1.8.3-9 libgdu-gtk0 2.30.1-2 libgdu0 2.30.1-2 libgeoip1 1.4.7~beta6+dfsg-1 libgfortran3 4.4.5-8 libgirepository1.0-0 0.6.14-1+b1 libgl1-mesa-dri 7.7.1-4 libgl1-mesa-glx 7.7.1-4 libglade2-0 1:2.6.4-1 libglib2.0-0 2.24.2-1 libglib2.0-data 2.24.2-1 libglu1-mesa 7.7.1-4 libgmime-2.4-2 2.4.14-1+nmu1 libgmp3c2 2:4.3.2+dfsg-1 libgnome-desktop-2-17 2.30.2-2 libgnome-keyring0 2.30.1-1 libgnome-menu2 2.30.3-1 libgnome-window-settings1 1:2.30.1-2 libgnome2-0 2.30.0-1 libgnome2-common 2.30.0-1 libgnomecanvas2-0 2.30.1-1 libgnomecanvas2-common 2.30.1-1 libgnomekbd-common 2.30.2-2 libgnomekbd4 2.30.2-2 libgnomeui-0 2.24.3-1 libgnomeui-common 2.24.3-1 libgnomevfs2-0 1:2.24.3-1 libgnomevfs2-common 1:2.24.3-1 libgnutls26 2.8.6-1 libgp11-0 2.30.3-5 libgpg-error0 1.6-1 libgpgme11 1.2.0-1.2 libgphoto2-2 2.4.6-3 libgphoto2-port0 2.4.6-3 libgpm2 1.20.4-3.3 libgs8 8.71~dfsg2-9 libgsf-1-114 1.14.18-1 libgsf-1-common 1.14.18-1 libgssapi-krb5-2 1.8.3+dfsg-4 libgssglue1 0.1-4 libgssrpc4 1.8.3+dfsg-4 libgstreamer-plugins-base0.10-0 0.10.30-1 libgstreamer0.10-0 0.10.30-1 libgtk2.0-0 2.20.1-2 libgtk2.0-bin 2.20.1-2 libgtk2.0-common 2.20.1-2 libgtkhtml-editor-common 3.30.3-1 libgtkhtml-editor0 3.30.3-1 libgtkhtml3.14-19 3.30.3-1 libgtksourceview2.0-0 2.10.4-1 libgtksourceview2.0-common 2.10.4-1 libgtop2-7 2.28.1-1 libgtop2-common 2.28.1-1 libgucharmap7 1:2.30.3-1 libgudev-1.0-0 164-3 libgweather-common 2.30.3-1 libgweather1 2.30.3-1 libhal-storage1 0.5.14-3 libhal1 0.5.14-3 libhtml-parser-perl 3.66-1 libhtml-tagset-perl 3.20-2 libhtml-tree-perl 3.23-2 libhunspell-1.2-0 1.2.11-1 libical0 0.44-3 libice6 2:1.0.6-2 libicu44 4.4.1-7 libidl0 0.8.14-0.1 libidn11 1.15-2 libiec61883-0 1.2.0-0.1 libijs-0.35 0.35-7 libimobiledevice1 1.0.2-1 libisc62 1:9.7.2.dfsg.P3-1.1 libisccc60 1:9.7.2.dfsg.P3-1.1 libisccfg62 1:9.7.2.dfsg.P3-1.1 libjasper1 1.900.1-7+b1 libjbig2dec0 0.11-1 libjpeg62 6b1-1 libjson-glib-1.0-0 0.10.2-2 libk5crypto3 1.8.3+dfsg-4 libkadm5clnt-mit7 1.8.3+dfsg-4 libkadm5srv-mit7 1.8.3+dfsg-4 libkdb5-4 1.8.3+dfsg-4 libkeyutils1 1.4-1 libklibc 1.5.20-1 libkpathsea5 2009-8 libkrb5-3 1.8.3+dfsg-4 libkrb5support0 1.8.3+dfsg-4 liblapack3gf 3.2.1-8 liblcms1 1.18.dfsg-1.2+b3 libldap-2.4-2 2.4.23-7 liblocale-gettext-perl 1.05-6 liblockfile1 1.08-4 libltdl7 2.2.6b-2 liblua5.1-0 5.1.4-5 liblwres60 1:9.7.2.dfsg.P3-1.1 liblzma2 5.0.0-2 libmagic1 5.04-5 libmailtools-perl 2.06-1 libmetacity-private0 1:2.30.1-3 libmozjs2d 1.9.1.16-4 libmpfr4 3.0.0-2 libnautilus-extension1 2.30.1-2 libncurses5 5.7+20100313-5 libncursesw5 5.7+20100313-5 libnet-dbus-perl 0.33.6-2 libnewt0.52 0.52.11-1 libnfnetlink0 1.0.0-1 libnfsidmap2 0.23-2 libnotify1 0.5.0-2 libnspr4-0d 4.8.6-1 libnss3-1d 3.12.8-1 libogg0 1.2.0~dfsg-1 liboobs-1-4 2.30.1-1 libopenjpeg2 1.3+dfsg-4 liborbit2 1:2.14.18-0.1 liborc-0.4-0 1:0.4.6-2 libpam-modules 1.1.1-6.1 libpam-runtime 1.1.1-6.1 libpam0g 1.1.1-6.1 libpanel-applet2-0 2.30.2-2 libpango1.0-0 1.28.3-1+squeeze1 libpango1.0-common 1.28.3-1+squeeze1 libpaper1 1.1.24 libparted0debian1 2.3-5 libpci3 1:3.1.7-6 libpciaccess0 0.12.0-1 libpcre3 8.02-1.1 libpixman-1-0 0.16.4-1 libplist1 1.3-2 libpng12-0 1.2.44-1 libpolkit-agent-1-0 0.96-4 libpolkit-backend-1-0 0.96-4 libpolkit-gobject-1-0 0.96-4 libpolkit-gtk-1-0 0.96-3 libpoppler-glib4 0.12.4-1.2 libpoppler5 0.12.4-1.2 libpopt0 1.16-1 libproxy0 0.3.1-2 libpth20 2.0.7-16 libpython2.6 2.6.6-8+b1 librarian0 0.8.1-5 libraw1394-11 2.0.5-2 libreadline6 6.1-3 librpcsecgss3 0.19-2 librsvg2-2 2.26.3-1 librsvg2-common 2.26.3-1 libsasl2-2 2.1.23.dfsg1-7 libseed0 2.30.0-1+b1 libselinux1 2.0.96-1 libsepol1 2.0.41-1 libsgutils2-2 1.29-1 libshout3 2.2.2-5+b1 libsigc++-2.0-0c2a 2.2.4.2-1 libslab0a 2.30.0-1 libslang2 2.2.2-4 libslp1 1.2.1-7.8 libsm6 2:1.1.1-1 libsmbclient 2:3.5.6~dfsg-3 libsoup-gnome2.4-1 2.30.2-1 libsoup2.4-1 2.30.2-1 libspectre1 0.2.6-1 libspeex1 1.2~rc1-1 libsqlite3-0 3.7.3-1 libss2 1.41.12-2 libssl0.9.8 0.9.8o-4 libstartup-notification0 0.10-1 libstdc++6 4.4.5-8 libt1-5 5.1.2-3 libtag1-vanilla 1.6.3-1 libtag1c2a 1.6.3-1 libtalloc2 2.0.1-1 libtasn1-3 2.7-1 libtdb1 1.2.1-2+b1 libtext-charwidth-perl 0.04-6 libtext-iconv-perl 1.7-2 libtext-wrapi18n-perl 0.06-7 libthai-data 0.1.14-2 libthai0 0.1.14-2 libtheora0 1.1.1+dfsg.1-3 libtiff4 3.9.4-5 libtimedate-perl 1.2000-1 libtokyocabinet8 1.4.37-6 libtotem-plparser17 2.30.3-1 libudev0 164-3 libunique-1.0-0 1.1.6-1.1 libupower-glib1 0.9.5-5 liburi-perl 1.54-2 libusb-0.1-4 2:0.1.12-16 libusb-1.0-0 2:1.0.8-2 libusbmuxd1 1.0.4-1 libuuid-perl 0.02-4 libuuid1 2.17.2-9 libv4l-0 0.8.0-1 libvisual-0.4-0 0.4.0-3 libvorbis0a 1.3.1-1 libvorbisenc2 1.3.1-1 libvorbisfile3 1.3.1-1 libvte-common 1:0.24.3-2 libvte9 1:0.24.3-2 libwavpack1 4.60.1-1 libwbclient0 2:3.5.6~dfsg-3 libwebkit-1.0-2 1.2.6-2 libwebkit-1.0-common 1.2.6-2 libwnck-common 2.30.4-2 libwnck22 2.30.4-2 libwrap0 7.6.q-19 libwww-perl 5.836-1 libx11-6 2:1.3.3-4 libx11-data 2:1.3.3-4 libx11-xcb1 2:1.3.3-4 libxapian22 1.2.3-2 libxau6 1:1.0.6-1 libxaw7 2:1.0.7-1 libxcb-atom1 0.3.6-1 libxcb-aux0 0.3.6-1 libxcb-dri2-0 1.6-1 libxcb-event1 0.3.6-1 libxcb-render-util0 0.3.6-1 libxcb-render0 1.6-1 libxcb1 1.6-1 libxcomposite1 1:0.4.2-1 libxcursor1 1:1.1.10-2 libxdamage1 1:1.1.3-1 libxdmcp6 1:1.0.3-2 libxext6 2:1.1.2-1 libxfixes3 1:4.0.5-1 libxfont1 1:1.4.1-2 libxft2 2.1.14-2 libxi6 2:1.3-6 libxinerama1 2:1.1-3 libxkbfile1 1:1.0.6-2 libxklavier16 5.0-2 libxml-parser-perl 2.36-1.1+b1 libxml-twig-perl 1:3.34-1 libxml2 2.7.8.dfsg-2 libxml2-utils 2.7.8.dfsg-2 libxmu6 2:1.0.5-2 libxmuu1 2:1.0.5-2 libxpm4 1:3.5.8-1 libxrandr2 2:1.3.0-3 libxrender1 1:0.9.6-1 libxres1 2:1.0.4-1 libxslt1.1 1.1.26-6 libxss1 1:1.2.0-2 libxt6 1:1.0.7-1 libxtst6 2:1.1.0-3 libxv1 2:1.0.5-1 libxvmc1 2:1.0.5-1 libxxf86dga1 2:1.1.1-2 libxxf86vm1 1:1.1.0-2 linux-base 2.6.32-30 linux-image-2.6-686 2.6.32+29 linux-image-2.6.32-5-686 2.6.32-30 linux-sound-base 1.0.23+dfsg-2 locales 2.11.2-10 login 1:4.1.4.2+svn3283-2 logrotate 3.7.8-6 lsb-base 3.2-23.2squeeze1 lsof 4.81.dfsg.1-1 m4 1.4.14-3 man-db 2.5.7-8 manpages 3.27-1 mawk 1.3.3-15 menu 2.1.44 menu-xdg 0.5 metacity 1:2.30.1-3 metacity-common 1:2.30.1-3 mime-support 3.48-1 mlocate 0.22.2-1 module-init-tools 3.12-1 mount 2.17.2-9 mutt 1.5.20-9+squeeze1 nano 2.2.4-1 nautilus 2.30.1-2 nautilus-data 2.30.1-2 ncurses-base 5.7+20100313-5 ncurses-bin 5.7+20100313-5 ncurses-term 5.7+20100313-5 net-tools 1.60-23 netbase 4.45 netcat-traditional 1.10-38 nfs-common 1:1.2.2-4 notification-daemon 0.5.0-2 openssh-blacklist 0.4.1 openssh-client 1:5.5p1-6 openssl 0.9.8o-4 p7zip-full 9.04~dfsg.1-1 passwd 1:4.1.4.2+svn3283-2 patch 2.6-2 pciutils 1:3.1.7-6 perl 5.10.1-17 perl-base 5.10.1-17 perl-modules 5.10.1-17 policykit-1 0.96-4 policykit-1-gnome 0.96-3 poppler-utils 0.12.4-1.2 portmap 6.0.0-2 procmail 3.22-19 procps 1:3.2.8-9 psmisc 22.11-1 python 2.6.6-3+squeeze5 python-apt 0.7.100.1 python-apt-common 0.7.100.1 python-cairo 1.8.8-1+b1 python-central 0.6.16+nmu1 python-gconf 2.28.1-1 python-gmenu 2.30.3-1 python-gnome2 2.28.1-1 python-gobject 2.21.4+is.2.21.3-1 python-gtk2 2.17.0-4 python-gtksourceview2 2.10.1-1 python-libxml2 2.7.8.dfsg-2 python-minimal 2.6.6-3+squeeze5 python-numpy 1:1.4.1-5 python-pyorbit 2.24.0-6 python-reportbug 4.12.6 python-support 1.0.10 python2.6 2.6.6-8+b1 python2.6-minimal 2.6.6-8+b1 readline-common 6.1-3 reportbug 4.12.6 rsyslog 4.6.4-2 sed 4.2.1-7 sensible-utils 0.0.4 sgml-base 1.26+nmu1 sgml-data 2.0.4 shared-mime-info 0.71-4 ssl-cert 1.0.28 system-tools-backends 2.10.1-2 sysv-rc 2.88dsf-13.1 sysvinit 2.88dsf-13.1 sysvinit-utils 2.88dsf-13.1 tar 1.23-3 tasksel 2.88 tasksel-data 2.88 tcpd 7.6.q-19 telnet 0.17-36 texinfo 4.13a.dfsg.1-6 time 1.7-23.1 totem 2.30.2-6 totem-common 2.30.2-6 traceroute 1:2.0.15-1 ttf-dejavu-core 2.31-1 ttf-freefont 20090104-7 twm 1:1.0.4-2 tzdata 2010o-1 ucf 3.0025+nmu1 udev 164-3 udisks 1.0.1+git20100614-3 update-inetd 4.38+nmu1 upower 0.9.5-5 usbmuxd 1.0.4-1 usbutils 0.87-5 util-linux 2.17.2-9 vim-common 2:7.2.445+hg~cb94c42c0e1a-1 vim-tiny 2:7.2.445+hg~cb94c42c0e1a-1 w3m 0.5.2-9 wamerican 6-3 wget 1.12-2.1 whiptail 0.52.11-1 whois 5.0.10 x11-apps 7.5+5 x11-common 1:7.5+8 x11-session-utils 7.5+1 x11-utils 7.5+4 x11-xfs-utils 7.4+1 x11-xkb-utils 7.5+5 x11-xserver-utils 7.5+2 xauth 1:1.0.4-1 xfonts-100dpi 1:1.0.1 xfonts-75dpi 1:1.0.1 xfonts-base 1:1.0.1 xfonts-encodings 1:1.0.3-1 xfonts-scalable 1:1.0.1-1 xfonts-utils 1:7.5+2 xinit 1.2.0-2 xkb-data 1.8-2 xml-core 0.13 xorg 1:7.5+8 xorg-docs-core 1:1.5-1 xserver-common 2:1.7.7-11 xserver-xorg 1:7.5+8 xserver-xorg-core 2:1.7.7-11 xserver-xorg-input-all 1:7.5+8 xserver-xorg-input-evdev 1:2.3.2-6 xserver-xorg-input-synaptics 1.2.2-2 xserver-xorg-input-wacom 0.10.5+20100416-1 xserver-xorg-video-all 1:7.5+8 xserver-xorg-video-apm 1:1.2.2-2 xserver-xorg-video-ark 1:0.7.2-2 xserver-xorg-video-ati 1:6.13.1-2+squeeze1 xserver-xorg-video-chips 1:1.2.3-1 xserver-xorg-video-cirrus 1:1.3.2-2+squeeze1 xserver-xorg-video-fbdev 1:0.4.2-2 xserver-xorg-video-geode 2.11.9-7 xserver-xorg-video-i128 1:1.3.3-2 xserver-xorg-video-i740 1:1.3.2-2 xserver-xorg-video-intel 2:2.13.0-5 xserver-xorg-video-mach64 6.8.2-3 xserver-xorg-video-mga 1:1.4.11.dfsg-4+squeeze1 xserver-xorg-video-neomagic 1:1.2.4-3 xserver-xorg-video-nouveau 1:0.0.15+git20100329+7858345-5 xserver-xorg-video-nv 1:2.1.17-3 xserver-xorg-video-openchrome 1:0.2.904+svn842-2 xserver-xorg-video-r128 6.8.1-3 xserver-xorg-video-radeon 1:6.13.1-2+squeeze1 xserver-xorg-video-rendition 1:4.2.3-3 xserver-xorg-video-s3 1:0.6.3-2 xserver-xorg-video-s3virge 1:1.10.4-2 xserver-xorg-video-savage 1:2.3.1-2 xserver-xorg-video-siliconmotion 1:1.7.3-2 xserver-xorg-video-sis 1:0.10.3-1 xserver-xorg-video-sisusb 1:0.9.3-2 xserver-xorg-video-tdfx 1:1.4.3-2 xserver-xorg-video-trident 1:1.3.3-2 xserver-xorg-video-tseng 1:1.2.3-2 xserver-xorg-video-vesa 1:2.3.0-3 xserver-xorg-video-vmware 1:11.0.1-2 xserver-xorg-video-voodoo 1:1.2.3-2 xsltproc 1.1.26-6 xulrunner-1.9.1 1.9.1.16-4 xz-utils 5.0.0-2 yelp 2.30.1+webkit-1 zenity 2.30.0-1 zlib1g 1:1.2.3.4.dfsg-3AppRecommender-0.7.5/bin/example/dpkg_debian6t000066400000000000000000000676711306751311600212770ustar00rootroot00000000000000acpi 1.5-2 acpi-support-base 0.137-5 acpid 1:2.0.7-1 adduser 3.112+nmu2 alacarte 0.13.2-1 alsa-base 1.0.23+dfsg-2 alsa-utils 1.0.23-3 anacron 2.3-14 apache2.2-bin 2.2.16-6 app-install-data 2010.11.17 apt 0.8.10.3 apt-listchanges 2.85.7 apt-utils 0.8.10.3 apt-xapian-index 0.41 aptdaemon 0.31+bzr413-1.1 aptitude 0.6.3-3.2 aspell 0.60.6-4 aspell-en 6.0-0-6 at 3.1.12-1 at-spi 1.30.1-3 avahi-daemon 0.6.27-2+squeeze1 baobab 2.30.0-2 base-files 6.0 base-passwd 3.5.22 bash 4.1-3 bash-completion 1:1.2-3 bc 1.06.95-2 bind9-host 1:9.7.2.dfsg.P3-1.1 binfmt-support 1.2.18 bluez 4.66-3 bogofilter 1.2.2-2 bogofilter-bdb 1.2.2-2 bogofilter-common 1.2.2-2 brasero 2.30.3-2 brasero-common 2.30.3-2 browser-plugin-gnash 0.8.8-5 bsd-mailx 8.1.2-0.20100314cvs-1 bsdmainutils 8.0.13 bsdutils 1:2.17.2-9 bsh 2.0b4-12 bsh-gcj 2.0b4-12 busybox 1:1.17.1-8 bzip2 1.0.5-6 ca-certificates 20090814+nmu2 capplets-data 1:2.30.1-2 cdrdao 1:1.2.3-0.1 cheese 2.30.1-2 cheese-common 2.30.1-2 cli-common 0.7.1 console-setup 1.68 console-terminus 4.30-2 consolekit 0.4.1-4 coreutils 8.5-1 cpio 2.11-4 cpp 4:4.4.5-1 cpp-4.4 4.4.5-8 cpufrequtils 007-1 cron 3.0pl1-116 cups 1.4.4-7 cups-bsd 1.4.4-7 cups-client 1.4.4-7 cups-common 1.4.4-7 cups-driver-gutenprint 5.2.6-1 cups-pk-helper 0.1.0-2 cups-ppdc 1.4.4-7 dash 0.5.5.1-7.4 dasher 4.11-1 dasher-data 4.11-1 dbus 1.2.24-4 dbus-x11 1.2.24-4 dc 1.06.95-2 debconf 1.5.36.1 debconf-i18n 1.5.36.1 debian-archive-keyring 2010.08.28 debian-faq 4.0.4+nmu1 debianutils 3.4 defoma 0.11.11 deskbar-applet 2.32.0-1 desktop-base 6.0.5 desktop-file-utils 0.15-2 dictionaries-common 1.5.17 diffutils 1:3.0-1 discover 2.1.2-5 discover-data 2.2010.10.18 dmidecode 2.9-1.2 dmsetup 2:1.02.48-5 dmz-cursor-theme 0.4.3 dnsmasq-base 2.55-2+b1 dnsutils 1:9.7.2.dfsg.P3-1.1 doc-debian 4.0.2 doc-linux-text 2008.08-1 docbook-xml 4.5-7 dosfstools 3.0.9-1 dpkg 1.15.8.10 dvd+rw-tools 7.1-6 e2fslibs 1.41.12-2 e2fsprogs 1.41.12-2 eject 2.1.5+deb1+cvs20081104-7.1 ekiga 3.2.7-2 empathy 2.30.3-1 empathy-common 2.30.3-1 eog 2.30.2-1 epiphany-browser 2.30.6-1 epiphany-browser-data 2.30.6-1 epiphany-extensions 2.30.2-1 esound-common 0.2.41-8 espeak 1.43.03-2 espeak-data 1.43.03-2 evince 2.30.3-2 evince-common 2.30.3-2 evolution 2.30.3-5 evolution-common 2.30.3-5 evolution-data-server 2.30.3-2 evolution-data-server-common 2.30.3-2 evolution-exchange 2.30.2-1 evolution-plugins 2.30.3-5 evolution-webcal 2.28.1-1 exim4 4.72-6 exim4-base 4.72-6 exim4-config 4.72-6 exim4-daemon-light 4.72-6 fancontrol 1:3.1.2-6 file 5.04-5 file-roller 2.30.2-2 findutils 4.4.2-1+b1 fontconfig 2.8.0-2.1 fontconfig-config 2.8.0-2.1 foo2zjs 20090908dfsg-5.1 foomatic-db 20100630-1 foomatic-db-engine 4.0.4-3 foomatic-filters 4.0.5-6 foomatic-filters-ppds 1:4.0.4-3 freedesktop-sound-theme 0.7.dfsg-1 freeglut3 2.6.0-1 freepats 20060219-1 ftp 0.17-23 fuse-utils 2.8.4-1.1 gcalctool 5.30.2-2 gcc-4.4-base 4.4.5-8 gcj-4.4-jre-headless 4.4.5-2 gconf-defaults-service 2.28.1-6 gconf-editor 2.30.0-2 gconf2 2.28.1-6 gconf2-common 2.28.1-6 gdebi 0.6.4 gdebi-core 0.6.4 gdm3 2.30.5-6 gedit 2.30.4-1 gedit-common 2.30.4-1 gedit-plugins 2.30.0-1 genisoimage 9:1.1.11-1 geoclue 0.12.0-1 geoclue-hostip 0.12.0-1 geoclue-localnet 0.12.0-1 geoclue-manual 0.12.0-1 geoclue-yahoo 0.12.0-1 geoip-database 1.4.7~beta6+dfsg-1 gettext-base 0.18.1.1-3 ghostscript 8.71~dfsg2-9 ghostscript-cups 8.71~dfsg2-9 gir1.0-clutter-1.0 1.2.12-3 gir1.0-freedesktop 0.6.14-1+b1 gir1.0-glib-2.0 0.6.14-1+b1 gir1.0-gstreamer-0.10 0.10.30-1 gir1.0-gtk-2.0 0.6.5-7 gir1.0-json-glib-1.0 0.10.2-2 gksu 2.0.2-5 gnash 0.8.8-5 gnash-common 0.8.8-5 gnome 1:2.30+7 gnome-about 2.30.2-2 gnome-accessibility 1:2.30+7 gnome-accessibility-themes 2.30.2-1 gnome-applets 2.30.0-3 gnome-applets-data 2.30.0-3 gnome-backgrounds 2.32.0-1 gnome-bluetooth 2.30.0-2 gnome-cards-data 1:2.30.2-2 gnome-codec-install 0.4.7+nmu1 gnome-control-center 1:2.30.1-2 gnome-core 1:2.30+7 gnome-desktop-data 2.30.2-2 gnome-desktop-environment 1:2.30+7 gnome-dictionary 2.30.0-2 gnome-disk-utility 2.30.1-2 gnome-doc-utils 0.20.1-1 gnome-games 1:2.30.2-2 gnome-games-data 1:2.30.2-2 gnome-games-extra-data 2.30.0-1 gnome-icon-theme 2.30.3-2 gnome-js-common 0.1.1-1 gnome-keyring 2.30.3-5 gnome-mag 1:0.16.1-2 gnome-media 2.30.0-1 gnome-media-common 2.30.0-1 gnome-menus 2.30.3-1 gnome-mime-data 2.18.0-1 gnome-netstatus-applet 2.28.1-1 gnome-nettool 2.30.0-3 gnome-orca 2.30.2-2 gnome-panel 2.30.2-2 gnome-panel-data 2.30.2-2 gnome-power-manager 2.32.0-2 gnome-screensaver 2.30.0-2 gnome-screenshot 2.30.0-2 gnome-search-tool 2.30.0-2 gnome-session 2.30.2-3 gnome-session-bin 2.30.2-3 gnome-session-canberra 0.24-1 gnome-session-common 2.30.2-3 gnome-settings-daemon 2.30.2-2 gnome-system-log 2.30.0-2 gnome-system-monitor 2.28.1-1 gnome-system-tools 2.30.2-2 gnome-terminal 2.30.2-1 gnome-terminal-data 2.30.2-1 gnome-themes 2.30.2-1 gnome-themes-extras 2.22.0-3 gnome-themes-more 0.9.0.deb0.8 gnome-user-guide 2.30.1-1 gnome-user-share 2.30.1-1 gnome-utils-common 2.30.0-2 gnuchess 5.07-7 gnuchess-book 1.01-2 gnupg 1.4.10-4 gok 2.30.0-1 gpgv 1.4.10-4 grep 2.6.3-3 groff-base 1.20.1-10 grub-common 1.98+20100804-14 grub-pc 1.98+20100804-14 gsfonts 1:8.11+urwcyr1.0.7~pre44-4.2 gstreamer0.10-alsa 0.10.30-1 gstreamer0.10-ffmpeg 0.10.10-1 gstreamer0.10-fluendo-mp3 0.10.14.debian-1 gstreamer0.10-nice 0.0.12-1 gstreamer0.10-plugins-bad 0.10.19-2+b2 gstreamer0.10-plugins-base 0.10.30-1 gstreamer0.10-plugins-good 0.10.24-1 gstreamer0.10-plugins-ugly 0.10.15-1 gstreamer0.10-tools 0.10.30-1 gstreamer0.10-x 0.10.30-1 gtk2-engines 1:2.20.1-1 gtk2-engines-pixbuf 2.20.1-2 gtk2-engines-smooth 1:2.14.3+deb5 gucharmap 1:2.30.3-1 guile-1.8-libs 1.8.7+1-3 gvfs 1.6.4-3 gvfs-backends 1.6.4-3 gvfs-bin 1.6.4-3 gzip 1.3.12-9 hamster-applet 2.30.2-3 hdparm 9.32-1 hicolor-icon-theme 0.12-1 host 1:9.7.2.dfsg.P3-1.1 hostname 3.04 hp-ppd 0.9-0.1 hpijs 3.10.6-2 hplip 3.10.6-2 hplip-cups 3.10.6-2 hplip-data 3.10.6-2 hwdata 0.230-1 iceweasel 3.5.16-4 ifupdown 0.6.10 imagemagick 8:6.6.0.4-3 info 4.13a.dfsg.1-6 initramfs-tools 0.98.8 initscripts 2.88dsf-13.1 inkscape 0.47.0-2+b1 insserv 1.14.0-2 install-info 4.13a.dfsg.1-6 installation-report 2.44 iproute 20100519-3 iptables 1.4.8-3 iputils-ping 3:20100418-3 isc-dhcp-client 4.1.1-P1-15+squeeze1 isc-dhcp-common 4.1.1-P1-15+squeeze1 iso-codes 3.23-1 kbd 1.15.2-2 kerneloops 0.12+git20090217-1 keyboard-configuration 1.68 klibc-utils 1.5.20-1 laptop-detect 0.13.7 less 436-1 liba52-0.7.4 0.7.4-14 libaa1 1.4p5-38 libacl1 2.2.49-4 libao-common 1.0.0-5 libao4 1.0.0-5 libapache2-mod-dnssd 0.6-2 libapr1 1.4.2-6 libaprutil1 1.3.9+dfsg-5 libaprutil1-dbd-sqlite3 1.3.9+dfsg-5 libaprutil1-ldap 1.3.9+dfsg-5 libarchive1 2.8.4-1 libart-2.0-2 2.3.21-1 libart2.0-cil 2.24.1-6 libasound2 1.0.23-2.1 libaspell15 0.60.6-4 libass4 0.9.9-1 libasyncns0 0.3-1.1 libatasmart4 0.17+git20100219-2 libatk1.0-0 1.30.0-1 libatk1.0-data 1.30.0-1 libatspi1.0-0 1.30.1-3 libattr1 1:2.4.44-2 libaudiofile0 0.2.6-8 libaudit0 1.7.13-1+b2 libavahi-client3 0.6.27-2+squeeze1 libavahi-common-data 0.6.27-2+squeeze1 libavahi-common3 0.6.27-2+squeeze1 libavahi-core7 0.6.27-2+squeeze1 libavahi-glib1 0.6.27-2+squeeze1 libavahi-gobject0 0.6.27-2+squeeze1 libavahi-ui0 0.6.27-2+squeeze1 libavc1394-0 0.5.3-1+b2 libavcodec52 4:0.5.2-6 libavformat52 4:0.5.2-6 libavutil49 4:0.5.2-6 libbabl-0.0-0 0.0.22-1 libbind9-60 1:9.7.2.dfsg.P3-1.1 libblas3gf 1.2-8 libblkid1 2.17.2-9 libbluetooth3 4.66-3 libbonobo2-0 2.24.3-1 libbonobo2-common 2.24.3-1 libbonoboui2-0 2.24.3-1 libbonoboui2-common 2.24.3-1 libboost-date-time1.42.0 1.42.0-4 libboost-iostreams1.42.0 1.42.0-4 libboost-python1.42.0 1.42.0-4 libboost-thread1.42.0 1.42.0-4 libbrasero-media0 2.30.3-2 libbrlapi0.5 4.2-7 libbsd0 0.2.0-1 libburn4 0.8.0.pl00-2 libbz2-1.0 1.0.5-6 libc-bin 2.11.2-10 libc6 2.11.2-10 libc6-i686 2.11.2-10 libcaca0 0.99.beta17-1 libcairo-perl 1.070-1 libcairo2 1.8.10-6 libcairomm-1.0-1 1.8.4-3 libcamel1.2-14 2.30.3-2 libcanberra-gtk-module 0.24-1 libcanberra-gtk0 0.24-1 libcanberra0 0.24-1 libcap-ng0 0.6.4-1 libcap2 1:2.19-3 libcdaudio1 0.99.12p2-9 libcdio-cdda0 0.81-4 libcdio-paranoia0 0.81-4 libcdio10 0.81-4 libcdparanoia0 3.10.2+debian-9 libcdt4 2.26.3-5 libcelt0-0 0.7.1-1 libchamplain-0.4-0 0.4.6-2+b1 libchamplain-gtk-0.4-0 0.4.6-2+b1 libcheese-gtk18 2.30.1-2 libck-connector0 0.4.1-4 libclutter-1.0-0 1.2.12-3 libclutter-gtk-0.10-0 0.10.4-1 libcolamd2.7.1 1:3.4.0-2 libcolorblind0 0.0.1-1 libcomerr2 1.41.12-2 libcpufreq0 007-1 libcroco3 0.6.2-1 libcryptui0 2.30.1-2 libcups2 1.4.4-7 libcupscgi1 1.4.4-7 libcupsdriver1 1.4.4-7 libcupsimage2 1.4.4-7 libcupsmime1 1.4.4-7 libcupsppdc1 1.4.4-7 libcurl3-gnutls 7.21.0-1 libcwidget3 0.5.16-3 libdaemon0 0.14-2 libdatrie1 0.2.4-1 libdb4.6 4.6.21-16 libdb4.7 4.7.25-9 libdb4.7-java-gcj 4.7.25-9 libdb4.8 4.8.30-2 libdbus-1-3 1.2.24-4 libdbus-glib-1-2 0.88-2.1 libdc1394-22 2.1.2-3 libdca0 0.0.5-3 libdevmapper1.02.1 2:1.02.48-5 libdirac-encoder0 1.0.2-3 libdirectfb-1.2-9 1.2.10.0-4 libdiscid0 0.2.2-1 libdiscover2 2.1.2-5 libdjvulibre-text 3.5.23-3 libdjvulibre21 3.5.23-3 libdns69 1:9.7.2.dfsg.P3-1.1 libdrm-intel1 2.4.21-1~squeeze3 libdrm-nouveau1 2.4.21-1~squeeze3 libdrm-radeon1 2.4.21-1~squeeze3 libdrm2 2.4.21-1~squeeze3 libdv4 1.0.0-2.1 libdvdnav4 4.1.3-7 libdvdread4 4.1.3-10 libebackend1.2-0 2.30.3-2 libebook1.2-9 2.30.3-2 libecal1.2-7 2.30.3-2 libedata-book1.2-2 2.30.3-2 libedata-cal1.2-7 2.30.3-2 libedataserver1.2-13 2.30.3-2 libedataserverui1.2-8 2.30.3-2 libedit2 2.11-20080614-2 libeggdbus-1-0 0.6-1 libegroupwise1.2-13 2.30.3-2 libelf1 0.148-1 libenca0 1.13-3 libenchant1c2a 1.6.0-1 libepc-1.0-2 0.3.11-1 libepc-common 0.3.11-1 libepc-ui-1.0-2 0.3.11-1 libept1 1.0.4 libesd0 0.2.41-8 libespeak1 1.43.03-2 libevent-1.4-2 1.4.13-stable-1 libevince2 2.30.3-2 libevolution 2.30.3-5 libexempi3 2.1.1-1 libexif12 0.6.19-1 libexiv2-9 0.20-2 libexpat1 2.0.1-7 libfaad2 2.7-6 libfam0 2.7.0-17 libffi5 3.0.9-3 libfftw3-3 3.2.2-1 libfile-copy-recursive-perl 0.38-1 libflac8 1.2.1-2+b1 libflite1 1.4-release-2 libfont-afm-perl 1.20-1 libfont-freetype-perl 0.03-1 libfontconfig1 2.8.0-2.1 libfontenc1 1:1.0.5-2 libfreerdp-plugins-standard 0.7.4-1 libfreerdp0 0.7.4-1 libfreetype6 2.4.2-2.1 libfs6 2:1.0.2-1 libfuse2 2.8.4-1.1 libgail-common 2.20.1-2 libgail-gnome-module 1.20.3-1 libgail18 2.20.1-2 libgalago3 0.5.2-2 libgc1c2 1:6.8-1.2 libgcc1 1:4.4.5-8 libgcj-common 1:4.4.5-1 libgcj10 4.4.5-2 libgconf2-4 2.28.1-6 libgconf2.0-cil 2.24.1-6 libgcr0 2.30.3-5 libgcrypt11 1.4.5-2 libgd2-noxpm 2.0.36~rc1~dfsg-5 libgdata-common 0.6.4-2 libgdata-google1.2-1 2.30.3-2 libgdata1.2-1 2.30.3-2 libgdata7 0.6.4-2 libgdbm3 1.8.3-9 libgdict-1.0-6 2.30.0-2 libgdu-gtk0 2.30.1-2 libgdu0 2.30.1-2 libgee2 0.5.2-1 libgegl-0.0-0 0.0.22-2+b1 libgeoclue0 0.12.0-1 libgeoip1 1.4.7~beta6+dfsg-1 libgexiv2-0 0.1.0-1+b1 libgfortran3 4.4.5-8 libgif4 4.1.6-9 libgimp2.0 2.6.10-1 libgirepository1.0-0 0.6.14-1+b1 libgksu2-0 2.0.13~pre1-3 libgl1-mesa-dri 7.7.1-4 libgl1-mesa-glx 7.7.1-4 libglade2-0 1:2.6.4-1 libglade2.0-cil 2.12.10-1 libglib-perl 2:1.223-1 libglib2.0-0 2.24.2-1 libglib2.0-cil 2.12.10-1 libglib2.0-data 2.24.2-1 libglibmm-2.4-1c2a 2.24.2-1 libglu1-mesa 7.7.1-4 libgme0 0.5.5-2 libgmime-2.4-2 2.4.14-1+nmu1 libgmime2.4-cil 2.4.14-1+nmu1 libgmp3c2 2:4.3.2+dfsg-1 libgnome-bluetooth7 2.30.0-2 libgnome-desktop-2-17 2.30.2-2 libgnome-keyring0 2.30.1-1 libgnome-mag2 1:0.16.1-2 libgnome-media0 2.30.0-1 libgnome-menu2 2.30.3-1 libgnome-speech7 1:0.4.25-4 libgnome-vfs2.0-cil 2.24.1-6 libgnome-window-settings1 1:2.30.1-2 libgnome2-0 2.30.0-1 libgnome2-canvas-perl 1.002-2 libgnome2-common 2.30.0-1 libgnome2-perl 1.042-2 libgnome2-vfs-perl 1.081-1 libgnome2.24-cil 2.24.1-6 libgnomecanvas2-0 2.30.1-1 libgnomecanvas2-common 2.30.1-1 libgnomekbd-common 2.30.2-2 libgnomekbd4 2.30.2-2 libgnomepanel2.24-cil 2.26.0-3+b1 libgnomeui-0 2.24.3-1 libgnomeui-common 2.24.3-1 libgnomevfs2-0 1:2.24.3-1 libgnomevfs2-common 1:2.24.3-1 libgnomevfs2-extra 1:2.24.3-1 libgnutls26 2.8.6-1 libgomp1 4.4.5-8 libgp11-0 2.30.3-5 libgpg-error0 1.6-1 libgpgme11 1.2.0-1.2 libgphoto2-2 2.4.6-3 libgphoto2-port0 2.4.6-3 libgpm2 1.20.4-3.3 libgpod-common 0.7.93-0.3 libgpod4 0.7.93-0.3 libgraph4 2.26.3-5 libgraphite3 1:2.3.1-0.2 libgs8 8.71~dfsg2-9 libgsf-1-114 1.14.18-1 libgsf-1-common 1.14.18-1 libgsl0ldbl 1.14+dfsg-1 libgsm1 1.0.13-3 libgssapi-krb5-2 1.8.3+dfsg-4 libgssdp-1.0-2 0.8.0-2 libgssglue1 0.1-4 libgssrpc4 1.8.3+dfsg-4 libgstfarsight0.10-0 0.0.20-2 libgstreamer-plugins-base0.10-0 0.10.30-1 libgstreamer0.10-0 0.10.30-1 libgtk2-perl 2:1.222-1 libgtk2.0-0 2.20.1-2 libgtk2.0-bin 2.20.1-2 libgtk2.0-cil 2.12.10-1 libgtk2.0-common 2.20.1-2 libgtkglext1 1.2.0-1.1 libgtkhtml-editor-common 3.30.3-1 libgtkhtml-editor0 3.30.3-1 libgtkhtml3.14-19 3.30.3-1 libgtkimageview0 1.6.4-1 libgtkmm-2.4-1c2a 1:2.20.3-1 libgtksourceview2.0-0 2.10.4-1 libgtksourceview2.0-common 2.10.4-1 libgtkspell0 2.0.16-1 libgtop2-7 2.28.1-1 libgtop2-common 2.28.1-1 libgucharmap7 1:2.30.3-1 libgudev-1.0-0 164-3 libgupnp-1.0-3 0.14.0-2 libgupnp-igd-1.0-3 0.1.7-3 libgutenprint2 5.2.6-1 libgvc5 2.26.3-5 libgweather-common 2.30.3-1 libgweather1 2.30.3-1 libhal-storage1 0.5.14-3 libhal1 0.5.14-3 libhpmud0 3.10.6-2 libhsqldb-java-gcj 1.8.0.10-9 libhtml-format-perl 2.04-2 libhtml-parser-perl 3.66-1 libhtml-tagset-perl 3.20-2 libhtml-tree-perl 3.23-2 libhunspell-1.2-0 1.2.11-1 libhyphen0 2.5-1 libical0 0.44-3 libice6 2:1.0.6-2 libicu44 4.4.1-7 libid3tag0 0.15.1b-10 libidl0 0.8.14-0.1 libidn11 1.15-2 libiec61883-0 1.2.0-0.1 libieee1284-3 0.2.11-6 libijs-0.35 0.35-7 libilmbase6 1.0.1-3 libimobiledevice1 1.0.2-1 libiptcdata0 1.0.4-1+b1 libisc62 1:9.7.2.dfsg.P3-1.1 libisccc60 1:9.7.2.dfsg.P3-1.1 libisccfg62 1:9.7.2.dfsg.P3-1.1 libisofs6 0.6.32-2 libjack-jackd2-0 1.9.6~dfsg.1-2 libjasper1 1.900.1-7+b1 libjbig2dec0 0.11-1 libjpeg62 6b1-1 libjson-glib-1.0-0 0.10.2-2 libk5crypto3 1.8.3+dfsg-4 libkadm5clnt-mit7 1.8.3+dfsg-4 libkadm5srv-mit7 1.8.3+dfsg-4 libkate1 0.3.7-3 libkdb5-4 1.8.3+dfsg-4 libkeyutils1 1.4-1 libklibc 1.5.20-1 libkpathsea5 2009-8 libkrb5-3 1.8.3+dfsg-4 libkrb5support0 1.8.3+dfsg-4 liblapack3gf 3.2.1-8 liblcms1 1.18.dfsg-1.2+b3 libldap-2.4-2 2.4.23-7 liblircclient0 0.8.3-5 liblocale-gettext-perl 1.05-6 liblockfile1 1.08-4 liblouis-data 2.0.0-1 liblouis2 2.0.0-1 liblqr-1-0 0.4.1-1 libltdl7 2.2.6b-2 liblua5.1-0 5.1.4-5 liblwres60 1:9.7.2.dfsg.P3-1.1 liblzma2 5.0.0-2 libmad0 0.15.1b-5 libmagic1 5.04-5 libmagick++3 8:6.6.0.4-3 libmagickcore3 8:6.6.0.4-3 libmagickwand3 8:6.6.0.4-3 libmailtools-perl 2.06-1 libmetacity-private0 1:2.30.1-3 libmimic0 1.0.4-2+b2 libmms0 0.6-1 libmng1 1.0.10-1+b1 libmodplug1 1:0.8.8.1-1 libmono-addins-gui0.2-cil 0.4-8 libmono-addins0.2-cil 0.4-8 libmono-cairo2.0-cil 2.6.7-5 libmono-corlib2.0-cil 2.6.7-5 libmono-i18n-west2.0-cil 2.6.7-5 libmono-posix2.0-cil 2.6.7-5 libmono-security2.0-cil 2.6.7-5 libmono-sharpzip2.84-cil 2.6.7-5 libmono-system2.0-cil 2.6.7-5 libmozjs2d 1.9.1.16-4 libmpcdec6 2:0.1~r459-1 libmpeg2-4 0.4.1-3 libmpfr4 3.0.0-2 libmtp8 1.0.3-1 libmusicbrainz3-6 3.0.2-2 libmusicbrainz4c2a 2.1.5-4 libmythes-1.2-0 2:1.2.1-1 libnautilus-extension1 2.30.1-2 libncurses5 5.7+20100313-5 libncursesw5 5.7+20100313-5 libndesk-dbus-glib1.0-cil 0.4.1-3 libndesk-dbus1.0-cil 0.6.0-4 libneon27-gnutls 0.29.3-3 libnet-dbus-perl 0.33.6-2 libnet1 1.1.4-2 libnetpbm10 2:10.0-12.2+b1 libnewt0.52 0.52.11-1 libnfnetlink0 1.0.0-1 libnfsidmap2 0.23-2 libnice0 0.0.12-1 libnl1 1.1-6 libnm-glib-vpn1 0.8.1-6 libnm-glib2 0.8.1-6 libnm-util1 0.8.1-6 libnotify1 0.5.0-2 libnspr4-0d 4.8.6-1 libnss-mdns 0.10-3.1 libnss3-1d 3.12.8-1 libntfs-3g75 1:2010.3.6-1 libntfs10 2.0.0-1+b1 libofa0 0.9.3-3.1 libogg0 1.2.0~dfsg-1 liboil0.3 0.3.17-2 liboobs-1-4 2.30.1-1 libopal3.6.8 3.6.8~dfsg-2 libopencore-amrnb0 0.1.2-1 libopencore-amrwb0 0.1.2-1 libopenexr6 1.6.1-4.1 libopenjpeg2 1.3+dfsg-4 libopenobex1 1.5-2 libopenraw1 0.0.8-2 libopenspc0 0.3.99a-2 liborbit2 1:2.14.18-0.1 liborc-0.4-0 1:0.4.6-2 libpam-ck-connector 0.4.1-4 libpam-gnome-keyring 2.30.3-5 libpam-modules 1.1.1-6.1 libpam-runtime 1.1.1-6.1 libpam0g 1.1.1-6.1 libpanel-applet2-0 2.30.2-2 libpango-perl 1.221-2 libpango1.0-0 1.28.3-1+squeeze2 libpango1.0-common 1.28.3-1+squeeze2 libpangomm-1.4-1 2.26.2-1 libpaper-utils 1.1.24 libpaper1 1.1.24 libparted0debian1 2.3-5 libpathplan4 2.26.3-5 libpcap0.8 1.1.1-2 libpci3 1:3.1.7-6 libpciaccess0 0.12.0-1 libpcre3 8.02-1.1 libpcsclite1 1.5.5-4 libperl5.10 5.10.1-17 libpixman-1-0 0.16.4-1 libplist1 1.3-2 libplot2c2 2.5-4 libpng12-0 1.2.44-1 libpolkit-agent-1-0 0.96-4 libpolkit-backend-1-0 0.96-4 libpolkit-gobject-1-0 0.96-4 libpolkit-gtk-1-0 0.96-3 libpoppler-glib4 0.12.4-1.2 libpoppler5 0.12.4-1.2 libpopt0 1.16-1 libportaudio2 19+svn20071022-3.2 libpostproc51 4:0.5.2-6 libproxy0 0.3.1-2 libpstoedit0c2a 3.50-3+b1 libpt2.6.7 2.6.7-1 libpth20 2.0.7-16 libpulse-mainloop-glib0 0.9.21-3 libpulse0 0.9.21-3 libpython2.6 2.6.6-8+b1 libraptor1 1.4.21-2 librarian0 0.8.1-5 librasqal2 0.9.20-1 libraw1394-11 2.0.5-2 librdf0 1.0.10-3 libreadline6 6.1-3 librpcsecgss3 0.19-2 librpm1 4.8.1-6 librpmio1 4.8.1-6 librsvg2-2 2.26.3-1 librsvg2-common 2.26.3-1 libsane 1.0.21-9 libsane-extras 1.0.21.2 libsane-hpaio 3.10.6-2 libsasl2-2 2.1.23.dfsg1-7 libsasl2-modules 2.1.23.dfsg1-7 libschroedinger-1.0-0 1.0.9-2 libsdl1.2debian 1.2.14-6.1 libsdl1.2debian-alsa 1.2.14-6.1 libseed0 2.30.0-1+b1 libselinux1 2.0.96-1 libsensors4 1:3.1.2-6 libsepol1 2.0.41-1 libsgutils2-2 1.29-1 libshout3 2.2.2-5+b1 libsidplay1 1.36.59-5 libsigc++-2.0-0c2a 2.2.4.2-1 libslab0a 2.30.0-1 libslang2 2.2.2-4 libslp1 1.2.1-7.8 libslv2-9 0.6.6-5 libsm6 2:1.1.1-1 libsmbclient 2:3.5.6~dfsg-3squeeze2 libsndfile1 1.0.21-3 libsnmp-base 5.4.3~dfsg-2 libsnmp15 5.4.3~dfsg-2 libsoundtouch1c2 1.3.1-2 libsoup-gnome2.4-1 2.30.2-1 libsoup2.4-1 2.30.2-1 libspectre1 0.2.6-1 libspeex1 1.2~rc1-1 libspeexdsp1 1.2~rc1-1 libsqlite3-0 3.7.3-1 libsrtp0 1.4.4~dfsg-6 libss2 1.41.12-2 libssh-4 0.4.5-3 libssl0.9.8 0.9.8o-4squeeze1 libstartup-notification0 0.10-1 libstdc++6 4.4.5-8 libstlport4.6ldbl 4.6.2-7 libsvga1 1:1.4.3-29 libswscale0 4:0.5.2-6 libsysfs2 2.1.0+repack-1 libt1-5 5.1.2-3 libtag1-vanilla 1.6.3-1 libtag1c2a 1.6.3-1 libtalloc2 2.0.1-1 libtasn1-3 2.7-1 libtdb1 1.2.1-2+b1 libtelepathy-farsight0 0.0.14-2+b1 libtelepathy-glib0 0.11.11-1 libtext-charwidth-perl 0.04-6 libtext-iconv-perl 1.7-2 libtext-wrapi18n-perl 0.06-7 libthai-data 0.1.14-2 libthai0 0.1.14-2 libtheora0 1.1.1+dfsg.1-3 libtidy-0.99-0 20091223cvs-1 libtie-ixhash-perl 1.21-2 libtiff4 3.9.4-5 libtimedate-perl 1.2000-1 libtokyocabinet8 1.4.37-6 libtotem-plparser17 2.30.3-1 libtracker-client-0.8-0 0.8.17-1 libts-0.0-0 1.0-7 libtwolame0 0.3.12-1 libudev0 164-3 libunique-1.0-0 1.1.6-1.1 libupower-glib1 0.9.5-5 liburi-perl 1.54-2 libusb-0.1-4 2:0.1.12-16 libusb-1.0-0 2:1.0.8-2 libusbmuxd1 1.0.4-1 libutempter0 1.1.5-3 libuuid-perl 0.02-4 libuuid1 2.17.2-9 libv4l-0 0.8.0-1 libvisual-0.4-0 0.4.0-3 libvisual-0.4-plugins 0.4.0.dfsg.1-2 libvorbis0a 1.3.1-1 libvorbisenc2 1.3.1-1 libvorbisfile3 1.3.1-1 libvpx0 0.9.1-2 libvte-common 1:0.24.3-2 libvte9 1:0.24.3-2 libwavpack1 4.60.1-1 libwbclient0 2:3.5.6~dfsg-3squeeze2 libwebkit-1.0-2 1.2.6-2 libwebkit-1.0-common 1.2.6-2 libwildmidi1 0.2.3.2-2 libwmf0.2-7 0.2.8.4-6.1+b1 libwnck-common 2.30.4-2 libwnck22 2.30.4-2 libwpd8c2a 0.8.14-1 libwpg-0.1-1 0.1.3-1 libwps-0.1-1 0.1.2-1 libwrap0 7.6.q-19 libwww-perl 5.836-1 libx11-6 2:1.3.3-4 libx11-data 2:1.3.3-4 libx11-xcb1 2:1.3.3-4 libx86-1 1.1+ds1-6 libxapian22 1.2.3-2 libxau6 1:1.0.6-1 libxaw7 2:1.0.7-1 libxcb-atom1 0.3.6-1 libxcb-aux0 0.3.6-1 libxcb-dri2-0 1.6-1 libxcb-event1 0.3.6-1 libxcb-render-util0 0.3.6-1 libxcb-render0 1.6-1 libxcb1 1.6-1 libxcomposite1 1:0.4.2-1 libxcursor1 1:1.1.10-2 libxdamage1 1:1.1.3-1 libxdmcp6 1:1.0.3-2 libxdot4 2.26.3-5 libxext6 2:1.1.2-1 libxfixes3 1:4.0.5-1 libxfont1 1:1.4.1-2 libxft2 2.1.14-2 libxi6 2:1.3-6 libxinerama1 2:1.1-3 libxkbfile1 1:1.0.6-2 libxklavier16 5.0-2 libxml-parser-perl 2.36-1.1+b1 libxml-twig-perl 1:3.34-1 libxml-xpathengine-perl 0.12-2 libxml2 2.7.8.dfsg-2 libxml2-utils 2.7.8.dfsg-2 libxmu6 2:1.0.5-2 libxmuu1 2:1.0.5-2 libxpm4 1:3.5.8-1 libxrandr2 2:1.3.0-3 libxrender1 1:0.9.6-1 libxres1 2:1.0.4-1 libxslt1.1 1.1.26-6 libxss1 1:1.2.0-2 libxt6 1:1.0.7-1 libxtst6 2:1.1.0-3 libxv1 2:1.0.5-1 libxvmc1 2:1.0.5-1 libxxf86dga1 2:1.1.1-2 libxxf86vm1 1:1.1.0-2 libzbar0 0.10+doc-4 liferea 1.6.4-1 liferea-data 1.6.4-1 linux-base 2.6.32-30 linux-image-2.6-686 2.6.32+29 linux-image-2.6.32-5-686 2.6.32-30 linux-sound-base 1.0.23+dfsg-2 lm-sensors 1:3.1.2-6 locales 2.11.2-10 login 1:4.1.4.2+svn3283-2+squeeze1 logrotate 3.7.8-6 lsb-base 3.2-23.2squeeze1 lsb-release 3.2-23.2squeeze1 lsof 4.81.dfsg.1-1 m4 1.4.14-3 man-db 2.5.7-8 manpages 3.27-1 mawk 1.3.3-15 media-player-info 6-1 menu 2.1.44 menu-xdg 0.5 mesa-utils 7.7.1-4 metacity 1:2.30.1-3 metacity-common 1:2.30.1-3 mime-support 3.48-1 min12xxw 0.0.9-3 mlocate 0.22.2-1 mobile-broadband-provider-info 20101106-1 modemmanager 0.4+git.20100624t180933.6e79d15-2 module-init-tools 3.12-1 mono-2.0-gac 2.6.7-5 mono-gac 2.6.7-5 mono-runtime 2.6.7-5 mount 2.17.2-9 mousetweaks 2.30.2-1 mtools 4.0.12-1 mutt 1.5.20-9+squeeze1 myspell-en-us 1:3.2.1-2 nano 2.2.4-1 nautilus 2.30.1-2 nautilus-data 2.30.1-2 nautilus-sendto 2.28.4-2+b1 nautilus-sendto-empathy 2.30.3-1 ncurses-base 5.7+20100313-5 ncurses-bin 5.7+20100313-5 ncurses-term 5.7+20100313-5 net-tools 1.60-23 netbase 4.45 netcat-traditional 1.10-38 network-manager 0.8.1-6 network-manager-gnome 0.8.1-2 nfs-common 1:1.2.2-4 notification-daemon 0.5.0-2 ntfs-3g 1:2010.3.6-1 ntfsprogs 2.0.0-1+b1 obex-data-server 0.4.5-1+b1 obexd-client 0.28-1 openoffice.org-base 1:3.2.1-11+squeeze2 openoffice.org-calc 1:3.2.1-11+squeeze2 openoffice.org-common 1:3.2.1-11+squeeze2 openoffice.org-draw 1:3.2.1-11+squeeze2 openoffice.org-filter-binfilter 1:3.2.1-11+squeeze2 openoffice.org-gcj 1:3.2.1-11+squeeze2 openoffice.org-impress 1:3.2.1-11+squeeze2 openoffice.org-math 1:3.2.1-11+squeeze2 openoffice.org-thesaurus-en-us 1:3.2.1-2 openoffice.org-writer 1:3.2.1-11+squeeze2 openssh-blacklist 0.4.1 openssh-blacklist-extra 0.4.1 openssh-client 1:5.5p1-6 openssl 0.9.8o-4squeeze1 os-prober 1.42 p7zip-full 9.04~dfsg.1-1 passwd 1:4.1.4.2+svn3283-2+squeeze1 patch 2.6-2 pciutils 1:3.1.7-6 perl 5.10.1-17 perl-base 5.10.1-17 perl-modules 5.10.1-17 pkg-config 0.25-1.1 pm-utils 1.3.0-3 pnm2ppa 1.12-16.3 policykit-1 0.96-4 policykit-1-gnome 0.96-3 poppler-utils 0.12.4-1.2 portmap 6.0.0-2 powermgmt-base 1.31 ppp 2.4.5-4 procmail 3.22-19 procps 1:3.2.8-9 psmisc 22.11-1 python 2.6.6-3+squeeze5 python-apt 0.7.100.1 python-apt-common 0.7.100.1 python-aptdaemon 0.31+bzr413-1.1 python-aptdaemon-gtk 0.31+bzr413-1.1 python-axiom 0.6.0-2 python-beautifulsoup 3.1.0.1-2 python-brlapi 4.2-7 python-bugbuddy 2.30.0-4 python-cairo 1.8.8-1+b1 python-central 0.6.16+nmu1 python-chardet 2.0.1-1 python-clientform 0.2.10-2.1 python-coherence 0.6.6.2-5 python-configobj 4.7.2+ds-1 python-crypto 2.1.0-2 python-cups 1.9.48-1 python-cupshelpers 1.2.3-3 python-dbus 0.83.1-1 python-debian 0.1.18 python-epsilon 0.6.0-3 python-evolution 2.30.0-4 python-feedparser 4.1-14 python-gconf 2.28.1-1 python-gdata 2.0.8-1.1 python-gdbm 2.6.6-1 python-glade2 2.17.0-4 python-gmenu 2.30.3-1 python-gnome2 2.28.1-1 python-gnomeapplet 2.30.0-4 python-gnomedesktop 2.30.0-4 python-gnomekeyring 2.30.0-4 python-gnupginterface 0.3.2-9.1 python-gobject 2.21.4+is.2.21.3-1 python-gst0.10 0.10.19-1 python-gtk2 2.17.0-4 python-gtkglext1 1.1.0-5 python-gtksourceview2 2.10.1-1 python-httplib2 0.6.0-4 python-imaging 1.1.7-2 python-libxml2 2.7.8.dfsg-2 python-louie 1.1-1.1 python-louis 2.0.0-1 python-mako 0.3.4-5 python-markupsafe 0.9.2-3 python-mechanize 0.1.11-1.1 python-minimal 2.6.6-3+squeeze5 python-nevow 0.10.0-2 python-notify 0.1.1-2+b2 python-numpy 1:1.4.1-5 python-opengl 3.0.1~b2-1 python-openssl 0.10-1 python-pam 0.4.2-12.2 python-pexpect 2.3-1 python-pkg-resources 0.6.14-4 python-pyasn1 0.0.11a-1 python-pyatspi 1.30.1-3 python-pyorbit 2.24.0-6 python-pysqlite2 2.6.0-1 python-rdflib 2.4.2-1+b1 python-reportbug 4.12.6 python-serial 2.3-1 python-software-properties 0.60.debian-3 python-support 1.0.10 python-tagpy 0.94.7-2 python-twisted-bin 10.1.0-3 python-twisted-conch 1:10.1.0-1 python-twisted-core 10.1.0-3 python-twisted-web 10.1.0-1 python-utidylib 0.2-6 python-vte 1:0.24.3-2 python-webkit 1.1.7-1+b1 python-wnck 2.30.0-4 python-xapian 1.2.3-3 python-xdg 0.19-2 python-zope.interface 3.5.3-1+b1 python2.6 2.6.6-8+b1 python2.6-minimal 2.6.6-8+b1 radeontool 1.6.1-1 rarian-compat 0.8.1-5 readline-common 6.1-3 remmina 0.8.3-1 remmina-plugin-data 0.8.3-2 remmina-plugin-rdp 0.8.3-2 remmina-plugin-vnc 0.8.3-2 reportbug 4.12.6 rhythmbox 0.12.8-3 rhythmbox-plugin-cdrecorder 0.12.8-3 rhythmbox-plugins 0.12.8-3 rpm-common 4.8.1-6 rpm2cpio 4.8.1-6 rsyslog 4.6.4-2 sane-utils 1.0.21-9 seahorse 2.30.1-2 seahorse-plugins 2.30.1-3 sed 4.2.1-7 sensible-utils 0.0.4 sgml-base 1.26+nmu1 sgml-data 2.0.4 shared-mime-info 0.71-4 software-center 2.0.7debian7 software-properties-gtk 0.60.debian-3 sound-juicer 2.28.2-3 ssl-cert 1.0.28 sudo 1.7.4p4-2.squeeze.1 synaptic 0.70~pre1+b1 system-config-printer 1.2.3-3 system-config-printer-udev 1.2.3-3 system-tools-backends 2.10.1-2 sysv-rc 2.88dsf-13.1 sysvinit 2.88dsf-13.1 sysvinit-utils 2.88dsf-13.1 tar 1.23-3 tasksel 2.88 tasksel-data 2.88 tcl 8.4.16-2 tcl8.4 8.4.19-4 tcpd 7.6.q-19 tcptraceroute 1.5beta7+debian-4 telepathy-gabble 0.9.15-1+squeeze1 telepathy-mission-control-5 1:5.4.3-1 telepathy-salut 0.3.12-1 telnet 0.17-36 texinfo 4.13a.dfsg.1-6 time 1.7-23.1 tomboy 1.2.2-2 totem 2.30.2-6 totem-coherence 2.30.2-6 totem-common 2.30.2-6 totem-mozilla 2.30.2-6 totem-plugins 2.30.2-6 traceroute 1:2.0.15-1 transmission-common 2.03-2 transmission-gtk 2.03-2 tsconf 1.0-7 ttf-dejavu 2.31-1 ttf-dejavu-core 2.31-1 ttf-dejavu-extra 2.31-1 ttf-freefont 20090104-7 ttf-lyx 1.6.7-1 twm 1:1.0.4-2 tzdata 2010o-1 ucf 3.0025+nmu1 udev 164-3 udisks 1.0.1+git20100614-3 unattended-upgrades 0.62.2 uno-libs3 1.6.1+OOo3.2.1-11+squeeze2 unzip 6.0-4 update-inetd 4.38+nmu1 update-manager-core 0.200.5-1 update-manager-gnome 0.200.5-1 update-notifier 0.99.3debian8 update-notifier-common 0.99.3debian8 upower 0.9.5-5 ure 1.6.1+OOo3.2.1-11+squeeze2 usb-modeswitch 1.1.4-2 usb-modeswitch-data 20100826-1 usbmuxd 1.0.4-1 usbutils 0.87-5 util-linux 2.17.2-9 vbetool 1.1-2 vim-common 2:7.2.445+hg~cb94c42c0e1a-1 vim-tiny 2:7.2.445+hg~cb94c42c0e1a-1 vino 2.28.2-2 w3m 0.5.2-9 wamerican 6-3 wget 1.12-2.1 whiptail 0.52.11-1 whois 5.0.10 wpasupplicant 0.6.10-2.1 x-ttcidfont-conf 32 x11-apps 7.5+5 x11-common 1:7.5+8 x11-session-utils 7.5+1 x11-utils 7.5+4 x11-xfs-utils 7.4+1 x11-xkb-utils 7.5+5 x11-xserver-utils 7.5+2 xauth 1:1.0.4-1 xbase-clients 1:7.5+8 xbitmaps 1.1.0-1 xdg-user-dirs 0.13-2 xdg-user-dirs-gtk 0.8-1 xdg-utils 1.0.2+cvs20100307-2 xfonts-100dpi 1:1.0.1 xfonts-75dpi 1:1.0.1 xfonts-base 1:1.0.1 xfonts-encodings 1:1.0.3-1 xfonts-mathml 4 xfonts-scalable 1:1.0.1-1 xfonts-utils 1:7.5+2 xinit 1.2.0-2 xkb-data 1.8-2 xml-core 0.13 xorg 1:7.5+8 xorg-docs-core 1:1.5-1 xsane 0.997-2+b1 xsane-common 0.997-2 xserver-common 2:1.7.7-11 xserver-xephyr 2:1.7.7-11 xserver-xorg 1:7.5+8 xserver-xorg-core 2:1.7.7-11 xserver-xorg-input-all 1:7.5+8 xserver-xorg-input-evdev 1:2.3.2-6 xserver-xorg-input-mouse 1:1.5.0-2 xserver-xorg-input-synaptics 1.2.2-2 xserver-xorg-input-vmmouse 1:12.6.9-2 xserver-xorg-input-wacom 0.10.5+20100416-1 xserver-xorg-video-all 1:7.5+8 xserver-xorg-video-apm 1:1.2.2-2 xserver-xorg-video-ark 1:0.7.2-2 xserver-xorg-video-ati 1:6.13.1-2+squeeze1 xserver-xorg-video-chips 1:1.2.3-1 xserver-xorg-video-cirrus 1:1.3.2-2+squeeze1 xserver-xorg-video-fbdev 1:0.4.2-2 xserver-xorg-video-geode 2.11.9-7 xserver-xorg-video-i128 1:1.3.3-2 xserver-xorg-video-i740 1:1.3.2-2 xserver-xorg-video-intel 2:2.13.0-5 xserver-xorg-video-mach64 6.8.2-3 xserver-xorg-video-mga 1:1.4.11.dfsg-4+squeeze1 xserver-xorg-video-neomagic 1:1.2.4-3 xserver-xorg-video-nouveau 1:0.0.15+git20100329+7858345-5 xserver-xorg-video-nv 1:2.1.17-3 xserver-xorg-video-openchrome 1:0.2.904+svn842-2 xserver-xorg-video-r128 6.8.1-3 xserver-xorg-video-radeon 1:6.13.1-2+squeeze1 xserver-xorg-video-rendition 1:4.2.3-3 xserver-xorg-video-s3 1:0.6.3-2 xserver-xorg-video-s3virge 1:1.10.4-2 xserver-xorg-video-savage 1:2.3.1-2 xserver-xorg-video-siliconmotion 1:1.7.3-2 xserver-xorg-video-sis 1:0.10.3-1 xserver-xorg-video-sisusb 1:0.9.3-2 xserver-xorg-video-tdfx 1:1.4.3-2 xserver-xorg-video-trident 1:1.3.3-2 xserver-xorg-video-tseng 1:1.2.3-2 xserver-xorg-video-vesa 1:2.3.0-3 xserver-xorg-video-vmware 1:11.0.1-2 xserver-xorg-video-voodoo 1:1.2.3-2 xsltproc 1.1.26-6 xterm 261-1 xulrunner-1.9.1 1.9.1.16-4 xz-utils 5.0.0-2 yelp 2.30.1+webkit-1 zenity 2.30.0-1 zlib1g 1:1.2.3.4.dfsg-3AppRecommender-0.7.5/bin/example/popcon_ubuntu1010t000066400000000000000000002233631306751311600221540ustar00rootroot00000000000000POPULARITY-CONTEST-0 TIME:1312866727 ID:18c40ad842f4407ab153d9207e475498 ARCH:i386 POPCONVER:1.48ubuntu1 1312866727 1300530225 xserver-xorg-input-evdev /usr/lib/xorg/modules/input/evdev_drv.so 1312866727 1300530227 xserver-xorg-input-vmmouse /usr/lib/xorg/modules/input/vmmouse_drv.so 1312866727 1300530206 xserver-xorg-video-fbdev /usr/lib/xorg/modules/drivers/fbdev_drv.so 1312866727 1300530200 xserver-xorg-core /usr/bin/Xorg 1312866727 1300530223 xserver-xorg-video-vmware /usr/lib/xorg/modules/drivers/vmwlegacy_drv.so 1312866727 1300530221 xserver-xorg-video-vesa /usr/lib/xorg/modules/drivers/vesa_drv.so 1312866727 1300531937 wpasupplicant /sbin/wpa_supplicant 1312866727 1300528870 zlib1g /lib/libz.so.1.2.3.4 1312866726 1300528867 upstart /sbin/upstart-udev-bridge 1312866726 1300528866 udev /sbin/udevd 1312866726 1300531479 upower /usr/lib/upower/upowerd 1312866726 1300531882 ubuntuone-client-gnome /usr/lib/nautilus/extensions-2.0/libnautilus-ubuntuone.so 1312866726 1300530687 udisks /usr/lib/udisks/udisks-daemon 1312866726 1300528869 util-linux /sbin/getty 1312866725 1300529904 ttf-dejavu-core /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-Bold.ttf 1312866724 1300532122 totem /usr/lib/nautilus/extensions-2.0/libtotem-properties-page.so 1312866723 1300528854 python2.6-minimal /usr/bin/python2.6 1312866723 1300532061 rtkit /usr/lib/rtkit/rtkit-daemon 1312866723 1300529007 rsyslog /usr/lib/rsyslog/lmnet.so 1312866723 1300529006 python2.6 /usr/lib/python2.6/lib-dynload/pyexpat.so 1312866722 1300530633 python-gtk2 /usr/lib/pyshared/python2.6/gtk-2.0/pangocairo.so 1312866722 1300529924 python-gobject /usr/lib/pyshared/python2.6/gtk-2.0/gi/_gi.so 1312866722 1300531684 python-notify /usr/lib/pyshared/python2.6/gtk-2.0/pynotify/_pynotify.so 1312866721 1300530662 policykit-1 /usr/lib/policykit-1/polkitd 1312866721 1300532025 pulseaudio-module-x11 /usr/lib/pulse-0.9.21/modules/module-x11-xsmp.so 1312866721 1300532024 pulseaudio-module-gconf /usr/lib/pulse-0.9.21/modules/module-gconf.so 1312866721 1300530680 policykit-1-gnome /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1 1312866721 1300529923 python-cairo /usr/lib/pyshared/python2.6/cairo/_cairo.so 1312866721 1300532023 pulseaudio-esound-compat /usr/lib/pulse-0.9.21/modules/module-esound-protocol-unix.so 1312866721 1300532234 pulseaudio-module-bluetooth /usr/lib/pulse-0.9.21/modules/libbluetooth-util.so 1312866721 1300531787 pulseaudio /usr/lib/libpulsecore-0.9.21.so 1312866721 1300529909 python-dbus /usr/lib/pyshared/python2.6/_dbus_bindings.so 1312866721 1300532030 python-cups /usr/lib/pyshared/python2.6/cups.so 1312866720 1300528850 perl-base /usr/bin/perl 1312866720 1300532801 openssh-client /usr/bin/ssh-agent 1312866719 1300531940 network-manager /usr/lib/NetworkManager/libnm-settings-plugin-ifupdown.so 1312866719 1300531924 nautilus-sendto /usr/lib/nautilus/extensions-2.0/libnautilus-sendto.so 1312866719 1300531935 nautilus-share /usr/lib/nautilus/extensions-2.0/libnautilus-share.so 1312866719 1300528845 mountall /sbin/mountall 1312866719 1300531943 network-manager-gnome /usr/bin/nm-applet 1312866719 1300528837 login /bin/su 1312866719 1300531579 nautilus /usr/bin/nautilus 1312866719 1300531919 modemmanager /usr/lib/ModemManager/libmm-plugin-simtech.so 1312866719 1300531574 metacity /usr/bin/metacity 1312866710 1300530548 libvorbis0a /usr/lib/libvorbis.so.0.4.4 1312866710 1300530626 libvorbisenc2 /usr/lib/libvorbisenc.so.2.0.7 1312866710 1300530536 libxcursor1 /usr/lib/libXcursor.so.1.0.2 1312866710 1300529920 libx11-6 /usr/lib/libX11.so.6.3.0 1312866710 1300530586 libwnck22 /usr/lib/libwnck-1.so.22.3.30 1312866710 1300530629 libxtst6 /usr/lib/libXtst.so.6.1.0 1312866710 1300530172 libxkbfile1 /usr/lib/libxkbfile.so.1.0.2 1312866710 1300530549 libvorbisfile3 /usr/lib/libvorbisfile.so.3.3.2 1312866710 1300529921 libxcb-shm0 /usr/lib/libxcb-shm.so.0.0.0 1312866710 1300529915 libxau6 /usr/lib/libXau.so.6.0.0 1312866710 1300530535 libxcomposite1 /usr/lib/libXcomposite.so.1.0.0 1312866710 1300530188 libxfont1 /usr/lib/libXfont.so.1.4.1 1312866710 1300531130 libvte-common /usr/share/vte/termcap/xterm 1312866710 1300530617 libxklavier16 /usr/lib/libxklavier.so.16.0.0 1312866710 1300530565 libxcb-event1 /usr/lib/libxcb-event.so.1.0.0 1312866710 1300530622 libxss1 /usr/lib/libXss.so.1.0.0 1312866710 1300530537 libxinerama1 /usr/lib/libXinerama.so.1.0.0 1312866710 1300530628 libwrap0 /lib/libwrap.so.0.7.6 1312866710 1300529916 libxcb1 /usr/lib/libxcb.so.1.1.0 1312866710 1300530187 libxfixes3 /usr/lib/libXfixes.so.3.1.0 1312866710 1300530584 libxres1 /usr/lib/libXRes.so.1.0.0 1312866710 1300531131 libvte9 /usr/lib/libvte9/gnome-pty-helper 1312866710 1300530508 libxml2 /usr/lib/libxml2.so.2.7.7 1312866710 1300529916 libxdmcp6 /usr/lib/libXdmcp.so.6.0.0 1312866710 1300530189 libxi6 /usr/lib/libXi.so.6.1.0 1312866710 1300530537 libxdamage1 /usr/lib/libXdamage.so.1.1.0 1312866710 1300529922 libxrender1 /usr/lib/libXrender.so.1.3.0 1312866710 1300530167 libxext6 /usr/lib/libXext.so.6.4.0 1312866710 1300530209 libxcb-aux0 /usr/lib/libxcb-aux.so.0.0.0 1312866710 1300530538 libxrandr2 /usr/lib/libXrandr.so.2.2.0 1312866710 1300529920 libxcb-render0 /usr/lib/libxcb-render.so.0.0.0 1312866710 1300530186 libx11-xcb1 /usr/lib/libX11-xcb.so.1.0.0 1312866710 1300530565 libxcb-atom1 /usr/lib/libxcb-atom.so.1.0.0 1312866710 1300530963 libxxf86vm1 /usr/lib/libXxf86vm.so.1.0.0 1312866709 1300531172 libslp1 /usr/lib/libslp.so.1.0.1 1312866709 1300530511 libtasn1-3 /usr/lib/libtasn1.so.3.1.9 1312866709 1300531763 libspeexdsp1 /usr/lib/sse2/libspeexdsp.so.1.5.0 1312866709 1300530584 libpolkit-gobject-1-0 /usr/lib/libpolkit-gobject-1.so.0.0.0 1312866709 1300530581 libnotify1 /usr/lib/libnotify.so.1.2.3 1312866709 1300530535 libpango1.0-0 /usr/lib/pango/1.6.0/modules/pango-basic-fc.so 1312866709 1300528839 libudev0 /lib/libudev.so.0.9.1 1312866709 1300530630 libpulse-mainloop-glib0 /usr/lib/libpulse-mainloop-glib.so.0.0.4 1312866709 1300531169 libpaper1 /usr/lib/libpaper.so.1.1.2 1312866709 1300531473 libupower-glib1 /usr/lib/libupower-glib.so.1.0.1 1312866709 1300530608 librsvg2-2 /usr/lib/librsvg-2.so.2.32.0 1312866709 1300530630 libpulse0 /usr/lib/libpulsecommon-0.9.21.so 1312866709 1300530639 librsvg2-common /usr/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-svg.so 1312866709 1300530575 libsoup2.4-1 /usr/lib/libsoup-2.4.so.1.3.0 1312866709 1300529914 libpixman-1-0 /usr/lib/libpixman-1.so.0.18.4 1312866709 1300530169 libsm6 /usr/lib/libSM.so.6.0.1 1312866709 1300528836 libplymouth2 /lib/libply-boot-client.so.2.0.0 1312866709 1300528834 libpam-modules /lib/security/pam_unix.so 1312866709 1300530517 libsasl2-2 /usr/lib/libsasl2.so.2.0.23 1312866709 1300531880 libsyncdaemon-1.0-1 /usr/lib/libsyncdaemon-1.0.so.1.0.0 1312866709 1300530566 libstartup-notification0 /usr/lib/libstartup-notification-1.so.0.0.0 1312866709 1300530582 libpanel-applet2-0 /usr/lib/libpanel-applet-2.so.0.2.68 1312866709 1300530678 libpolkit-agent-1-0 /usr/lib/libpolkit-agent-1.so.0.0.0 1312866709 1300531328 libnm-util1 /usr/lib/libnm-util.so.1.6.0 1312866709 1300531303 libtelepathy-glib0 /usr/lib/libtelepathy-glib.so.0.45.0 1312866709 1300528829 libncurses5 /lib/libncurses.so.5.7 1312866709 1300531591 libpangomm-1.4-1 /usr/lib/libpangomm-1.4.so.1.0.30 1312866709 1300531850 libpcsclite1 /lib/libpcsclite.so.1.0.0 1312866709 1300530627 libsndfile1 /usr/lib/libsndfile.so.1.0.21 1312866709 1300528826 libpng12-0 /lib/libpng12.so.0.44.0 1312866709 1300530657 libpolkit-backend-1-0 /usr/lib/libpolkit-backend-1.so.0.0.0 1312866709 1300531847 libpam-ck-connector /lib/security/pam_ck_connector.so 1312866709 1300528997 libsqlite3-0 /usr/lib/libsqlite3.so.0.8.6 1312866709 1300531762 libsamplerate0 /usr/lib/libsamplerate.so.0.1.7 1312866709 1300530598 libnspr4-0d /usr/lib/libplds4.so 1312866709 1300530182 libpciaccess0 /usr/lib/libpciaccess.so.0.10.8 1312866709 1300530185 libutouch-grail1 /usr/lib/libutouch-grail.so.1.0.0 1312866709 1300528825 libnih1 /lib/libnih.so.1.0.0 1312866709 1300530185 libtalloc2 /usr/lib/libtalloc.so.2.0.1 1312866709 1300529852 libsigc++-2.0-0c2a /usr/lib/libsigc-2.0.so.0.0.0 1312866709 1300528996 libpopt0 /lib/libpopt.so.0.0.0 1312866709 1300530602 libnss3-1d /usr/lib/libnss3.so 1312866709 1300530547 libogg0 /usr/lib/libogg.so.0.7.0 1312866709 1300530574 libproxy0 /usr/lib/libproxy.so.0.0.0 1312866709 1300528835 libpam0g /lib/libpam_misc.so.0.82.0 1312866709 1300528841 libuuid1 /lib/libuuid.so.1.3.0 1312866709 1300531474 libplist1 /usr/lib/libplist.so.1.1.3 1312866709 1300528826 libselinux1 /lib/libselinux.so.1 1312866709 1300528835 libpcre3 /lib/libpcre.so.3.12.1 1312866709 1300531476 libusb-1.0-0 /lib/libusb-1.0.so.0.0.0 1312866709 1300528987 libstdc++6 /usr/lib/libstdc++.so.6.0.14 1312866709 1300530621 libunique-1.0-0 /usr/lib/libunique-1.0.so.0.100.6 1312866709 1300528824 libnih-dbus1 /lib/libnih-dbus.so.1.0.0 1312866709 1300531848 libpam-gnome-keyring /lib/security/pam_gnome_keyring.so 1312866709 1300531212 libtotem-plparser17 /usr/lib/libtotem-plparser.so.17.0.0 1312866709 1300531160 libnl1 /usr/lib/libnl.so.1.1 1312866709 1300530507 liborbit2 /usr/lib/libORBitCosNaming-2.so.0.1.0 1312866709 1300528831 libssl0.9.8 /lib/libcrypto.so.0.9.8 1312866709 1300530548 libtdb1 /usr/lib/libtdb.so.1.2.1 1312866709 1300530576 libsoup-gnome2.4-1 /usr/lib/libsoup-gnome-2.4.so.1.3.0 1312866709 1300531329 libnm-glib2 /usr/lib/libnm-glib.so.2.4.1 1312866709 1300531475 libusbmuxd1 /usr/lib/libusbmuxd.so.1.0.4 1312866708 1300531652 libgphoto2-2 /usr/lib/libgphoto2.so.2.4.0 1312866708 1300530614 libindicator1 /usr/lib/libindicator.so.1.0.0 1312866708 1300531593 libgtkmm-2.4-1c2a /usr/lib/libgtkmm-2.4.so.1.1.0 1312866708 1300530546 libltdl7 /usr/lib/libltdl.so.7.2.1 1312866708 1300530615 libjson-glib-1.0-0 /usr/lib/libjson-glib-1.0.so.0.1000.2 1312866708 1300530168 libice6 /usr/lib/libICE.so.6.3.0 1312866708 1300530516 libgssapi-krb5-2 /usr/lib/libgssapi_krb5.so.2.2 1312866708 1300530513 libkrb5support0 /usr/lib/libkrb5support.so.0.1 1312866708 1300530517 libldap-2.4-2 /usr/lib/libldap_r-2.4.so.2.5.6 1312866708 1300530757 libgstreamer-plugins-base0.10-0 /usr/lib/libgstvideo-0.10.so.0.21.0 1312866708 1300531742 libgwibber0 /usr/lib/libgwibber.so.0.0.0 1312866708 1300530674 libgnomeui-0 /usr/lib/libgnomeui-2.so.0.2400.4 1312866708 1300531220 libnautilus-extension1 /usr/lib/libnautilus-extension.so.1.2.0 1312866708 1300530558 libgnomevfs2-0 /usr/lib/libgnomevfs-2.so.0.2400.3 1312866708 1300531649 libgphoto2-port0 /usr/lib/libgphoto2_port.so.0.8.0 1312866708 1300531326 libindicate4 /usr/lib/libindicate.so.4.0.3 1312866708 1300530179 libgpg-error0 /lib/libgpg-error.so.0.4.0 1312866708 1300530562 libgnomecanvas2-0 /usr/lib/libgnomecanvas-2.so.0.3000.2 1312866708 1300530542 libgtk2.0-0 /usr/lib/libgtk-x11-2.0.so.0.2200.0 1312866708 1300530513 libkeyutils1 /lib/libkeyutils.so.1.3 1312866708 1300531478 libimobiledevice1 /usr/lib/libimobiledevice.so.1.0.1 1312866708 1300530184 libmtdev1 /usr/lib/libmtdev.so.1.0.0 1312866708 1300531724 libibus2 /usr/lib/libibus.so.2.0.0 1312866708 1300530569 liblaunchpad-integration1 /usr/lib/liblaunchpad-integration.so.1.0.0 1312866708 1300530618 libgnomekbd4 /usr/lib/libgnomekbdui.so.4.2.0 1312866708 1300530581 libgweather1 /usr/lib/libgweather.so.1.6.10 1312866708 1300530692 libgp11-0 /usr/lib/libgp11.so.0.0.0 1312866708 1300530514 libk5crypto3 /usr/lib/libk5crypto.so.3.1 1312866708 1300530515 libkrb5-3 /usr/lib/libkrb5.so.3.3 1312866708 1300530689 libgvfscommon0 /usr/lib/libgvfscommon.so.0.0.0 1312866708 1300530599 libical0 /usr/lib/libicalvcal.so.0.44.0 1312866708 1300530756 libgstreamer0.10-0 /usr/lib/libgstreamer-0.10.so.0.26.0 1312866708 1300531743 libido-0.1-0 /usr/lib/libido-0.1.so.0.0.0 1312866708 1300530683 libgudev-1.0-0 /usr/lib/libgudev-1.0.so.0.0.1 1312866708 1300530525 libjpeg62 /usr/lib/libjpeg.so.62.0.0 1312866708 1300530512 libgnutls26 /usr/lib/libgnutls.so.26.14.12 1312866707 1300530560 libgnome2-0 /usr/lib/libgnome-2.so.0.3200.0 1312866707 1300529908 libdbus-glib-1-2 /usr/lib/libdbus-glib-1.so.2.1.0 1312866707 1300530242 libgl1-mesa-dri /usr/lib/dri/swrast_dri.so 1312866707 1300530613 libdbusmenu-gtk1 /usr/lib/libdbusmenu-gtk.so.1.0.17 1312866707 1300531300 libgee2 /usr/lib/libgee.so.2.0.0 1312866707 1300530561 libgail18 /usr/lib/libgailutil.so.18.0.1 1312866707 1300530607 libcroco3 /usr/lib/libcroco-0.6.so.3.0.1 1312866707 1300529913 libfreetype6 /usr/lib/libfreetype.so.6.6.0 1312866707 1300531783 libcanberra-gtk-module /usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so 1312866707 1300528809 libc6 /lib/libpthread-2.12.1.so 1312866707 1300530612 libdbusmenu-glib1 /usr/lib/libdbusmenu-glib.so.1.0.17 1312866707 1300528812 libglib2.0-0 /lib/libglib-2.0.so.0.2600.0 1312866707 1300528994 libcap2 /lib/libcap.so.2.19 1312866707 1300530598 libedataserver1.2-13 /usr/lib/libedataserver-1.2.so.13.0.1 1312866707 1300531211 libgmime-2.4-2 /usr/lib/libgmime-2.4.so.2.4.14 1312866707 1300530479 libfuse2 /lib/libfuse.so.2.8.4 1312866707 1300531788 libcanberra-pulse /usr/lib/libcanberra-0.25/libcanberra-pulse.so 1312866707 1300530520 libgconf2-4 /usr/lib/libgconf-2.so.4.1.5 1312866707 1300530550 libcanberra0 /usr/lib/libcanberra.so.0.2.4 1312866707 1300530597 libcanberra-gtk0 /usr/lib/libcanberra-gtk.so.0.1.6 1312866707 1300530606 libgnome-menu2 /usr/lib/libgnome-menu.so.2.4.9 1312866707 1300528824 libdrm2 /lib/libdrm.so.2.4.0 1312866707 1300528811 libgcc1 /lib/libgcc_s.so.1 1312866707 1300531522 libgdu-gtk0 /usr/lib/libgdu-gtk.so.0.0.0 1312866707 1300529906 libgirepository1.0-1 /usr/lib/libgirepository-1.0.so.1.0.0 1312866707 1300530183 libfontenc1 /usr/lib/libfontenc.so.1.0.0 1312866707 1300528802 libcomerr2 /lib/libcom_err.so.2.1 1312866707 1300529905 libffi5 /usr/lib/libffi.so.5.0.10 1312866707 1300530524 libcups2 /usr/lib/libcups.so.2 1312866707 1300530625 libflac8 /usr/lib/libFLAC.so.8.2.0 1312866707 1300530180 libgcrypt11 /lib/libgcrypt.so.11.5.3 1312866707 1300528984 libexpat1 /lib/libexpat.so.1.5.2 1312866707 1300530528 libgdk-pixbuf2.0-0 /usr/lib/libgdk_pixbuf_xlib-2.0.so.0.2200.0 1312866707 1300530688 libgdu0 /usr/lib/libgdu.so.0.0.0 1312866707 1300529828 libgdbm3 /usr/lib/libgdbm.so.3.0.0 1312866707 1300531166 libcupsmime1 /usr/lib/libcupsmime.so.1 1312866707 1300531146 libdaemon0 /usr/lib/libdaemon.so.0.5.0 1312866707 1300530604 libebook1.2-9 /usr/lib/libebook-1.2.so.9.3.1 1312866707 1300530605 libedataserverui1.2-8 /usr/lib/libedataserverui-1.2.so.8.1.1 1312866707 1300531361 libevdocument3 /usr/lib/libevdocument.so.3.0.0 1312866707 1300531343 libexif12 /usr/lib/libexif.so.12.3.1 1312866707 1300530573 libgnome-keyring0 /usr/lib/libgnome-keyring.so.0.1.1 1312866707 1300529923 libcairo2 /usr/lib/libcairo.so.2.11000.0 1312866707 1300531588 libglibmm-2.4-1c2a /usr/lib/libglibmm-2.4.so.1.3.0 1312866707 1300529914 libfontconfig1 /usr/lib/libfontconfig.so.1.4.4 1312866707 1300530600 libecal1.2-7 /usr/lib/libecal-1.2.so.7.2.2 1312866707 1300530658 libck-connector0 /usr/lib/libck-connector.so.0.0.0 1312866707 1300530603 libcamel1.2-14 /usr/lib/libcamel-1.2.so.14.0.1 1312866707 1300528794 libdbus-1-3 /lib/libdbus-1.so.3.5.2 1312866707 1300530567 libgnome-desktop-2-17 /usr/lib/libgnome-desktop-2.so.17.1.4 1312866707 1300530542 libglade2-0 /usr/lib/libglade-2.0.so.0.0.7 1312866707 1300531590 libcairomm-1.0-1 /usr/lib/libcairomm-1.0.so.1.4.0 1312866707 1300530583 libeggdbus-1-0 /usr/lib/libeggdbus-1.so.0.0.0 1312866707 1300531342 libexempi3 /usr/lib/libexempi.so.3.2.1 1312866706 1300531741 indicator-application /usr/lib/indicators/4/libapplication.so 1312866706 1300530545 libasound2 /usr/lib/libasound.so.2.0.0 1312866706 1300528785 libattr1 /lib/libattr.so.1.1.0 1312866706 1300533901 language-pack-gnome-en-base /usr/share/locale-langpack/en/LC_MESSAGES/yelp.mo 1312866706 1300531148 libavahi-core7 /usr/lib/libavahi-core.so.7.0.0 1312866706 1300530615 libappindicator1 /usr/lib/libappindicator.so.1.0.0 1312866706 1300530510 libart-2.0-2 /usr/lib/libart_lgpl_2.so.2.3.21 1312866706 1300531219 libbrasero-media1 /usr/lib/libbrasero-media.so.1.2.0 1312866706 1300531745 indicator-messages /usr/lib/indicator-messages/indicator-messages-service 1312866706 1300530564 libbonoboui2-0 /usr/lib/libbonoboui-2.so.0.0.0 1312866706 1300530523 libavahi-common3 /usr/lib/libavahi-common.so.3.5.2 1312866706 1300530509 libbonobo2-0 /usr/lib/bonobo-activation/bonobo-activation-server 1312866706 1300530682 libatasmart4 /lib/libatasmart.so.4.0.3 1312866706 1300530551 libavahi-glib1 /usr/lib/libavahi-glib.so.1.0.2 1312866706 1300531521 libavahi-ui0 /usr/lib/libavahi-ui.so.0.1.2 1312866706 1300530523 libavahi-client3 /usr/lib/libavahi-client.so.3.2.7 1312866706 1300532225 indicator-sound /usr/lib/indicators/4/libsoundmenu.so 1312866706 1300531739 indicator-applet-session /usr/lib/indicator-applet/indicator-applet-session 1312866706 1300531739 indicator-applet /usr/lib/indicator-applet/indicator-applet 1312866706 1300530497 libatk1.0-0 /usr/lib/libatk-1.0.so.0.3209.1 1312866706 1300531728 ibus-gtk /usr/lib/gtk-2.0/2.10.0/immodules/im-ibus.so 1312866706 1300531746 indicator-session /usr/lib/indicators/4/libsession.so 1312866706 1300528790 libbz2-1.0 /lib/libbz2.so.1.0.4 1312866706 1300531744 indicator-me /usr/lib/indicator-me/indicator-me-service 1312866705 1300531496 gtk2-engines /usr/lib/gtk-2.0/2.10.0/engines/libclearlooks.so 1312866705 1300530690 gvfs /usr/lib/gvfs/gvfs-gdu-volume-monitor 1312866705 1300531567 gnome-screensaver /usr/bin/gnome-screensaver 1312866705 1300530632 gnome-settings-daemon /usr/lib/gnome-settings-daemon-2.0/libxsettings.so 1312866705 1300531598 gnome-terminal /usr/bin/gnome-terminal 1312866705 1300531670 gvfs-backends /usr/lib/gvfs/gvfs-gphoto2-volume-monitor 1312866705 1300531481 gnome-session-bin /usr/bin/gnome-session 1312866705 1300531671 gvfs-fuse /usr/lib/gvfs/gvfs-fuse-daemon 1312866704 1300531483 gdm /usr/sbin/gdm-binary 1312866704 1300530691 gnome-applets /usr/lib/gnome-applets/trashapplet 1312866704 1300529907 gir1.0-glib-2.0 /usr/lib/girepository-1.0/GLib-2.0.typelib 1312866704 1300530695 gnome-keyring /usr/bin/gnome-keyring-daemon 1312866704 1300530682 gnome-panel /usr/lib/gnome-panel/wnck-applet 1312866704 1300531564 gnome-power-manager /usr/bin/gnome-power-manager 1312866704 1300531525 gnome-disk-utility /usr/lib/nautilus/extensions-2.0/libnautilus-gdu.so 1312866703 1300531408 file-roller /usr/lib/nautilus/extensions-2.0/libnautilus-fileroller.so 1312866702 1300531366 evince /usr/lib/nautilus/extensions-2.0/libevince-properties-page.so 1312866702 1300528982 dhcp3-client /sbin/dhclient3 1312866701 1300530519 dbus /bin/dbus-daemon 1312866701 1300528981 cron /usr/sbin/cron 1312866701 1300530554 dbus-x11 /usr/bin/dbus-launch 1312866701 1300530660 consolekit /usr/sbin/console-kit-daemon 1312866701 1300531199 cups /usr/sbin/cupsd 1312866700 1300531149 avahi-daemon /usr/sbin/avahi-daemon 1312866700 1300530991 at /usr/sbin/atd 1312866700 1300531227 brasero /usr/lib/nautilus/extensions-2.0/libnautilus-brasero-extension.so 1312866700 1300528789 bash /bin/bash 1312866699 1300531079 anacron /usr/sbin/anacron 1312866699 1300531064 acpid /usr/sbin/acpid 1312866698 1300528800 dpkg /usr/bin/dpkg-query 1312866698 1300531045 popularity-contest /usr/sbin/popularity-contest 1312866669 1300528792 coreutils /usr/bin/groups 1312866662 1300529008 sudo /usr/bin/sudoedit 1312866642 1300528845 ncurses-base /lib/terminfo/x/xterm 1312866641 1300528991 less /usr/bin/lesspipe 1312866607 1300532099 system-config-printer-gnome /usr/bin/system-config-printer-applet 1312866590 1300531409 firefox-branding /usr/lib/firefox-3.6.10/icons/mozicon128.png 1312866589 1300530966 x11-utils /usr/bin/xprop 1312866588 1300530596 gnome-applets-data /usr/lib/bonobo/servers/GNOME_MailcheckApplet_Factory.server 1312866588 1300531921 mousetweaks /usr/lib/bonobo/servers/DwellClick_Factory.server 1312866587 1300532210 vinagre /usr/lib/bonobo/servers/GNOME_VinagreApplet.server 1312866587 1300532129 tsclient /usr/lib/bonobo/servers/GNOME_TSClientApplet.server 1312866587 1300530610 gnome-panel-data /usr/lib/bonobo/servers/GNOME_Wncklet_Factory.server 1312866587 1300530498 libbonobo2-common /usr/lib/bonobo/servers/Bonobo_CosNaming_NamingContext.server 1312866587 1300531145 at-spi /usr/lib/bonobo/servers/Accessibility_Registry.server 1312866586 1300532117 tomboy /usr/lib/bonobo/servers/GNOME_TomboyApplet.server 1312866586 1300531528 gnome-mag /usr/lib/bonobo/servers/GNOME_Magnifier.server 1312866585 1300530226 xserver-xorg-input-synaptics /usr/bin/syndaemon 1312866585 1300531520 gnome-dictionary /usr/lib/bonobo/servers/GNOME_DictionaryApplet.server 1312866585 1300531785 pulseaudio-utils /usr/bin/pactl 1312866581 1300531241 compiz-core /usr/bin/compiz 1312866581 1300531032 pciutils /usr/bin/lspci 1312866581 1300530964 libgl1-mesa-glx /usr/lib/mesa/libGL.so.1 1312866576 1300530479 fuse-utils /bin/fusermount 1312866576 1300531581 gnome-session /usr/bin/gnome-wm 1312866576 1300532184 xdg-user-dirs-gtk /usr/bin/xdg-user-dirs-gtk-update 1312866575 1300530555 gconf2 /usr/bin/gsettings-data-convert 1312866573 1300531063 x11-xserver-utils /usr/bin/xhost 1312866573 1300532183 xdg-user-dirs /usr/bin/xdg-user-dirs-update 1312866538 1300530178 x11-xkb-utils /usr/bin/xkbcomp 1312866537 1300532021 policykit-desktop-privileges /var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla 1312866536 1300531065 pm-utils /usr/bin/pm-is-supported 1312866534 1300531601 gtk2-engines-murrine /usr/lib/gtk-2.0/2.10.0/engines/libmurrine.so 1312866534 1300531599 gtk2-engines-pixbuf /usr/lib/gtk-2.0/2.10.0/engines/libpixmap.so 1312866531 1300528804 libc-bin /usr/bin/getent 1312866525 1300530230 xserver-xorg /usr/bin/X 1312866525 1300530197 xserver-common /usr/lib/xorg/protocol.txt 1312866521 1300528852 procps /usr/bin/pkill 1312866520 1300528844 module-init-tools /sbin/lsmod 1312866518 1300529001 ntpdate /usr/sbin/ntpdate 1312866518 1300528858 sysv-rc /usr/sbin/invoke-rc.d 1312866518 1300528992 lockfile-progs /usr/bin/lockfile-touch 1312866515 1300534256 grub-common /usr/bin/grub-editenv 1312866514 1300531016 hdparm /usr/lib/pm-utils/power.d/95hdparm-apm 1312866513 1300528858 sysvinit-utils /bin/pidof 1312866513 1300529260 linux-image-2.6.35-22-generic /lib/modules/2.6.35-22-generic/kernel/fs/binfmt_misc.ko 1312866513 1300531001 bind9-host /usr/bin/host 1312866513 1300528847 net-tools /sbin/route 1312866513 1300530838 openssl /usr/lib/ssl/openssl.cnf 1312866512 1300528989 iproute /sbin/ip 1312866512 1300528813 gzip /bin/gzip 1312866511 1300528797 debianutils /usr/bin/savelog 1312866511 1300531021 irqbalance /usr/sbin/irqbalance 1312866510 1300531044 plymouth-theme-ubuntu-text /lib/plymouth/themes/ubuntu-text/ubuntu-text.plymouth 1312866510 1300531765 libasound2-plugins /usr/lib/alsa-lib/libasound_module_conf_pulse.so 1312866510 1300528851 plymouth /lib/plymouth/renderers/vga16fb.so 1312866510 1300531078 alsa-utils /lib/udev/alsa-utils 1312866510 1300528998 lsb-release /usr/bin/lsb_release 1312866510 1300532019 plymouth-theme-ubuntu-logo /lib/plymouth/themes/ubuntu-logo/ubuntu-logo.plymouth 1312866509 1300528839 initscripts /lib/init/vars.sh 1312866509 1300532231 lm-sensors /usr/bin/sensors 1312866508 1300531059 update-manager-core /usr/lib/update-manager/check-new-release 1312866508 1300531108 python-lazr.restfulclient /usr/lib/python2.6/dist-packages/lazr.restfulclient-0.9.20-nspkg.pth 1312866508 1300529845 python-apt /usr/lib/python2.6/dist-packages/apt_pkg.so 1312866508 1300531676 python-imaging /usr/lib/python2.6/dist-packages/PIL.pth 1312866508 1300528854 python-minimal /usr/bin/python 1312866508 1300531938 update-notifier-common /usr/lib/update-notifier/update-motd-reboot-required 1312866508 1300528810 findutils /usr/bin/xargs 1312866508 1300711086 python-support /usr/lib/python2.6/dist-packages/python-support.pth 1312866508 1300528846 ncurses-bin /usr/bin/tput 1312866508 1300531513 python-gst0.10 /usr/lib/python2.6/dist-packages/pygst.pth 1312866508 1300531104 python-lazr.uri /usr/lib/python2.6/dist-packages/lazr.uri-1.0.2-nspkg.pth 1312866507 1300528822 lsb-base /lib/lsb/init-functions 1312866507 1300528991 kbd /bin/kbd_mode 1312866506 1300528855 sed /bin/sed 1312866506 1300531046 powermgmt-base /usr/bin/on_ac_power 1312866505 1300528811 gcc-4.4 /usr/lib/gcc/i686-linux-gnu/4.4/libgcc_s.so 1312866505 1300528813 grep /bin/egrep 1312866505 1300532101 system-config-printer-udev /lib/udev/udev-configure-printer 1312866505 1300528979 apt /usr/bin/apt-config 1312866505 1300528814 ifupdown /sbin/ifup 1312866504 1300528981 console-setup /lib/udev/console-setup-tty 1312866504 1300528843 mawk /usr/bin/mawk 1312866503 1300531274 cpu-checker /usr/bin/check-bios-nx 1312866502 1300528793 dash /bin/sh 1312866502 1300530977 apparmor /sbin/apparmor_parser 1312866502 1300531058 ufw /lib/ufw/ufw-init-functions 1312866501 1300528868 mount /bin/mount 1312866501 1300531075 linux-sound-base /lib/linux-sound-base/noOSS.modprobe.conf 1300873831 1300531885 libutempter0 /usr/lib/utempter/utempter 1300873829 1300532199 xterm /usr/bin/xterm 1300871547 1300531038 mlocate /usr/bin/updatedb.mlocate 1300871526 1300532430 man-db /usr/lib/man-db/mandb 1300871495 1300528993 logrotate /usr/sbin/logrotate 1300870738 1300530975 wget /usr/bin/wget 1300870341 1300528798 diffutils /usr/bin/cmp 1300713322 1300528817 klibc-utils /usr/lib/klibc/bin/resume 1300713304 1300528792 cpio /bin/cpio 1300713302 1300528993 dmsetup /sbin/dmsetup 1300713299 1300528789 busybox-initramfs /usr/lib/initramfs-tools/bin/busybox 1300713297 1300530485 ntfs-3g /sbin/mount.ntfs 1300713291 1300528802 e2fsprogs /sbin/dumpe2fs 1300713288 1300528815 initramfs-tools-bin /usr/lib/initramfs-tools/bin/wait-for-root 1300713257 1300529272 linux-firmware /lib/firmware/aic94xx-seq.fw 1300713215 1300528816 initramfs-tools /usr/sbin/mkinitramfs 1300713203 1300532013 pcmciautils /lib/udev/rules.d/85-pcmcia.rules 1300713203 1300529155 wireless-crda /lib/udev/rules.d/85-regulatory.rules 1300713203 1300531162 bluez /lib/udev/rules.d/97-bluetooth.rules 1300713203 1300531830 libgpod-common /lib/udev/rules.d/90-libgpod.rules 1300713203 1300531477 usbmuxd /lib/udev/rules.d/85-usbmuxd.rules 1300713202 1300531835 libmtp8 /lib/udev/rules.d/45-libmtp8.rules 1300713202 1300531511 gnome-bluetooth /lib/udev/rules.d/61-gnome-bluetooth-rfkill.rules 1300713202 1300532219 brltty /lib/udev/rules.d/85-brltty.rules 1300713202 1300531720 hplip /lib/udev/rules.d/56-hpmud_support.rules 1300713202 1300530228 xserver-xorg-input-wacom /lib/udev/rules.d/69-xserver-xorg-input-wacom.rules 1300713202 1300531429 foo2zjs /lib/udev/rules.d/85-hplj10xx.rules 1300713201 1300531916 media-player-info /lib/udev/rules.d/40-usb-media-players.rules 1300713201 1300530210 xserver-xorg-video-intel /lib/udev/rules.d/40-xserver-xorg-video-intel.rules 1300713201 1300531707 libsane /lib/udev/rules.d/40-libsane.rules 1300713201 1300531698 libhpmud0 /lib/udev/rules.d/40-hplip.rules 1300713201 1300528988 gnupg /lib/udev/rules.d/40-gnupg.rules 1300713201 1300532241 usb-modeswitch-data /lib/udev/rules.d/40-usb_modeswitch.rules 1300712291 1300528859 tar /bin/tar 1300712087 1300531934 samba-common-bin /usr/bin/net.samba3 1300711968 1300529010 ureadahead /sbin/ureadahead 1300711788 1300530616 libgnome-window-settings1 /usr/lib/libgnome-window-settings1/libmetacity.so 1300711780 1300530667 gnome-control-center /usr/bin/gnome-appearance-properties 1300711036 1300528797 debconf /usr/share/perl5/Debconf/Element.pm 1300711035 1300528814 hostname /bin/hostname 1300711030 1300531819 libgnome2-perl /usr/lib/perl5/Gnome2.pm 1300711030 1300531816 libgnome2-canvas-perl /usr/lib/perl5/auto/Gnome2/Canvas/Canvas.so 1300711030 1300531818 libgnome2-vfs-perl /usr/lib/perl5/auto/Gnome2/VFS/VFS.so 1300711029 1300531815 libgtk2-perl /usr/lib/perl5/Gtk2.pm 1300711029 1300531782 libcairo-perl /usr/lib/perl5/Cairo.pm 1300711029 1300531812 libpango-perl /usr/lib/perl5/Pango.pm 1300711029 1300531808 libglib-perl /usr/lib/perl5/Glib.pm 1300711017 1300530712 ure /usr/lib/ure/lib/invocadapt.uno.so 1300711005 1300530932 groff-base /usr/lib/mime/packages/groff-base 1300711005 1300532054 rhythmbox /usr/lib/mime/packages/rhythmbox 1300711005 1300529011 vim-common /usr/lib/mime/packages/vim-common 1300711005 1300528855 sensible-utils /usr/lib/mime/packages/sensible-utils 1300711005 1300531405 unzip /usr/lib/mime/packages/unzip 1300711005 1300532127 transmission-gtk /usr/lib/mime/packages/transmission-gtk 1300711005 1300528999 mime-support /usr/lib/mime/packages/mime-support 1300711005 1300531062 w3m /usr/lib/mime/packages/w3m 1300710994 1300528828 libtext-wrapi18n-perl /usr/share/perl5/Text/WrapI18N.pm 1300710994 1300529842 perl /usr/lib/perl/5.10.1/Encode/Config.pm 1300710994 1300528827 libtext-charwidth-perl /usr/lib/perl5/auto/Text/CharWidth/CharWidth.so 1300710994 1300528827 libtext-iconv-perl /usr/lib/perl5/auto/Text/Iconv/Iconv.so 1300710994 1300528824 liblocale-gettext-perl /usr/lib/perl5/auto/Locale/gettext/gettext.so 1300710068 1300530705 uno-libs3 /usr/lib/ure/lib/libuno_salhelpergcc3.so.3 1300710066 1300530544 libpython2.6 /usr/lib/python2.6/config/libpython2.6.so 1300710018 1300531944 pptp-linux /usr/sbin/pptpsetup 1300710018 1300531754 aptdaemon /usr/sbin/aptd 1300710018 1300531753 kerneloops-daemon /usr/sbin/kerneloops 1300710018 1300532105 tcpd /usr/sbin/safe_finger 1300710018 1300532064 sane-utils /usr/sbin/saned 1300710018 1300532167 cups-bsd /usr/sbin/lpc 1300710018 1300532118 toshset /usr/sbin/toshsat1800-irdasetup 1300710018 1300531951 ntfsprogs /sbin/mkfs.ntfs 1300710018 1300532049 radeontool /usr/sbin/avivotool 1300710018 1300532062 update-inetd /usr/sbin/update-inetd 1300710018 1300532089 software-center /usr/sbin/update-software-center 1300710018 1300531849 libpaper-utils /usr/sbin/paperconfig 1300710018 1300531845 system-tools-backends /usr/sbin/system-tools-backends 1300710017 1300531299 doc-base /usr/sbin/install-docs 1300710017 1300531255 computer-janitor-gtk /usr/sbin/computer-janitor-gtk 1300710017 1300531296 dnsmasq-base /usr/sbin/dnsmasq 1300710017 1300531280 cups-driver-gutenprint /usr/sbin/cups-genppdupdate 1300710017 1300531254 computer-janitor /usr/sbin/computer-janitor 1300710017 1300531188 cups-client /usr/sbin/cupsenable 1300710017 1300531229 wodim /usr/sbin/netscsid 1300710017 1300531189 ssl-cert /usr/sbin/make-ssl-cert 1300710017 1300531185 ghostscript /usr/sbin/update-gsfontmap 1300710016 1300531050 pppoeconf /usr/sbin/pppoeconf 1300710016 1300532828 uuid-runtime /usr/sbin/uuidd 1300710016 1300531134 synaptic /usr/sbin/synaptic 1300710016 1300531019 iptables /usr/sbin/ip6tables-apply 1300710016 1300530989 apparmor-utils /usr/sbin/aa-unconfined 1300710016 1300531140 dictionaries-common /usr/sbin/update-default-aspell 1300710016 1300531147 avahi-autoipd /usr/sbin/avahi-autoipd 1300710016 1300531054 tcpdump /usr/sbin/tcpdump 1300710016 1300531155 binfmt-support /usr/sbin/update-binfmts 1300710016 1300531048 ppp /usr/sbin/pppdump 1300710016 1300530976 foomatic-db-engine /usr/sbin/foomatic-extract-text 1300710016 1300531049 pppconfig /usr/sbin/pppconfig 1300710015 1300530486 xml-core /usr/sbin/update-xmlcatalog 1300710015 1300529816 dmidecode /usr/sbin/vpddecode 1300710015 1300530969 install-info /usr/sbin/update-info-dir 1300710015 1300528864 tzdata /usr/sbin/tzconfig 1300710015 1300530192 xfonts-utils /usr/sbin/update-fonts-scale 1300710015 1300528857 passwd /usr/sbin/vigr 1300710015 1300530529 defoma /usr/sbin/defoma-reconfigure 1300710015 1300529858 laptop-detect /usr/sbin/laptop-detect 1300710015 1300530485 sgml-base /usr/sbin/install-sgmlcatalog 1300710015 1300529521 usbutils /usr/sbin/update-usbids 1300710015 1300528821 locales /usr/sbin/locale-gen 1300710015 1300530753 ca-certificates /usr/sbin/update-ca-certificates 1300710015 1300530638 libgtk2.0-bin /usr/sbin/update-icon-caches 1300710015 1300530531 libpango1.0-common /usr/sbin/update-pangox-aliases 1300710015 1300529850 apt-xapian-index /usr/sbin/update-apt-xapian-index 1300710014 1300528816 insserv /usr/sbin/update-rc.d-insserv 1300710014 1300528834 libpam-runtime /usr/sbin/pam-auth-update 1300710014 1300528783 adduser /usr/sbin/delgroup 1300710014 1300532223 fancontrol /usr/sbin/pwmconfig 1300710014 1300532208 vbetool /usr/sbin/vbetool 1300710014 1300528787 base-passwd /usr/sbin/update-passwd 1300710014 1300534259 grub-pc /usr/sbin/upgrade-from-grub-legacy 1300710014 1300532242 usb-modeswitch /usr/sbin/usb_modeswitch_dispatcher 1300709887 1300532020 pnm2ppa /usr/bin/calibrate_ppa 1300709887 1300532070 seahorse /usr/bin/seahorse 1300709887 1300532177 update-notifier /usr/bin/update-notifier 1300709887 1300532095 syslinux-common /usr/bin/syslinux2ansi 1300709887 1300532170 gnome-system-tools /usr/bin/users-admin 1300709887 1300531870 xdg-utils /usr/bin/xdg-settings 1300709887 1300531959 onboard /usr/bin/onboard-settings 1300709887 1300532066 xscreensaver-data /usr/bin/xscreensaver-text 1300709887 1300532087 smbclient /usr/bin/smbtar 1300709887 1300531922 mtools /usr/bin/mxtar 1300709887 1300532097 syslinux /usr/bin/isohybrid 1300709887 1300532039 python-rdflib /usr/bin/rdfpipe 1300709887 1300532026 pxljr /usr/bin/ijs_pxljr 1300709886 1300531572 zenity /usr/bin/zenity 1300709886 1300531540 whois /usr/bin/mkpasswd 1300709886 1300531639 gstreamer0.10-plugins-base-apps /usr/bin/gst-visualise-0.10 1300709886 1300531679 python-mako /usr/bin/mako-render 1300709886 1300531687 gwibber-service /usr/bin/gwibber-service 1300709886 1300531752 jockey-gtk /usr/bin/jockey-gtk 1300709886 1300531569 gnome-screenshot /usr/bin/gnome-panel-screenshot 1300709886 1300531638 gstreamer0.10-tools /usr/bin/gst-typefind-0.10 1300709886 1300531690 gwibber /usr/bin/gwibber-error 1300709886 1300531539 gnome-media /usr/bin/gstreamer-properties 1300709885 1300531249 compiz-gnome /usr/bin/gtk-window-decorator 1300709885 1300531406 zip /usr/bin/zipnote 1300709885 1300531426 mscompress /usr/bin/msexpand 1300709885 1300531390 evolution /usr/bin/evolution-settings 1300709885 1300531353 espeak /usr/bin/espeak 1300709885 1300531262 erlang-base /usr/bin/erl 1300709885 1300531472 gdb /usr/bin/gdbtui 1300709885 1300531214 genisoimage /usr/bin/geteltorito 1300709885 1300531273 couchdb-bin /usr/bin/couchjs 1300709885 1300531238 checkbox-gtk /usr/bin/checkbox-gtk 1300709885 1300531215 dvd+rw-tools /usr/bin/dvd+rw-mediainfo 1300709885 1300531290 python-twisted-core /usr/bin/twistd 1300709885 1300531234 byobu /usr/bin/byobu-select-session 1300709885 1300531283 python-couchdb /usr/bin/couchdb-load 1300709884 1300531158 binutils /usr/bin/strip 1300709884 1300531115 apturl-common /usr/bin/apturl 1300709884 1300531141 aspell /usr/bin/aspell-import 1300709884 1300531014 gettext-base /usr/bin/envsubst 1300709884 1300530984 libwww-perl /usr/bin/lwp-mirror 1300709884 1300530993 bash-completion /usr/bin/dh_bash-completion 1300709884 1300531033 lshw /usr/bin/lshw 1300709884 1300531173 poppler-utils /usr/bin/pdftotext 1300709884 1300531052 rsync /usr/bin/rsync 1300709883 1300530962 x11-session-utils /usr/bin/xsm 1300709883 1300530961 x11-apps /usr/bin/xman 1300709883 1300530553 psmisc /usr/bin/peekfd 1300709883 1300530915 rarian-compat /usr/bin/rarian-example 1300709883 1300530933 bsdmainutils /usr/bin/ul 1300709883 1300530926 libxml2-utils /usr/bin/xmlcatalog 1300709883 1300530968 x11-xfs-utils /usr/bin/fstobdf 1300709883 1300530636 gnome-menus /usr/bin/gmenu-simple-editor 1300709882 1300529001 python-central /usr/bin/py3_compilefiles 1300709882 1300528984 file /usr/bin/file 1300709882 1300529857 aptitude /usr/bin/aptitude-run-state-bundle 1300709882 1300530181 xauth /usr/bin/xauth 1300709882 1300530183 intel-gpu-tools /usr/bin/intel_lid 1300709882 1300533996 fontconfig /usr/bin/fc-cache 1300709882 1300528870 xz-utils /usr/bin/xzless 1300709882 1300529863 tasksel /usr/bin/tasksel 1300709881 1300528840 bsdutils /usr/bin/scriptreplay 1300709880 1300532171 inputattach /usr/bin/inputattach 1300709880 1300532203 xscreensaver-gl /usr/bin/xscreensaver-gl-helper 1300709880 1300532207 usb-creator-gtk /usr/bin/usb-creator-gtk 1300709880 1300532200 xinput /usr/bin/xinput 1300709880 1300532194 xinit /usr/bin/xinit 1300709880 1300532176 update-manager /usr/bin/update-manager 1300709880 1300531205 bogofilter-bdb /usr/bin/bf_compact-bdb 1300709879 1300532071 simple-scan /usr/bin/simple-scan 1300709879 1300532051 rdesktop /usr/bin/rdesktop 1300709879 1300531956 nvidia-common /usr/bin/nvidia-detector 1300709879 1300532017 pitivi /usr/bin/pitivi 1300709878 1300531895 libxml-xpath-perl /usr/bin/xpath 1300709878 1300531908 lzma /usr/bin/unlzma 1300709878 1300531917 min12xxw /usr/bin/esc-m 1300709878 1300531907 lp-solve /usr/bin/lp_solve 1300709878 1300531879 ubuntuone-client /usr/bin/u1sdtool 1300709878 1300531906 lksctp-tools /usr/bin/withsctp 1300709878 1300531853 libpurple-bin /usr/bin/purple-url-handler 1300709877 1300531758 lftp /usr/bin/lftp 1300709877 1300531768 libc-dev-bin /usr/bin/mtrace 1300709877 1300531727 ibus /usr/bin/ibus-setup 1300709877 1300531751 jockey-common /usr/bin/jockey-text 1300709877 1300531697 libsnmp15 /usr/bin/net-snmp-config 1300709877 1300531748 iputils-arping /usr/bin/arping 1300709877 1300531700 hpijs /usr/bin/hpijs 1300709877 1300531737 im-switch /usr/bin/im-switch 1300709877 1300531757 launchpad-integration /usr/bin/launchpad-integration 1300709877 1300531756 language-selector /usr/bin/gnome-language-selector 1300709877 1300531736 ibus-table /usr/bin/ibus-table-createdb 1300709876 1300531595 gnome-system-monitor /usr/bin/gnome-system-monitor 1300709876 1300531542 gnome-nettool /usr/bin/gnome-nettool 1300709876 1300531558 gnome-orca /usr/bin/orca 1300709876 1300531587 gnome-system-log /usr/bin/gnome-system-log 1300709876 1300531546 speech-dispatcher /usr/bin/spd-say 1300709876 1300531547 python-speechd /usr/bin/spd-conf 1300709876 1300531636 pkg-config /usr/bin/pkg-config 1300709876 1300531570 gnome-search-tool /usr/bin/gnome-search-tool 1300709876 1300531642 gucharmap /usr/bin/gnome-character-map 1300709875 1300531461 gcalctool /usr/bin/gcalccmd 1300709875 1300531465 gcc /usr/bin/gcc 1300709875 1300531469 gconf-editor /usr/bin/gconf-editor 1300709875 1300531509 obex-data-server /usr/bin/ods-server 1300709874 1300531442 mono-runtime /usr/bin/mono 1300709874 1300531453 mono-gmcs /usr/bin/gmcs 1300709874 1300531455 mono-csharp-shell /usr/bin/csharp 1300709873 1300531403 exiv2 /usr/bin/exiv2 1300709873 1300531439 mono-2.0-gac /usr/bin/gacutil2 1300709873 1300531395 evolution-exchange /usr/bin/exchange-connector-setup-2.30 1300709872 1300531232 screen /usr/bin/screen 1300709872 1300531346 eog /usr/bin/eog 1300709872 1300531281 dc /usr/bin/dc 1300709872 1300531341 empathy /usr/bin/empathy-debugger 1300709872 1300531338 telepathy-mission-control-5 /usr/bin/mc-wait-for-name 1300709870 1300531150 avahi-utils /usr/bin/avahi-resolve-host-name 1300709870 1300531135 unattended-upgrades /usr/bin/unattended-upgrades 1300709870 1300531154 bc /usr/bin/bc 1300709870 1300531117 gksu /usr/bin/gksudo 1300709870 1300531112 apport /usr/bin/ubuntu-bug 1300709870 1300531136 python-software-properties /usr/bin/apt-add-repository 1300709870 1300531120 libenchant1c2a /usr/bin/enchant 1300709870 1300531138 software-properties-gtk /usr/bin/software-properties-gtk 1300709870 1300531153 baobab /usr/bin/baobab 1300709870 1300531139 apturl /usr/bin/apturl-gtk 1300709870 1300531116 libgksu2-0 /usr/bin/gksu-properties 1300709869 1300531039 mtr-tiny /usr/bin/mtr 1300709869 1300531017 info /usr/bin/infokey 1300709869 1300531055 telnet /usr/bin/telnet.netkit 1300709869 1300531035 ltrace /usr/bin/ltrace 1300709869 1300531074 alacarte /usr/bin/alacarte 1300709869 1300531034 lsof /usr/bin/lsof 1300709869 1300531037 memtest86+ /usr/bin/make-memtest86+-boot-floppy 1300709869 1300531056 time /usr/bin/time 1300709869 1300531019 iputils-tracepath /usr/bin/tracepath6 1300709869 1300531067 acpi-support /usr/bin/acpi_fakekey 1300709869 1300531053 strace /usr/bin/strace 1300709868 1300530986 librpc-xml-perl /usr/bin/make_method 1300709868 1300531009 ed /usr/bin/red 1300709868 1300531007 dnsutils /usr/bin/nsupdate 1300709867 1300530924 xulrunner-1.9.2 /usr/bin/xpcshell-1.9.2 1300709867 1300530927 xsltproc /usr/bin/xsltproc 1300709867 1300530929 gnome-doc-utils /usr/bin/xml2po 1300709867 1300530937 yelp /usr/bin/gnome-help 1300709866 1300530678 gnome-about /usr/bin/gnome-about 1300709866 1300530656 desktop-file-utils /usr/bin/update-desktop-database 1300709865 1300530539 shared-mime-info /usr/bin/update-mime-database.real 1300709865 1300530496 foomatic-filters /usr/sbin/lpdomatic 1300709865 1300530504 cpp /usr/bin/cpp 1300709865 1300530504 cpp-4.4 /usr/bin/i686-linux-gnu-cpp-4.4 1300709864 1300529911 language-selector-common /usr/bin/check-language-support 1300709864 1300529844 make /usr/bin/make 1300709864 1300529861 libparse-debianchangelog-perl /usr/bin/parsechangelog 1300709863 1300529006 python /usr/bin/2to3 1300709863 1300529128 installation-report /usr/bin/report-hw 1300709863 1300529012 vim-tiny /usr/bin/vim.tiny 1300709863 1300529000 whiptail /usr/bin/whiptail 1300709863 1300529010 ucf /usr/bin/lcf 1300709862 1300528986 libfribidi0 /usr/bin/fribidi 1300709862 1300528983 eject /usr/bin/volname 1300709862 1300528983 dhcp3-common /usr/bin/omshell 1300709862 1300528988 gpgv /usr/bin/gpgv 1300709862 1300528995 liblockfile1 /usr/bin/dotlockfile 1300709862 1300528974 apt-utils /usr/bin/apt-extracttemplates 1300709859 1300531424 firefox /usr/bin/firefox 1300709859 1300531440 mono-gac /usr/bin/gacutil 1300709859 1300532103 tcl /usr/bin/tclsh-default 1300709859 1300532092 ssh-askpass-gnome /usr/lib/openssh/gnome-ssh-askpass 1300709859 1300532103 tcl8.4 /usr/bin/tclsh8.4 1300709859 1300531517 gnome-codec-install /usr/bin/gnome-codec-install 1300709859 1300534260 os-prober /usr/bin/linux-boot-prober 1300709858 1300531040 nano /usr/bin/nano 1300709858 1300531492 gedit /usr/bin/gedit 1300709857 1300531010 ftp /usr/bin/pftp 1300709857 1300532236 sessioninstaller /usr/bin/gst-install 1300709857 1300532221 brltty-x11 /usr/bin/xbrlapi 1300709857 1300532212 vino /usr/bin/vino-passwd 1300709857 1300532232 protobuf-compiler /usr/bin/protoc 1300709857 1300532239 shotwell /usr/bin/shotwell 1300535438 1300532123 totem-mozilla /usr/lib/mozilla/plugins/libtotem-mully-plugin.so 1300535438 1300532060 rhythmbox-plugins /usr/lib/mozilla/plugins/librhythmbox-itms-detection-plugin.so 1300535417 1300529965 language-pack-en-base /usr/lib/firefox-addons/extensions/langpack-en-GB@firefox-3.6.ubuntu.com/chrome.manifest 1300535328 1300531132 python-vte /usr/lib/pyshared/python2.6/gtk-2.0/vtemodule.so 1300534828 1300532027 python-appindicator /usr/lib/python2.6/dist-packages/appindicator/_appindicator.so 1300534826 1300530675 python-gconf /usr/lib/pyshared/python2.6/gtk-2.0/gconf.so 1300534748 1300531376 libevolution /usr/lib/evolution/2.30/libfilter.so.0 1300533961 1300533945 wbritish /var/lib/dictionaries-common/wordlist/wbritish 1300533961 1300533944 wamerican /var/lib/dictionaries-common/wordlist/wamerican 1300533957 1300533941 myspell-en-au /var/lib/dictionaries-common/hunspell/myspell-en-au 1300533841 1300532235 rhythmbox-ubuntuone-music-store /usr/lib/rhythmbox/plugins/umusicstore/U1MSLinks.py 1300533606 1300531838 libndesk-dbus-glib1.0-cil /usr/lib/cli/NDesk.DBus.GLib-1.0/NDesk.DBus.GLib.dll.config 1300533603 1300531837 libndesk-dbus1.0-cil /usr/lib/cli/NDesk.DBus-1.0/NDesk.DBus.dll 1300533602 1300531451 libmono-addins-gui0.2-cil /usr/lib/cli/Mono.Addins.Gui-0.2/policy.0.3.Mono.Addins.Gui.config 1300533595 1300531450 libmono-addins0.2-cil /usr/lib/cli/Mono.Addins.Setup-0.2/policy.0.3.Mono.Addins.Setup.config 1300533578 1300531447 liblaunchpad-integration1.0-cil /usr/lib/cli/launchpad-integration-sharp-1/launchpad-integration-sharp.dll.config 1300533576 1300531446 libgtk2.0-cil /usr/lib/cli/gtk-dotnet-2.0/gtk-dotnet.dll.config 1300533566 1300531811 libgnome-vfs2.0-cil /usr/lib/cli/gnome-vfs-sharp-2.0/policy.2.20.gnome-vfs-sharp.config 1300533551 1300531822 libgnomepanel2.24-cil /usr/lib/cli/gnome-panel-sharp-2.24/gnome-panel-sharp.dll.config 1300533548 1300531821 libgnome2.24-cil /usr/lib/cli/gconf-sharp-peditors-2.24/gconf-sharp-peditors.dll 1300533544 1300531810 libgmime2.4-cil /usr/lib/cli/gmime-sharp-2.4/gmime-sharp.dll.config 1300533541 1300531443 libglib2.0-cil /usr/lib/cli/glib-sharp-2.0/glib-sharp.dll.config 1300533538 1300531802 libgconf2.0-cil /usr/lib/cli/gconf-sharp-2.0/policy.2.20.gconf-sharp.config 1300533538 1300531807 libglade2.0-cil /usr/lib/cli/glade-sharp-2.0/glade-sharp.dll.config 1300533525 1300531760 libart2.0-cil /usr/lib/cli/art-sharp-2.0/policy.2.20.art-sharp.config 1300533512 1300531759 libappindicator0.1-cil /usr/lib/cli/appindicator-sharp-0.1/policy.0.1.appindicator-sharp.config 1300533506 1300531438 libmono-security2.0-cil /usr/lib/mono/2.0/Mono.Security.dll 1300533505 1300531432 libmono-corlib2.0-cil /usr/lib/mono/2.0/mscorlib.dll 1300533391 1300530635 python-gmenu /usr/lib/pyshared/python2.6/gmenu.so 1300533391 1300531102 python-simplejson /usr/lib/pyshared/python2.6/simplejson/_speedups.so 1300533390 1300529848 python-xapian /usr/lib/python2.6/dist-packages/_xapian.so 1300533364 1300531516 python-aptdaemon-gtk /usr/lib/python2.6/dist-packages/aptdaemon/gtkwidgets.py 1300533361 1300531111 python-apport /usr/lib/python2.6/dist-packages/apport/ui.py 1300533354 1300532125 totem-plugins /usr/lib/totem/plugins/totem/__init__.py 1300533349 1300532065 screen-resolution-extra /usr/lib/python2.6/dist-packages/ScreenResolution/__init__.py 1300533336 1300531872 python-twisted-names /usr/lib/python2.6/dist-packages/twisted/names/test/test_srvconnect.py 1300533330 1300531868 python-twisted-web /usr/lib/python2.6/dist-packages/twisted/web/_auth/wrapper.py 1300533311 1300531514 python-aptdaemon /usr/lib/python2.6/dist-packages/aptdaemon/worker.py 1300533306 1300531284 python-twisted-bin /usr/lib/pyshared/python2.6/twisted/python/_initgroups.so 1300533306 1300532028 python-crypto /usr/lib/python2.6/dist-packages/Crypto/PublicKey/_fastmath.so 1300533305 1300531677 python-markupsafe /usr/lib/python2.6/dist-packages/MarkupSafe-0.9.2.egg-info/top_level.txt 1300533305 1300531107 python-zope.interface /usr/lib/python2.6/dist-packages/zope/interface/_zope_interface_coptimizations.so 1300533184 1300529835 perl-modules /usr/share/perl/5.10.1/File/Temp.pm 1300533030 1300531583 python-launchpad-integration /usr/lib/python2.6/dist-packages/gtk-2.0/LaunchpadIntegration/__init__.py 1300532967 1300531298 libmldbm-perl /usr/share/perl5/MLDBM/Serializer/Storable.pm 1300532966 1300531297 libuuid-perl /usr/lib/perl5/UUID.pm 1300532954 1300531278 libgutenprint2 /usr/lib/gutenprint/5.2/modules/print-raw.so 1300532931 1300531233 python-newt /usr/lib/python2.6/dist-packages/snack.py 1300532885 1300532882 aspell-en /var/lib/aspell/en.compat 1300532876 1300531119 libaspell15 /usr/lib/aspell/iso-8859-1.cset 1300532851 1300531103 python-pkg-resources /usr/lib/python2.7/dist-packages/pkg_resources.py 1300532849 1300531103 python-httplib2 /usr/lib/python2.6/dist-packages/httplib2/iri2uri.py 1300532846 1300531100 python-problem-report /usr/lib/python2.6/dist-packages/problem_report.py 1300532781 1300531006 command-not-found /usr/lib/python2.6/dist-packages/CommandNotFound/util.py 1300532755 1300531315 libspeex1 /usr/lib/sse2/libspeex.so.1 1300532747 1300531554 liblouis2 /usr/lib/i686-linux-gnu/liblouis.so.2 1300532747 1300531163 bluez-alsa /usr/lib/alsa-lib/libasound_module_pcm_bluetooth.so 1300532249 1300532227 libdconf0 /usr/lib/gio/modules/libdconfsettings.so 1300532245 1300531891 libwmf0.2-7-gtk /usr/lib/gdk-pixbuf-2.0/2.10.0/loaders/io-wmf.so 1300531666 1300531945 network-manager-pptp /usr/lib/pppd/2.4.5/nm-pptp-pppd-plugin.a 1300531666 1300531888 libvisual-0.4-plugins /usr/lib/libvisual-0.4/morph/morph_slide.so 1300531666 1300531717 hplip-cups /usr/lib/cups/filter/hpcups 1300531666 1300531859 libpurple0 /usr/lib/purple-2/libymsg.so 1300531666 1300531674 python-egenix-mxdatetime /usr/lib/python2.6/dist-packages/mx/DateTime/mxDateTime/mxDateTime.so 1300531666 1300531686 python-gnomekeyring /usr/lib/pyshared/python2.6/gtk-2.0/gnomekeyring.so 1300531666 1300532106 telepathy-butterfly /usr/lib/telepathy/telepathy-butterfly 1300531666 1300532033 python-indicate /usr/lib/pyshared/python2.6/indicate/_indicate.so 1300531666 1300532015 python-pygoocanvas /usr/lib/pkgconfig/pygoocanvas.pc 1300531666 1300531772 linux-libc-dev /usr/include/asm/vsyscall.h 1300531666 1300531798 libfreezethaw-perl /usr/share/perl5/FreezeThaw.pm 1300531666 1300532018 plymouth-label /lib/plymouth/label.so 1300531666 1300531823 libgnomevfs2-extra /usr/lib/gnome-vfs-2.0/modules/libftp.so 1300531666 1300532222 evolution-indicator /usr/lib/evolution/2.30/plugins/liborg-freedesktop-evolution-indicator.so 1300531666 1300531925 nautilus-sendto-empathy /usr/lib/nautilus-sendto/plugins/libnstempathy.so 1300531666 1300531840 libxml-twig-perl /usr/share/perl5/XML/Twig.pm 1300531666 1300531947 network-manager-pptp-gnome /usr/lib/NetworkManager/libnm-pptp-properties.a 1300531666 1300531681 python-gtkspell /usr/lib/pyshared/python2.6/gtk-2.0/gtkspell.so 1300531666 1300531881 libtie-ixhash-perl /usr/share/perl5/Tie/IxHash.pm 1300531666 1300532180 wireless-tools /sbin/rfkill 1300531666 1300531685 python-pycurl /usr/lib/pyshared/python2.6/pycurl.so 1300531666 1300531957 python-virtkey /usr/lib/python2.6/dist-packages/virtkey.so 1300531666 1300532012 openprinting-ppds /usr/lib/cups/driver/openprinting-ppds 1300531666 1300532034 python-pam /usr/lib/python2.6/dist-packages/PAM-0.4.2.egg-info 1300531666 1300531735 ibus-pinyin /usr/lib/ibus-pinyin/ibus-setup-pinyin 1300531666 1300532108 telepathy-gabble /usr/lib/telepathy/gabble-0/gateways.so 1300531666 1300531795 libdigest-sha1-perl /usr/lib/perl5/auto/Digest/SHA1/SHA1.bs 1300531666 1300531780 libc6-dev /usr/include/math.h 1300531666 1300531715 hplip-data /usr/lib/cups/driver/hplip 1300531666 1300532056 rhythmbox-plugin-cdrecorder /usr/lib/rhythmbox/plugins/cd-recorder/libcd-recorder.so 1300531666 1300531793 libcrypt-passwdmd5-perl /usr/share/perl5/Crypt/PasswdMD5.pm 1300531666 1300532044 python-smbc /usr/lib/pyshared/python2.6/smbc.so 1300531666 1300531682 python-wnck /usr/lib/pyshared/python2.6/gtk-2.0/wnck.so 1300531666 1300532047 python-ubuntuone /usr/lib/pyshared/python2.6/ubuntuone/_gtkwidgets.so 1300531666 1300532112 telepathy-salut /usr/lib/telepathy/telepathy-salut 1300531666 1300531833 libmono-i18n-west2.0-cil /usr/lib/mono/2.0/I18N.dll 1300531666 1300531854 libsilc-1.1-2 /usr/lib/silc/libsilc-1.1-2/twofish.sim.so 1300531666 1300531878 ubuntu-sso-client /usr/lib/ubuntu-sso-client/ubuntu-sso-login 1300531666 1300531801 libgail-gnome-module /usr/lib/gtk-2.0/modules/libgail-gnome.so 1300531666 1300531841 libnet-dbus-perl /usr/lib/perl5/auto/Net/DBus/DBus.bs 1300531666 1300531708 libsane-hpaio /usr/lib/sane/libsane-hpaio.so.1 1300531666 1300531797 libfile-copy-recursive-perl /usr/share/perl5/File/Copy/Recursive.pm 1300531666 1300532091 splix /usr/lib/cups/driver/splix 1300531666 1300532109 telepathy-haze /usr/lib/telepathy/telepathy-haze 1300531666 1300531864 python-openssl /usr/lib/pyshared/python2.6/OpenSSL/crypto.so 1300531666 1300532035 python-farsight /usr/lib/python2.6/dist-packages/farsight.so 1300531666 1300532110 telepathy-idle /usr/lib/telepathy/telepathy-idle 1300531666 1300531672 python-egenix-mxtools /usr/lib/python2.6/dist-packages/mx/Tools/mxTools/mxTools.so 1300531666 1300532048 quadrapassel /usr/games/quadrapassel 1300530973 1300531536 libgnome-media0 /usr/lib/glade3/modules/libgnome-media-profiles.so 1300530973 1300531449 libmono-sharpzip2.84-cil /usr/lib/mono/2.0/ICSharpCode.SharpZipLib.dll 1300530973 1300531550 python-brlapi /usr/lib/pyshared/python2.6/brlapi.so 1300530973 1300531430 foomatic-db-compressed-ppds /usr/lib/cups/driver/foomatic-db-compressed-ppds 1300530973 1300531266 erlang-public-key /usr/lib/erlang/lib/public_key-0.4/ebin/OTP-PUB-KEY.beam 1300530973 1300531396 evolution-plugins /usr/lib/evolution/2.30/plugins/org-gnome-vcard-inline.eplug 1300530973 1300531634 gnomine /usr/games/gnomine 1300530973 1300531585 gnome-sudoku /usr/games/gnome-sudoku 1300530973 1300531269 erlang-xmerl /usr/lib/erlang/lib/xmerl-1.2.3/ebin/xmerl_xpath_pred.beam 1300530973 1300530981 libhtml-parser-perl /usr/lib/perl5/HTML/Filter.pm 1300530973 1300530988 libapparmor-perl /usr/lib/perl5/LibAppArmor.pm 1300530973 1300531263 erlang-crypto /usr/lib/erlang/lib/crypto-1.6.3/priv/lib/crypto_drv.so 1300530973 1300531201 bluez-gstreamer /usr/lib/gstreamer-0.10/libgstbluetooth.so 1300530973 1300531245 compiz-plugins /usr/lib/compiz/libzoom.so 1300530973 1300531323 gstreamer0.10-plugins-good /usr/lib/gstreamer-0.10/libgstvideofilter.so 1300530973 1300531144 libgail-common /usr/lib/gtk-2.0/modules/libgail.so 1300530973 1300531268 erlang-inets /usr/lib/erlang/lib/inets-5.2/priv/bin/runcgi.sh 1300530973 1300531247 libcompizconfig0 /usr/lib/compiz/libccp.so 1300530973 1300531073 aisleriot /usr/games/sol 1300530973 1300531312 libcaca0 /usr/lib/caca/libgl_plugin.so 1300530973 1300531530 gnome-mahjongg /usr/games/mahjongg 1300530973 1300530985 libxml-parser-perl /usr/lib/perl5/auto/XML/Parser/Expat/Expat.bs 1300530973 1300531071 gnome-games-common /usr/lib/gnome-games/libgames-support-gi.so 1300530973 1300531251 compiz-fusion-plugins-main /usr/include/compiz/compiz-text.h 1300530973 1300531526 libgnome-mag2 /usr/lib/orbit-2.0/GNOME_Magnifier_module.so 1300530973 1300531535 libgladeui-1-9 /usr/lib/glade3/modules/libgladepython.so 1300530973 1300531389 evolution-data-server /usr/lib/evolution-data-server-1.2/camel-providers/libcamelsmtp.so 1300530973 1300531324 gstreamer0.10-nice /usr/lib/gstreamer-0.10/libgstnice.so 1300530973 1300530990 apt-transport-https /usr/lib/apt/methods/https 1300530973 1300531527 python-gnomeapplet /usr/lib/pyshared/python2.6/gtk-2.0/gnomeapplet.so 1300530973 1300531436 libmono-system2.0-cil /usr/lib/mono/2.0/System.Configuration.Install.dll 1300530973 1300530980 liburi-perl /usr/share/perl5/URI.pm 1300530973 1300531248 compizconfig-backend-gconf /usr/lib/compizconfig/backends/libgconf.so 1300530973 1300531230 brasero-cdrkit /usr/lib/brasero/plugins/libbrasero-wodim.so 1300530973 1300531076 alsa-base /sbin/alsa 1300530973 1300531002 busybox-static /bin/static-sh 1300530973 1300531200 bluez-cups /usr/lib/cups/backend/bluetooth 1300530973 1300531304 libfolks-telepathy0 /usr/lib/folks/14/backends/telepathy/libfolks-backend-telepathy.so 1300530973 1300531493 ghostscript-x /usr/lib/ghostscript/8.71/X11.so 1300530973 1300531491 python-gtksourceview2 /usr/lib/pyshared/python2.6/gtksourceview2.so 1300530973 1300531027 libhtml-format-perl /usr/share/perl5/HTML/FormatPS.pm 1300530973 1300531301 libfolks0 /usr/lib/folks/14/backends/key-file/libfolks-backend-key-file.so 1300530973 1300531044 parted /sbin/partprobe 1300530973 1300531267 erlang-ssl /usr/lib/erlang/lib/ssl-3.10.7/priv/bin/ssl_esock 1300530973 1300531279 ghostscript-cups /usr/lib/cups/filter/pstopxl 1300530973 1300531640 gstreamer0.10-x /usr/lib/gstreamer-0.10/libgstxvimagesink.so 1300530973 1300531347 erlang-syntax-tools /usr/lib/erlang/lib/syntax_tools-1.6.4/ebin/erl_syntax.beam 1300530973 1300531397 evolution-webcal /usr/lib/evolution-webcal/evolution-webcal 1300530973 1300531008 dosfstools /sbin/mkfs.vfat 1300530973 1300531118 python-glade2 /usr/lib/pyshared/python2.6/gtk-2.0/gtk/glade.so 1300530973 1300531434 libmono-posix2.0-cil /usr/lib/mono/2.0/Mono.Posix.dll 1300530973 1300531265 erlang-runtime-tools /usr/lib/erlang/lib/runtime_tools-1.8.2/priv/lib/trace_ip_drv.so 1300530973 1300531560 notify-osd /usr/lib/notify-osd/notify-osd 1300530973 1300531226 gstreamer0.10-plugins-base /usr/lib/gstreamer-0.10/libgstvorbis.so 1300530973 1300531320 libv4l-0 /usr/lib/libv4l/ov518-decomp 1300530973 1300531635 gstreamer0.10-gnonlin /usr/lib/gstreamer-0.10/libgnl.so 1300530973 1300531031 libsasl2-modules /usr/lib/sasl2/libplain.so.2 1300530973 1300530980 libhtml-tagset-perl /usr/share/perl5/HTML/Tagset.pm 1300530973 1300531339 telepathy-logger /usr/lib/telepathy/telepathy-logger 1300530973 1300531445 libmono-cairo2.0-cil /usr/lib/mono/2.0/Mono.Cairo.dll 1300530973 1300531129 python-webkit /usr/lib/pyshared/python2.6/webkit/webkit.so 1300530973 1300531502 obexd-client /usr/lib/obexd/obex-client 1300530973 1300531024 libfont-afm-perl /usr/share/perl5/Font/AFM.pm 1300530973 1300530978 libterm-readkey-perl /usr/lib/perl5/auto/Term/ReadKey/autosplit.ix 1300530973 1300531457 gbrainy /usr/games/gbrainy 1300530973 1300531393 evolution-couchdb /usr/lib/evolution/2.30/plugins/liborg-gnome-evolution-couchdb.so 1300530973 1300531325 libgstfarsight0.10-0 /usr/lib/farsight2-0.0/librawudp-transmitter.so 1300530973 1300530982 libhtml-tree-perl /usr/share/perl5/HTML/Parse.pm 1300530973 1300531467 gconf-defaults-service /usr/lib/libgconf2-4/gconf-defaults-mechanism 1300530973 1300531507 libmagickcore3 /usr/lib/ImageMagick-6.6.2/modules-Q16/filters/analyze.la 1300530973 1300531005 python-gdbm /usr/lib/python2.7/lib-dynload/gdbm.so 1300530973 1300531452 libmono-management2.0-cil /usr/lib/mono/2.0/Mono.Management.dll 1300530973 1300531538 gstreamer0.10-pulseaudio /usr/lib/gstreamer-0.10/libgstpulse.so 1300530973 1300531537 gstreamer0.10-alsa /usr/lib/gstreamer-0.10/libgstalsa.so 1300530973 1300531264 erlang-mnesia /usr/lib/erlang/lib/mnesia-4.4.12/ebin/mnesia_checkpoint_sup.beam 1300530973 1300531292 desktopcouch /usr/lib/desktopcouch/desktopcouch-get-port 1300530973 1300531028 libmailtools-perl /usr/share/perl5/Mail/Header.pm 1300530973 1300531128 libwebkit-1.0-2 /usr/lib/webkit-1.0-2/libexec/GtkLauncher 1300530910 1300530925 python-libxml2 /usr/lib/pyshared/python2.6/libxml2mod.so 1300530493 1300530677 python-gnome2 /usr/lib/pyshared/python2.6/gtk-2.0/gnomevfs/_gnomevfs.so 1300530493 1300530665 ubuntu-system-service /usr/lib/system-service/system-service-d 1300530493 1300530672 python-pyorbit /usr/lib/pyshared/python2.6/ORBit.so 1300530493 1300530670 python-gnomecanvas /usr/lib/pyshared/python2.6/gtk-2.0/gnomecanvas.so 1300530493 1300530551 gamin /usr/lib/gamin/gam_server 1300530493 1300530522 libavahi-common-data /usr/lib/avahi/service-types.db 1300530177 1300530215 xserver-xorg-video-s3 /usr/lib/xorg/modules/drivers/s3_drv.so 1300530177 1300530223 xserver-xorg-video-voodoo /usr/lib/xorg/modules/drivers/voodoo_drv.so 1300530177 1300530206 xserver-xorg-video-cirrus /usr/lib/xorg/modules/drivers/cirrus_laguna.so 1300530177 1300530211 xserver-xorg-video-mga /usr/lib/xorg/modules/drivers/mga_drv.so 1300530177 1300530220 xserver-xorg-video-tseng /usr/lib/xorg/modules/drivers/tseng_drv.so 1300530177 1300530204 xserver-xorg-video-ati /usr/lib/xorg/modules/drivers/ati_drv.so 1300530177 1300530214 xserver-xorg-video-rendition /usr/lib/xorg/modules/drivers/rendition_drv.so 1300530177 1300530202 xserver-xorg-video-r128 /usr/lib/xorg/modules/drivers/r128_drv.so 1300530177 1300530209 xserver-xorg-video-i740 /usr/lib/xorg/modules/drivers/i740_drv.so 1300530177 1300530222 xserver-xorg-video-openchrome /usr/lib/xorg/modules/drivers/openchrome_drv.so 1300530177 1300530218 xserver-xorg-video-sis /usr/lib/xorg/modules/drivers/sis_drv.so 1300530177 1300530202 xserver-xorg-video-mach64 /usr/lib/xorg/modules/drivers/mach64_drv.so 1300530177 1300530190 libxvmc1 /usr/lib/xvmcconfig-standard/XvMCConfig 1300530177 1300530220 xserver-xorg-video-trident /usr/lib/xorg/modules/drivers/trident_drv.so 1300530177 1300530216 xserver-xorg-video-savage /usr/lib/xorg/modules/drivers/savage_drv.so 1300530177 1300530212 xserver-xorg-video-neomagic /usr/lib/xorg/modules/drivers/neomagic_drv.so 1300530177 1300530218 xserver-xorg-video-sisusb /usr/lib/xorg/modules/drivers/sisusb_drv.so 1300530177 1300530213 xserver-xorg-video-nv /usr/lib/xorg/modules/drivers/nv_drv.so 1300530177 1300530215 xserver-xorg-video-s3virge /usr/lib/xorg/modules/drivers/s3virge_drv.so 1300530177 1300530201 xserver-xorg-video-ark /usr/lib/xorg/modules/drivers/ark_drv.so 1300530177 1300530212 xserver-xorg-video-nouveau /usr/lib/xorg/modules/drivers/nouveau_drv.so 1300530177 1300530208 xserver-xorg-video-i128 /usr/lib/xorg/modules/drivers/i128_drv.so 1300530177 1300530226 xserver-xorg-input-mouse /usr/lib/xorg/modules/input/mouse_drv.so 1300530177 1300530219 xserver-xorg-video-tdfx /usr/lib/xorg/modules/drivers/tdfx_drv.so 1300530177 1300530200 xserver-xorg-video-apm /usr/lib/xorg/modules/drivers/apm_drv.so 1300530177 1300530207 xserver-xorg-video-geode /usr/lib/xorg/modules/drivers/ztv_drv.so 1300530177 1300530204 xserver-xorg-video-radeon /usr/lib/xorg/modules/multimedia/theatre_drv.so 1300530177 1300530217 xserver-xorg-video-siliconmotion /usr/lib/xorg/modules/drivers/siliconmotion_drv.so 1300530177 1300530205 xserver-xorg-video-chips /usr/lib/xorg/modules/drivers/chips_drv.so 1300530149 1300529862 tasksel-data /usr/lib/tasksel/info/netbook-desktop.preinst 1300529902 1300529925 python-gobject-cairo /usr/lib/pyshared/python2.6/gtk-2.0/gi/_gi_cairo.so 1300529815 1300529843 libtimedate-perl /usr/share/perl5/Time/Zone.pm 1300529815 1300529860 libio-string-perl /usr/share/perl5/IO/String.pm 1300529815 1300529859 libsub-name-perl /usr/lib/perl5/auto/Sub/Name/Name.bs 1300529815 1300529860 libclass-accessor-perl /usr/share/perl5/Class/Accessor.pm 1300529421 1300529483 linux-headers-2.6.35-22 /usr/src/linux-headers-2.6.35-22/include/xen/xencomm.h 1300529421 1300529482 linux-headers-2.6.35-22-generic /usr/src/linux-headers-2.6.35-22-generic/include/linux/zutil.h 1300528970 1300529000 netcat-openbsd /bin/nc.openbsd 1300528970 1300528990 iputils-ping /bin/ping6 1300528970 1300528979 bzip2 /bin/bzless 1300528895 1300528843 makedev /sbin/MAKEDEV 0 0 transmission-common 0 0 system-config-printer-common 0 0 libjack-jackd2-0 0 0 python-telepathy 0 0 nvidia-96-modaliases 0 0 libedata-cal1.2-7 0 0 libsdl1.2debian 0 0 gedit-common 0 0 libcupsdriver1 0 0 libgtkhtml3.14-19 0 0 libcdio10 0 0 sgml-data 0 0 ubuntu-desktop 0 0 libwmf0.2-7 0 0 libnss-mdns 0 0 apport-gtk 0 0 libgtksourceview2.0-common 0 0 xfonts-scalable 0 0 libxft2 0 0 gnome-media-common 0 0 libwpd8c2a 0 0 libevent-1.4-2 0 0 libxmu6 0 0 python-serial 0 0 evince-common 0 0 libbind9-60 0 0 libntfs10 0 0 libisc60 0 0 debconf-i18n 0 0 libdb4.8 0 0 python-cupshelpers 0 0 liboobs-1-5 0 0 libxv1 0 0 ubuntu-standard 0 0 libthai0 0 0 libcupscgi1 0 0 libslang2 0 0 libindicate-gtk2 0 0 language-pack-en 0 0 guile-1.8-libs 0 0 bcmwl-modaliases 0 0 liblqr-1-0 0 0 libzephyr4 0 0 gnome-session-common 0 0 libvala-0.10-0 0 0 libsgutils2-2 0 0 linux-generic 0 0 libhyphen0 0 0 libgupnp-1.0-3 0 0 xul-ext-ubufox 0 0 libgupnp-igd-1.0-3 0 0 libgdata7 0 0 metacity-common 0 0 libstlport4.6ldbl 0 0 libiw30 0 0 ubuntu-wallpapers 0 0 libvisual-0.4-0 0 0 libglu1-mesa 0 0 libgpgme11 0 0 python-pyatspi 0 0 python-debian 0 0 libthai-data 0 0 libgtkspell0 0 0 libpulse-browse0 0 0 liblua5.1-0 0 0 libsnmp-base 0 0 libgssdp-1.0-2 0 0 libgnomevfs2-common 0 0 readline-common 0 0 app-install-data-partner 0 0 libgnomecanvas2-common 0 0 libcap-ng0 0 0 libbrlapi0.5 0 0 gnome-mime-data 0 0 libgdata-common 0 0 libegroupwise1.2-13 0 0 libgnome2-common 0 0 libdv4 0 0 firefox-gnome-support 0 0 libportaudio2 0 0 python-libproxy 0 0 libxcb-dri2-0 0 0 libmetacity-private0 0 0 liblwres60 0 0 libklibc 0 0 python-argparse 0 0 libept1 0 0 liblzma2 0 0 geoip-database 0 0 libgucharmap7 0 0 ubuntu-mono 0 0 python-papyon 0 0 libshout3 0 0 x11-common 0 0 libt1-5 0 0 librasqal2 0 0 xorg 0 0 libsctp1 0 0 apport-symptoms 0 0 librarian0 0 0 libpoppler-glib5 0 0 base-files 0 0 gdm-guest-session 0 0 gnome-user-guide 0 0 python-wadllib 0 0 libdevmapper1.02.1 0 0 libexiv2-6 0 0 libgtk-vnc-1.0-0 0 0 python-xkit 0 0 linux-image-generic 0 0 libdrm-radeon1 0 0 gcc-4.5-base 0 0 myspell-en-za 0 0 libxpm4 0 0 gnome-desktop-data 0 0 libsilcclient-1.1-3 0 0 libparted0debian1 0 0 libpolkit-gtk-1-0 0 0 libcurl3 0 0 libgtop2-7 0 0 libijs-0.35 0 0 libburn4 0 0 libgoocanvas-common 0 0 libmagic1 0 0 libtiff4 0 0 libcryptui0 0 0 libieee1284-3 0 0 libgmp3c2 0 0 netbase 0 0 xfonts-base 0 0 libapparmor1 0 0 libdrm-intel1 0 0 gnome-terminal-data 0 0 xserver-xorg-input-all 0 0 python-oauth 0 0 libpth20 0 0 libgtksourceview2.0-0 0 0 ttf-khmeros-core 0 0 ttf-ubuntu-font-family 0 0 humanity-icon-theme 0 0 libisccfg60 0 0 evolution-data-server-common 0 0 ttf-indic-fonts-core 0 0 libbonoboui2-common 0 0 libss2 0 0 libwps-0.1-1 0 0 language-pack-gnome-en 0 0 libcouchdb-glib-1.0-2 0 0 ttf-kacst-one 0 0 libsepol1 0 0 libxapian15 0 0 libtheora0 0 0 python-ibus 0 0 xfonts-100dpi 0 0 manpages 0 0 libblkid1 0 0 libmission-control-plugins0 0 0 libgtop2-common 0 0 ttf-liberation 0 0 espeak-data 0 0 ubuntu-minimal 0 0 libarchive1 0 0 libopenobex1 0 0 libgsl0ldbl 0 0 gconf2-common 0 0 manpages-dev 0 0 libsmbclient 0 0 libmusicbrainz4c2a 0 0 libelf1 0 0 libmeanwhile1 0 0 libatm1 0 0 e2fslibs 0 0 xbitmaps 0 0 ttf-punjabi-fonts 0 0 xserver-xorg-video-all 0 0 libcurl3-gnutls 0 0 xkb-data 0 0 gcc-4.4-base 0 0 hunspell-en-ca 0 0 libcolamd2.7.1 0 0 x-ttcidfont-conf 0 0 python-gnupginterface 0 0 libmagickwand3 0 0 libxaw7 0 0 libhunspell-1.2-0 0 0 ubuntu-extras-keyring 0 0 example-content 0 0 ttf-wqy-microhei 0 0 libgexiv2-0 0 0 gnome-session-canberra 0 0 cups-common 0 0 libcupsimage2 0 0 ttf-takao-pgothic 0 0 docbook-xml 0 0 libdecoration0 0 0 empathy-common 0 0 libgtkhtml-editor0 0 0 console-terminus 0 0 libxt6 0 0 libtag1-vanilla 0 0 samba-common 0 0 libdjvulibre21 0 0 libjs-jquery 0 0 liblouis-data 0 0 libevview3 0 0 libsysfs2 0 0 libdmapsharing2 0 0 libubuntuone-1.0-1 0 0 libncursesw5 0 0 libprotoc6 0 0 nautilus-data 0 0 xorg-docs-core 0 0 libgamin0 0 0 ibus-pinyin-db-android 0 0 libgpod4 0 0 ubuntu-artwork 0 0 libgeoip1 0 0 libneon27-gnutls 0 0 libgdata1.2-1 0 0 linux-headers-generic 0 0 language-support-writing-en 0 0 python-launchpadlib 0 0 liblcms1 0 0 libedit2 0 0 gnome-icon-theme 0 0 gnome-utils-common 0 0 libxp6 0 0 python-configglue 0 0 libgtkhtml-editor-common 0 0 libicu42 0 0 libcupsppdc1 0 0 fontconfig-config 0 0 libsensors4 0 0 libatk1.0-data 0 0 libperl5.10 0 0 python-desktopcouch-records 0 0 friendly-recovery 0 0 libusb-0.1-4 0 0 cli-common 0 0 libjasper1 0 0 libaa1 0 0 nvidia-173-modaliases 0 0 myspell-en-gb 0 0 python-protobuf 0 0 hwdata 0 0 python-ubuntuone-client 0 0 gnome-utils 0 0 libavahi-gobject0 0 0 libboost-iostreams1.42.0 0 0 libglib2.0-data 0 0 usb-creator-common 0 0 libtag1c2a 0 0 libgs8 0 0 libnice0 0 0 xfonts-mathml 0 0 adium-theme-ubuntu 0 0 brasero-common 0 0 fglrx-modaliases 0 0 libcdparanoia0 0 0 gnome-themes-selected 0 0 libprotobuf6 0 0 libwnck-common 0 0 bogofilter 0 0 libmpfr4 0 0 libisofs6 0 0 libgraphite3 0 0 mobile-broadband-provider-info 0 0 gnome-themes-ubuntu 0 0 ttf-opensymbol 0 0 libdns66 0 0 libgnomekbd-common 0 0 libespeak1 0 0 totem-common 0 0 python-ubuntuone-storageprotocol 0 0 libebackend1.2-0 0 0 libfs6 0 0 libgtk2.0-common 0 0 libdotconf1.0 0 0 python-pyinotify 0 0 libpoppler7 0 0 libx11-data 0 0 liblircclient0 0 0 branding-ubuntu 0 0 libxxf86dga1 0 0 ubuntu-keyring 0 0 ubuntu-sounds 0 0 gnome-accessibility-themes 0 0 bogofilter-common 0 0 libiec61883-0 0 0 evolution-common 0 0 ttf-unfonts-core 0 0 libcdio-paranoia0 0 0 libpcap0.8 0 0 compiz 0 0 libbluetooth3 0 0 ttf-freefont 0 0 libdatrie1 0 0 libcdio-cdda0 0 0 nvidia-current-modaliases 0 0 libraptor1 0 0 iso-codes 0 0 libcwidget3 0 0 xfonts-encodings 0 0 libxmuu1 0 0 command-not-found-data 0 0 libidl0 0 0 libclutter-1.0-0 0 0 libxslt1.1 0 0 libgcr0 0 0 libspectre1 0 0 checkbox 0 0 ubufox 0 0 libgoocanvas3 0 0 dmz-cursor-theme 0 0 python-xdg 0 0 light-themes 0 0 hunspell-en-us 0 0 libdrm-nouveau1 0 0 libgnomeui-common 0 0 app-install-data 0 0 libatspi1.0-0 0 0 libgnome-bluetooth8 0 0 xcursor-themes 0 0 libpci3 0 0 libgadu3 0 0 screensaver-default-images 0 0 xfonts-75dpi 0 0 ubuntu-docs 0 0 libclutter-gtk-0.10-0 0 0 librdf0 0 0 libgdict-1.0-6 0 0 libidn11 0 0 libbsd0 0 0 python-louis 0 0 libx86-1 0 0 libopencc1 0 0 libnewt0.52 0 0 libacl1 0 0 libkpathsea5 0 0 libedata-book1.2-2 0 0 ttf-lao 0 0 hicolor-icon-theme 0 0 libgomp1 0 0 libgdata-google1.2-1 0 0 libgc1c2 0 0 libdesktopcouch-glib-1.0-2 0 0 libraw1394-11 0 0 libtelepathy-farsight0 0 0 libgweather-common 0 0 gsfonts 0 0 libgd2-xpm 0 0 libntfs-3g79 0 0 python-avahi 0 0 libdjvulibre-text 0 0 libisccc60 0 0 python-pexpect 0 0 ttf-thai-tlwg 0 0 liborc-0.4-0 0 0 libsdl1.2debian-pulseaudio 0 0 capplets-data 0 0 libtelepathy-logger1 0 0 libwavpack1 0 0 libspeechd2 0 0 libgpm2 0 0 libavc1394-0 0 0 libwebkit-1.0-common 0 0 notify-osd-icons 0 0 libwpg-0.1-1 0 0 libreadline6 0 0 libwbclient0 END-POPULARITY-CONTEST-0 TIME:1312866728AppRecommender-0.7.5/bin/get_pkgs_inst.py000077500000000000000000000014121306751311600204120ustar00rootroot00000000000000#!/usr/bin/env python # # get_pkgs_inst.py - get tuple (package,installation) from popcon results file # # results_file: org/popcon.debian.org/popcon-mail/results import sys from operator import itemgetter if __name__ == '__main__': if len(sys.argv) < 2: print "Usage: get_pkgs_inst popcon_results_path" exit(1) results_path = sys.argv[1] pkgs_inst = {} with open(results_path) as results: for line in results: if line.startswith("Package"): fields = line.split() inst = int(fields[2]) + int(fields[3]) + int(fields[4]) pkgs_inst[fields[1]] = inst sorted_by_inst = sorted(pkgs_inst.items(), key=itemgetter(1)) for pkg, inst in sorted_by_inst: print pkg, inst AppRecommender-0.7.5/bin/indexer_popcon.py000077500000000000000000000037501306751311600205750ustar00rootroot00000000000000#!/usr/bin/env python """ popindex.py - generate a popcon index to be used by the recommender as the users repository, based on filters provided by config """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ import os import sys sys.path.insert(0, '../') import logging import datetime from apprecommender.config import Config from apprecommender.data import FilteredPopconXapianIndex if __name__ == '__main__': base_dir = os.path.expanduser("~/.app-recommender/") axi_path = os.path.join(base_dir, "axi_XD") path = os.path.join(base_dir, "popcon_XD") popcon_dir = os.path.join(base_dir, "popcon-entries") tags_filter = os.path.join(base_dir, "filters/debtags") # set up config for logging cfg = Config() begin_time = datetime.datetime.now() logging.info("Popcon indexing started at %s" % begin_time) # use config file or command line options index = FilteredPopconXapianIndex(path, popcon_dir, axi_path, tags_filter) end_time = datetime.datetime.now() logging.info("Popcon indexing completed at %s" % end_time) logging.info("Number of documents (submissions): %d" % index.get_doccount()) delta = end_time - begin_time logging.info("Time elapsed: %d seconds." % delta.seconds) AppRecommender-0.7.5/bin/pkgindex.py000077500000000000000000000040431306751311600173660ustar00rootroot00000000000000#!/usr/bin/env python """ pkgindex.py - generate a pkgs index to be used by the recommender as the items repository, based on the pkgs filter provided by config """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ import os import sys sys.path.insert(0, '../') import logging import datetime import xapian from apprecommender.config import Config import apprecommender.data as data if __name__ == '__main__': cfg = Config() begin_time = datetime.datetime.now() logging.info("Sample package indexing started at %s" % begin_time) with open(cfg.pkgs_filter) as valid: pkgs_list = [line.strip() for line in valid] logging.info("Packages list length: %d" % len(pkgs_list)) # use config file or command line options pkgs_filter = cfg.pkgs_filter.lstrip(cfg.filters_dir) pkgindex = data.SampleAptXapianIndex(pkgs_list, xapian.Database(cfg.axi), os.path.join(cfg.base_dir, "axi_" + pkgs_filter)) end_time = datetime.datetime.now() logging.info("Sample package indexing completed at %s" % end_time) logging.info("Number of documents (packages): %d" % pkgindex.get_doccount()) delta = end_time - begin_time logging.info("Time elapsed: %d seconds." % delta.seconds) AppRecommender-0.7.5/bin/popindex.py000077500000000000000000000034751306751311600174130ustar00rootroot00000000000000#!/usr/bin/env python """ popindex.py - generate a popcon index to be used by the recommender as the users repository, based on filters provided by config """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ import sys sys.path.insert(0, '../') import logging import datetime from apprecommender.config import Config from apprecommender.data import PopconXapianIndex if __name__ == '__main__': cfg = Config() begin_time = datetime.datetime.now() logging.info("Popcon indexing started at %s" % begin_time) # use config file or command line options popindex = PopconXapianIndex(cfg) end_time = datetime.datetime.now() logging.info("Popcon indexing completed at %s" % end_time) logging.info("Number of documents (submissions): %d" % popindex.get_doccount()) delta = end_time - begin_time logging.info("Time elapsed: %d seconds." % delta.seconds) if cfg.index_mode == "cluster" or cfg.index_mode == "recluster": logging.info("Medoids: %d\tDispersion:%f" % (cfg.k_medoids, popindex.cluster_dispersion)) AppRecommender-0.7.5/bin/rank_terms.py000077500000000000000000000017241306751311600177250ustar00rootroot00000000000000#!/usr/bin/env python # # rank_terms.py - rank index terms by frequency import sys import xapian from operator import itemgetter if __name__ == '__main__': if "-h" in sys.argv or not len(sys.argv) == 4: print "\nUsage: rank_terms.py INDEX TERMS_FILE PREFIX\n" else: try: index = xapian.Database(sys.argv[1]) except: print "Could no open xapian index at %s" % sys.argv[1] try: with open(sys.argv[2]) as terms_file: terms_list = [line.strip() for line in terms_file] print terms_list frequencies = {} for term in terms_list: frequencies[term] = index.get_termfreq(sys.argv[3] + term) sorted_freqs = sorted(frequencies.items(), key=itemgetter(1)) except: print "Could not extract terms list from %s" % sys.argv[2] for term, freq in sorted_freqs: print term, str(freq) AppRecommender-0.7.5/bin/user_profiling.py000077500000000000000000000034231306751311600206050ustar00rootroot00000000000000#!/usr/bin/env python """ user_profiling - example script for testing user profiling """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ import sys import xapian sys.path.insert(0, '../') import apprecommender.user as user repo = xapian.Database("~/.app-recommender/axi_programs") user = user.LocalSystem() with open("~/.app-recommender/filters/debtags") as tags: valid_tags = [line.strip() for line in tags if not line.startswith("#")] size = 20 print "\nTF-IDF profiles" print "\nby tag: ", user.content_profile(repo, "tag", size, valid_tags) print "\nby desc: ", user.content_profile(repo, "desc", size) print "\nmix:", user.content_profile(repo, "mix", size, valid_tags) print "\nhalf", user.content_profile(repo, "half", size, valid_tags) print "\nEset profile" print "\nby tag: ", user.content_profile(repo, "tag_eset", size, valid_tags) print "\nby desc:", user.content_profile(repo, "desc_eset", size) print "\nmix: ", user.content_profile(repo, "mix_eset", size, valid_tags) print "\nhalf", user.content_profile(repo, "half_eset", size, valid_tags) AppRecommender-0.7.5/collect_data.sh000077500000000000000000000024441306751311600174100ustar00rootroot00000000000000#!/bin/bash echo "Para executar o AppRecommender as seguintes dependencias serao instaladas:" echo "" echo "python python-xapian python-apt python-cluster python-webpy" echo "python-simplejson python-numpy apt-xapian-index python-xdg debtags" echo "python-pip python-sklearn python-matplotlib python-stemmer" echo "" echo "Apos a instalação das dependencias os pacotes serao indexados ao xapian, que é o banco de dados utilizado pelo AppRecommender" echo "" cd bin/data_collect/ ./install_dependencies.sh cd - cd bin/ echo "" echo "Agora os dados do AppRecommender serao inicializados" ./apprec.py --init cd data_collect/ echo "" echo "Iniciando a coleta de dados" ./collect_user_data.py echo "" echo "Desinstalando as dependencias do AppRecommender" ./remove_dependencies.sh echo "" echo "" echo "" echo "Compacte o arquivo de log que está na home" echo "o nome do arquivo comeca com 'app_recommender_log'" echo "$ cd ~" echo "$ tar -zcvf [nome_da_pasta].tar.gz [nome_da_pasta]" echo "" echo "Envie o arquivo compactado para um dos seguintes emails:" echo "lucianopcbr@gmail.com" echo "lucas.moura128@gmail.com" echo "" echo "Como titulo do e-mail utilize 'coleta de dados'" echo "" echo "" echo "Obrigado por colaborar com nosso trabalho" echo "" echo "Att," echo "Lucas Moura e Luciano Prestes" echo "" AppRecommender-0.7.5/doc/000077500000000000000000000000001306751311600151745ustar00rootroot00000000000000AppRecommender-0.7.5/doc/doxy_config000066400000000000000000002117521306751311600174370ustar00rootroot00000000000000# Doxyfile 1.7.3 # 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 #--------------------------------------------------------------------------- # This tag specifies the encoding used for all characters in the config file # that follow. The default is UTF-8 which is also the encoding used for all # text before the first occurrence of this tag. Doxygen uses libiconv (or the # iconv built into libc) for the transcoding. See # http://www.gnu.org/software/libiconv for the list of possible encodings. DOXYFILE_ENCODING = UTF-8 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded # by quotes) that should identify the project. PROJECT_NAME = AppRecommender # 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 = v0.3 # Using the PROJECT_BRIEF tag one can provide an optional one line description for a project that appears at the top of each page and should give viewer a quick idea about the purpose of the project. Keep the description short. PROJECT_BRIEF = # With the PROJECT_LOGO tag one can specify an logo or icon that is # included in the documentation. The maximum height of the logo should not # exceed 55 pixels and the maximum width should not exceed 200 pixels. # Doxygen will copy the logo to the output directory. PROJECT_LOGO = # 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: # Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, # Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, # Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English # messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, # Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, # Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. OUTPUT_LANGUAGE = English # 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 = NO # 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 if your file system # 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 regular Qt-style comments # (thus requiring an explicit @brief command for a brief description.) JAVADOC_AUTOBRIEF = NO # If the QT_AUTOBRIEF tag is set to YES then Doxygen will # interpret the first line (until the first dot) of a Qt-style # comment as the brief description. If set to NO, the comments # will behave just like regular Qt-style comments (thus requiring # an explicit \brief command for a brief description.) QT_AUTOBRIEF = NO # 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 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 = 4 # 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 = NO # 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 # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran # sources only. Doxygen will then generate output that is more tailored for # Fortran. OPTIMIZE_FOR_FORTRAN = NO # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL # sources. Doxygen will then generate output that is tailored for # VHDL. OPTIMIZE_OUTPUT_VHDL = NO # Doxygen selects the parser to use depending on the extension of the files it # parses. With this tag you can assign which parser to use for a given extension. # Doxygen has a built-in mapping, but you can override or extend it using this # tag. The format is ext=language, where ext is a file extension, and language # is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C, # C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make # doxygen treat .inc files as Fortran files (default is PHP), and .f files as C # (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions # you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. EXTENSION_MAPPING = # 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 makes the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. BUILTIN_STL_SUPPORT = NO # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. # Doxygen will parse them like normal C++ but will assume all classes use public # instead of private inheritance when no explicit protection keyword is present. SIP_SUPPORT = NO # For Microsoft's IDL there are propget and propput attributes to indicate getter # and setter methods for a property. Setting this option to YES (the default) # will make doxygen replace the get and set methods by a property in the # documentation. This will only work if the methods are indeed getting or # setting a simple type. If this is not the case, or you want to show the # methods anyway, you should set this option to NO. IDL_PROPERTY_SUPPORT = YES # 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 # When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum # is documented as struct, union, or enum with the name of the typedef. So # typedef struct TypeS {} TypeT, will appear in the documentation as a struct # with name TypeT. When disabled the typedef will appear as a member of a file, # namespace, or class. And the struct will be named TypeS. This can typically # be useful for C code in case the coding convention dictates that all compound # types are typedef'ed and only the typedef is referenced, never the tag name. TYPEDEF_HIDES_STRUCT = NO # The SYMBOL_CACHE_SIZE determines the size of the internal cache use to # determine which symbols to keep in memory and which to flush to disk. # When the cache is full, less often used symbols will be written to disk. # For small to medium size projects (<1000 input files) the default value is # probably good enough. For larger projects a too small cache size can cause # doxygen to be busy swapping symbols to and from disk most of the time # causing a significant performance penalty. # If the system has enough physical memory increasing the cache will improve the # performance by keeping more symbols in memory. Note that the value works on # a logarithmic scale so increasing the size by one will roughly double the # memory usage. The cache size is given by this formula: # 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, # corresponding to a cache size of 2^16 = 65536 symbols SYMBOL_CACHE_SIZE = 0 #--------------------------------------------------------------------------- # 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 = NO # 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 this flag is set to YES, the members of anonymous namespaces will be # extracted and appear in the documentation as a namespace called # 'anonymous_namespace{file}', where file will be replaced with the base # name of the file that contains the anonymous namespace. By default # anonymous namespaces are hidden. EXTRACT_ANON_NSPACES = 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 FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen # will list include files with double quotes in the documentation # rather than with sharp brackets. FORCE_LOCAL_INCLUDES = NO # 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_MEMBERS_CTORS_1ST tag is set to YES then doxygen # will sort the (brief and detailed) documentation of class members so that # constructors and destructors are listed first. If set to NO (the default) # the constructors will appear in the respective orders defined by # SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. # This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO # and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. SORT_MEMBERS_CTORS_1ST = NO # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the # hierarchy of group names into alphabetical order. If set to NO (the default) # the group names will appear in their defined order. SORT_GROUP_NAMES = 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 # If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper type resolution of all parameters of a function it will reject a # match between the prototype and the implementation of a member function even if there is only one candidate or it is obvious which candidate to choose by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen # will still accept a match between prototype and implementation in such cases. STRICT_PROTO_MATCHING = 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 macro 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 macros 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 # Set the SHOW_FILES tag to NO to disable the generation of the Files page. # This will remove the Files entry from the Quick Index and from the # Folder Tree View (if specified). The default is YES. SHOW_FILES = YES # Set the SHOW_NAMESPACES tag to NO to disable the generation of the # Namespaces page. # This will remove the Namespaces entry from the Quick Index # and from the Folder Tree View (if specified). The default is YES. SHOW_NAMESPACES = YES # 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 = # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed # by doxygen. The layout file controls the global structure of the generated # output files in an output format independent way. The create the layout file # that represents doxygen's defaults, run doxygen with the -l option. # You can optionally specify a file name after the option, if omitted # DoxygenLayout.xml will be used as the name of the layout file. LAYOUT_FILE = #--------------------------------------------------------------------------- # 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 # The WARN_NO_PARAMDOC option can be enabled 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 = ../src/ # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is # also the default input encoding. Doxygen uses libiconv (or the iconv built # into libc) for the transcoding. See http://www.gnu.org/software/libiconv for # the list of possible encodings. INPUT_ENCODING = UTF-8 # 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++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh # *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py # *.f90 *.f *.for *.vhd *.vhdl 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 = # The EXCLUDE_SYMLINKS tag can be used select whether or not files or # directories that are symbolic links (a Unix file system 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 EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, # AClass::ANamespace, ANamespace::*Test EXCLUDE_SYMBOLS = # 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 or if # non of the patterns match the file name, INPUT_FILTER is applied. 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 # The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file # pattern. A pattern will override the setting for FILTER_PATTERN (if any) # and it is also possible to disable source filtering for a specific pattern # using *.ext= (so without naming a filter). This option only has effect when # FILTER_SOURCE_FILES is enabled. FILTER_SOURCE_PATTERNS = #--------------------------------------------------------------------------- # 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 # 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 # 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 documentation. 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 = YES # 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 = html # 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 = # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. # Doxygen will adjust the colors in the stylesheet and background images # according to this color. Hue is specified as an angle on a colorwheel, # see http://en.wikipedia.org/wiki/Hue for more information. # For instance the value 0 represents red, 60 is yellow, 120 is green, # 180 is cyan, 240 is blue, 300 purple, and 360 is red again. # The allowed range is 0 to 359. HTML_COLORSTYLE_HUE = 220 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of # the colors in the HTML output. For a value of 0 the output will use # grayscales only. A value of 255 will produce the most vivid colors. HTML_COLORSTYLE_SAT = 100 # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to # the luminance component of the colors in the HTML output. Values below # 100 gradually make the output lighter, whereas values above 100 make # the output darker. The value divided by 100 is the actual gamma applied, # so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, # and 100 does not change the gamma. HTML_COLORSTYLE_GAMMA = 80 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML # page will contain the date and time when the page was generated. Setting # this to NO can help when comparing the output of multiple runs. HTML_TIMESTAMP = YES # 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 HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. For this to work a browser that supports # JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox # Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). HTML_DYNAMIC_SECTIONS = YES # If the GENERATE_DOCSET tag is set to YES, additional index files # will be generated that can be used as input for Apple's Xcode 3 # integrated development environment, introduced with OSX 10.5 (Leopard). # To create a documentation set, doxygen will generate a Makefile in the # HTML output directory. Running make will produce the docset in that # directory and running "make install" will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find # it at startup. # See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html # for more information. GENERATE_DOCSET = NO # When GENERATE_DOCSET tag is set to YES, this tag determines the name of the # feed. A documentation feed provides an umbrella under which multiple # documentation sets from a single provider (such as a company or product suite) # can be grouped. DOCSET_FEEDNAME = "Doxygen generated docs" # When GENERATE_DOCSET tag is set to YES, this tag specifies a string that # should uniquely identify the documentation set bundle. This should be a # reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen # will append .docset to the name. DOCSET_BUNDLE_ID = org.doxygen.Project # When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify # the documentation publisher. This should be a reverse domain-name style # string, e.g. com.mycompany.MyDocSet.documentation. DOCSET_PUBLISHER_ID = org.doxygen.Publisher # The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. DOCSET_PUBLISHER_NAME = Publisher # 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 compiled 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 CHM_INDEX_ENCODING # is used to encode HtmlHelp index (hhk), content (hhc) and project file # content. CHM_INDEX_ENCODING = # 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 # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated # that can be used as input for Qt's qhelpgenerator to generate a # Qt Compressed Help (.qch) of the generated HTML documentation. GENERATE_QHP = NO # If the QHG_LOCATION tag is specified, the QCH_FILE tag can # be used to specify the file name of the resulting .qch file. # The path specified is relative to the HTML output folder. QCH_FILE = # The QHP_NAMESPACE tag specifies the namespace to use when generating # Qt Help Project output. For more information please see # http://doc.trolltech.com/qthelpproject.html#namespace QHP_NAMESPACE = org.doxygen.Project # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating # Qt Help Project output. For more information please see # http://doc.trolltech.com/qthelpproject.html#virtual-folders QHP_VIRTUAL_FOLDER = doc # If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to # add. For more information please see # http://doc.trolltech.com/qthelpproject.html#custom-filters QHP_CUST_FILTER_NAME = # The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the # custom filter to add. For more information please see # # Qt Help Project / Custom Filters. QHP_CUST_FILTER_ATTRS = # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this # project's # filter section matches. # # Qt Help Project / Filter Attributes. QHP_SECT_FILTER_ATTRS = # If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can # be used to specify the location of Qt's qhelpgenerator. # If non-empty doxygen will try to run qhelpgenerator on the generated # .qhp file. QHG_LOCATION = # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files # will be generated, which together with the HTML files, form an Eclipse help # plugin. To install this plugin and make it available under the help contents # menu in Eclipse, the contents of the directory containing the HTML and XML # files needs to be copied into the plugins directory of eclipse. The name of # the directory within the plugins directory should be the same as # the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before # the help appears. GENERATE_ECLIPSEHELP = NO # A unique identifier for the eclipse help plugin. When installing the plugin # the directory name containing the HTML and XML files should also have # this name. ECLIPSE_DOC_ID = org.doxygen.Project # 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 [0,1..20]) # that doxygen will group on one line in the generated HTML documentation. # Note that a value of 0 will completely suppress the enum values from appearing in the overview section. ENUM_VALUES_PER_LINE = 4 # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index # structure should be generated to display hierarchical information. # If the tag value 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 (i.e. any modern browser). # Windows users are probably better off using the HTML help feature. GENERATE_TREEVIEW = NO # By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, # and Class Hierarchy pages using a tree view instead of an ordered list. USE_INLINE_TREES = 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 # When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open # links to external symbols imported via tag files in a separate window. EXT_LINKS_IN_WINDOW = NO # Use this tag to change the font size of Latex formulas included # as images in the HTML documentation. The default is 10. Note that # when you change the font size after a successful doxygen run you need # to manually remove any form_*.png images from the HTML output directory # to force them to be regenerated. FORMULA_FONTSIZE = 10 # Use the FORMULA_TRANPARENT tag to determine whether or not the images # generated for formulas are transparent PNGs. Transparent PNGs are # not supported properly for IE 6.0, but are supported on all modern browsers. # Note that when changing this option you need to delete any form_*.png files # in the HTML output before the changes have effect. FORMULA_TRANSPARENT = YES # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax # (see http://www.mathjax.org) which uses client side Javascript for the # rendering instead of using prerendered bitmaps. Use this if you do not # have LaTeX installed or if you want to formulas look prettier in the HTML # output. When enabled you also need to install MathJax separately and # configure the path to it using the MATHJAX_RELPATH option. USE_MATHJAX = NO # When MathJax is enabled you need to specify the location relative to the # HTML output directory using the MATHJAX_RELPATH option. The destination # directory should contain the MathJax.js script. For instance, if the mathjax # directory is located at the same level as the HTML output directory, then # MATHJAX_RELPATH should be ../mathjax. The default value points to the mathjax.org site, so you can quickly see the result without installing # MathJax, but it is strongly recommended to install a local copy of MathJax # before deployment. MATHJAX_RELPATH = http://www.mathjax.org/mathjax # When the SEARCHENGINE tag is enabled doxygen will generate a search box # for the HTML output. The underlying search engine uses javascript # and DHTML and should work on any modern browser. Note that when using # HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets # (GENERATE_DOCSET) there is already a search function so this one should # typically be disabled. For large projects the javascript based search engine # can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. SEARCHENGINE = YES # When the SERVER_BASED_SEARCH tag is enabled the search engine will be # implemented using a PHP enabled web server instead of at the web client # using Javascript. Doxygen will generate the search PHP script and index # file to put on the web server. The advantage of the server # based approach is that it scales better to large projects and allows # full text search. The disadvantages are that it is more difficult to setup # and does not have live searching capabilities. SERVER_BASED_SEARCH = NO #--------------------------------------------------------------------------- # 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 = NO # 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 = latex # 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. # Note that when enabling USE_PDFLATEX this option is only used for # generating bitmaps for formulas in the HTML output, but not in the # Makefile that is written to the output directory. 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, 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 # If LATEX_SOURCE_CODE is set to YES then doxygen will include # source code with syntax highlighting in the LaTeX output. # Note that which sources are shown also depends on other settings # such as SOURCE_BROWSER. LATEX_SOURCE_CODE = 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 = rtf # 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 = NO # 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 that overrules the definition found in the source code. EXPAND_AS_DEFINED = # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then # doxygen's preprocessor will remove all references to function-like macros # that are alone on a line, have an all uppercase name, and do not end with a # semicolon, because these 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 also works with HAVE_DOT disabled, but it is recommended to # install and use dot, since it yields more powerful graphs. CLASS_DIAGRAMS = YES # You can define message sequence charts within doxygen comments using the \msc # command. Doxygen will then run the mscgen tool (see # http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the # documentation. The MSCGEN_PATH tag allows you to specify the directory where # the mscgen tool resides. If left empty the tool is assumed to be found in the # default search path. MSCGEN_PATH = # 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 = YES # The DOT_NUM_THREADS specifies the number of dot invocations doxygen is # allowed to run in parallel. When set to 0 (the default) doxygen will # base this on the number of processors available in the system. You can set it # explicitly to a value larger than 0 to get control over the balance # between CPU load and processing speed. DOT_NUM_THREADS = 0 # By default doxygen will write a font called Helvetica to the output # directory and reference it in all dot files that doxygen generates. # When you want a differently looking font you can specify the font name # using DOT_FONTNAME. You need to make sure dot is able to find the font, # which can be done by putting it in a standard location or by setting the # DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory # containing the font. DOT_FONTNAME = FreeSans.ttf # The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. # The default size is 10pt. DOT_FONTSIZE = 10 # By default doxygen will tell dot to use the output directory to look for the # FreeSans.ttf font (which doxygen will put there itself). If you specify a # different font using DOT_FONTNAME you can set the path where dot # can find it using this tag. DOT_FONTPATH = # 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 = YES # 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 options 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 generate a 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, svg, gif or svg. # 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 MSCFILE_DIRS tag can be used to specify one or more directories that # contain msc files that are included in the documentation (see the # \mscfile command). MSCFILE_DIRS = # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of # nodes that will be shown in the graph. If the number of nodes in a graph # becomes larger than this value, doxygen will truncate the graph, which is # visualized by representing a node as a red box. Note that doxygen if the # number of direct children of the root node in a graph is already larger than # DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note # that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. DOT_GRAPH_MAX_NODES = 50 # 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 the size of a graph can be further restricted by # DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. MAX_DOT_GRAPH_DEPTH = 0 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent # background. This is disabled by default, because dot on Windows does not # seem to support this out of the box. 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 = YES # 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 AppRecommender-0.7.5/doc/header-python000077500000000000000000000015131306751311600176710ustar00rootroot00000000000000#!/usr/bin/env python """ Program - Description """ __author__ = "Tassia Camoes Araujo " __copyright__ = "Copyright (C) 2011 Tassia Camoes Araujo" __license__ = """ 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 3 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, see . """ AppRecommender-0.7.5/fig/000077500000000000000000000000001306751311600151745ustar00rootroot00000000000000AppRecommender-0.7.5/fig/app_rec.dia000066400000000000000000000202611306751311600172650ustar00rootroot00000000000000]r8}px^m2ꉞkvLGƾ)h%sKT).&hK>(,<H$d&_W_4ՇkJh5Kj<-J>\?l6},pdoI_\w]]}{y Mo7*|>\߇ϋ4ٮ׻VvdW_}*;:O˹"Os}NiI&uIyߴٷT ~/窻Fc.UGr7152=>pqqlNMƛ*},pCݤۨ?N6 kր^|7 Y>~m3w{Ԣ,_aڝٿY|>^mw/|vgk|=HFR(;i8þݩQ/:0J/b>ED N~^jF*m/߾fWW?.,~A?\9rԙ:yy׻e0?#Q#M8eT"\- Cqx/i@-,IWUx? TlbqŋM3$sճc%ȝQZWd(nB ؍X5umoe!ڮie?d֡seYA^o;uإ@}Mõ('5=bIp?JS-GeZTM苭al)7zC.x 8ojX;=̧x}~LVIg6O')~Li>WKS~oɼNOI~g|A.fO_J*|ϷKga12P/g-TdU|3{N:Ntgt<:w}m}wJ78r{vщ,s*rV.yiI@3p3MoQEK u Ua{2},0z[#Mm>>>UuP)&Z``\ȴRIYx[D\{k$'6ՊJ8c ?LWQo,6ݳAdwOl_#RSMn<PjvԮҙuoq>x5om^'G/MVhdKUSP@<_ڍ 2NA0:ZlPe1A BLb !&1A BLbQLPNǥD%Jbko22aGa7uWȯ_K~6hDf6S0!0!0!gjB.\gC[I"YiQW@yF%W:ĕ6p]종{D3cd˸%J8p(P¡C %J8p(P/O _&ν)=H{Põ&OQ=ä>iNT̩ߏ,.l '-"6 @ @ a>|hcD26ebet|x%efnv D:ܶ#0I;n8A}x >A}P $-g ỵdN8ûS}G+]Z#5$VLV ,HW:Į63SR1*ÎW̼*" h3f@6m h3IɻbH#3f5 $GsLLȎCvv9ȏC~,ŻW q. s=$_7uS|duI.>YGLQ^|*8L\܅Qw]uN~0>iÉ?mOon)=Z^\Dni1R=Ưڐ2:yHN|Z۪A Vj4IXoR}Mvo_ +gU,Yvor_|zn"Hꎉ-9+d~LX{?]\,.\,Xv]8#Ҧ%I .V' 8o$߂0~M "h[C5R-՘:SOZ:zQ^BzX%1?b5%xB])o|8mf($<H4r~u&dl@7sJT H%@*R JT G4CQ&a``t2j1e0e4p F懘8Q/Gmb>%VC'[?y脏Tĥ".qg9ODZޣp?yݞy e[Kmڔ!Քr5TxPnĤ~ʇd!АTN a/,5D i…BF*z#w I5.!VKitTFk!$jExTģ"GE<*QxTģ"z7UCxb" oe=gD[,].]^ 9BpNx{ 2C%Ro]:M,߾#\5GN-07xZuhY-P/D-PRJ^PJфJPCX '=`*(aT^(cJv7 XZl%uh+k045mtoϩ@}įUK jQ @SO %l]GGzXZ(bS$,nbf PŽـJvԁ60:\'xl4]Snkh.m'etv}jλteE~?{xM;XaS^}d2~: izUJs^9ڶW\!omƜ5Sz} /g9=JgJ պ ɍvف/tӞsc`7<7zs]v;].tckb(SH:&LhrpyCn]SP'(ye9ˉ|s&C˹\[Y]gu/٬C;-͙ʠA6m9hsA6w]w u1;]pŭM}" 0GNZ볂Obh7Ƙ5x<c4 Kp0a8 p0aC&8 xA:D NC>c }F^Pc_W \ p*UW\ p*UhpWA"B؏P`PI<|g0ͮI#<^1\D0a8 p0a0\bmo$v'&'2FFLp0S?p.]w p.]wBp> 9y_+gN^ggz1/,@Ye( P,@YeE eH-en Pc3"˘̱& gx&[x0Aef?\EZv?Ǚ3\E$ $! I@HB$ $$Iyt| 3ggCFD8{s~EpBN\Hץ7j/]AWJ\Fkx'L7iZƛ0ۦn [Br  7@nrMᙌՠq!F ՠBl!|! n'̏I\^0u P.@]u2TQ2ٌˉ2^G2 hHD$bX[6ͭqCL4~I+# Q #1wPa$V*l_]`dM|]Z[EhaR(xm?wl&;&ƀephZ£ o? GX|]qpɍ8QupI!(LCC#G?B#GB$4\aUx9e@o|u ZG%/ݿUl 4@hB  4@hBGtgP͈7(S) J#Ж G45"Q4Ԝ_u3lwط+YpkZjjj7YmV[\ &蝿(Aͮi ݔB͘' Ю4X,ee.77yqgv9{HNO2u@|d'0:Mr?nx͓EB /#0MRj߅Qw]uceI7=ҋ~$ Pp5w)6(?vc˨ճZw(ִk<ƊoߴJv+.eؖ mĢ7&HIO޵Q눝rDٶpvpppu =AYtr(C1J\WNpIslQqrwSR!wѬ}G׀wKxr_&.G46 YOzB'd=! YOzB' f< l fP5ģDF܆mvqc~HlpЪP'Ѐxtt6IMM7m|M1o 7-"Aoz 7@ozn+p En@]]!1"78ҝx ON(ܕ`ܔysz xv7@oz 7@o@ƐJNy0!b0"&D+ )2mAcF赦Fe/-~p6*}r %jAڛEv1K[T3x AXi ڳ,ٰR~6_j|WF+m]Ơ_566v.?BJv:OQuUQunyy^P'oCWgȠR |_o|(ִKiuOTW%jb+qU.?oEݼ^W0Kܢw>Qބ&ь9au0s}18#<[hg̈_h_о}A /h_о}]ug d5Uz+F5+d(9J/|077WRݖ{Y޸~e0e-FںGo*/o`ybs&}MlLǺ,x2p[5n1uzn̓ٲ͔Z7k2f]/1Ͷ$Ni jv#Zoȟ+`ЄweF2l$ؕztǥmxx oÆÆ=~|cP0Ip ^ߗ,p , R}]&fN 9zLi(A65"JQD %(AD "JQdS#ȦF65 #QV0ҩGJ/{FO07 [7W^F:9ZKRc|]FE4!|A /_ |A /_ |Ahp 1įѫSu10)3}ǠYlT9_LJW(]/9wP?cВZ:0 8.̼v,SF!˒Y\~>zGakO>]?3[Cux 02ltN&y.7:ś'(/~e;il].܏qmޅ{[wV!B9*p_zK4ʋ S?q{NVj.Wm:}2W^q[Kye4:&_ILQ)J~_c-Nkt<;wwhQCY(aA n˜/=Ns VdT WЮCoFMcܔyVM5jx*M{HCr!Ձ>!,eu!C=$8+|("y3jY.pEjǧHZmY^?jb^0Qޑŏ`Es(9skE]5@bQ"rjV(Wzgl5b[[F(wdJ ~4I_A{V)Fj%^ɛ[.˨9wUZZD/fJQV>UIT/yD4ks.qj:q 4T3̞&)ڨk^TmPսLZzetkyMs^=feC]}0ސښ]:zF֜:]'t 6װ\} }cM.ie֬l*z5W;rVc4/CZxj3:Z[`Oj.we9^YKV'Ț ύXJ桱D[)>+a^5: PS&k, 5 )3;M888:g ޴>%& &eL-$\=ל[&ܤX9C:g69ǜy'jW |Vt%ol#nTa@`@`@`@4ZF_M?#ؒ %z׆3J宍p)#O3ȝ& SN2#ܣȜq7Slo+)$)L}>E~Q;V@r˲AppRecommender-0.7.5/fig/app_rec.eps000066400000000000000000016517501306751311600173350ustar00rootroot00000000000000%!PS-Adobe-2.0 EPSF-2.0 %%Title: /home/tassia/AppRecommender/app_rec.dia %%Creator: Dia v0.97.1 %%CreationDate: Mon Feb 21 16:32:47 2011 %%For: tassia %%Orientation: Portrait %%Magnification: 1.0000 %%BoundingBox: 0 0 2252 1114 %%BeginSetup %%EndSetup %%EndComments %%BeginProlog [ /.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 /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.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 /space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] /isolatin1encoding exch def /cp {closepath} bind def /c {curveto} bind def /f {fill} bind def /a {arc} bind def /ef {eofill} bind def /ex {exch} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth pop} bind def /tr {translate} bind def /ellipsedict 8 dict def ellipsedict /mtrx matrix put /ellipse { ellipsedict begin /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc savematrix setmatrix end } def /mergeprocs { dup length 3 -1 roll dup length dup 5 1 roll 3 -1 roll add array cvx dup 3 -1 roll 0 exch putinterval dup 4 2 roll putinterval } bind def /dpi_x 300 def /dpi_y 300 def /conicto { /to_y exch def /to_x exch def /conic_cntrl_y exch def /conic_cntrl_x exch def currentpoint /p0_y exch def /p0_x exch def /p1_x p0_x conic_cntrl_x p0_x sub 2 3 div mul add def /p1_y p0_y conic_cntrl_y p0_y sub 2 3 div mul add def /p2_x p1_x to_x p0_x sub 1 3 div mul add def /p2_y p1_y to_y p0_y sub 1 3 div mul add def p1_x p1_y p2_x p2_y to_x to_y curveto } bind def /start_ol { gsave 1.1 dpi_x div dup scale} bind def /end_ol { closepath fill grestore } bind def 28.346000 -28.346000 scale 5.201472 -13.858579 translate %%EndProlog 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb n 10.296699 -25.361122 m 10.296699 -23.961122 l 22.346699 -23.961122 l 22.346699 -25.361122 l f 0.000000 0.000000 0.000000 srgb n 10.296699 -25.361122 m 10.296699 -23.961122 l 22.346699 -23.961122 l 22.346699 -25.361122 l cp s gsave 13.086699 -24.411122 translate 0.035278 -0.035278 scale start_ol 2182 2496 moveto 2521 2496 2668 2624 conicto 2816 2752 2816 3044 conicto 2816 3334 2668 3459 conicto 2521 3584 2182 3584 conicto 1728 3584 lineto 1728 2496 lineto 2182 2496 lineto 1728 1664 moveto 1728 0 lineto 576 0 lineto 576 4416 lineto 2297 4416 lineto 3162 4416 3565 4125 conicto 3968 3834 3968 3205 conicto 3968 2771 3754 2491 conicto 3540 2212 3109 2080 conicto 3345 2025 3532 1832 conicto 3719 1640 3911 1249 conicto 4544 0 lineto 3310 0 lineto 2768 1093 lineto 2614 1423 2455 1543 conicto 2297 1664 2034 1664 conicto 1728 1664 lineto end_ol grestore gsave 13.701120 -24.411122 translate 0.035278 -0.035278 scale start_ol 3776 1703 moveto 3776 1408 lineto 1280 1408 lineto 1319 1024 1554 832 conicto 1790 640 2213 640 conicto 2555 640 2912 735 conicto 3270 831 3648 1024 conicto 3648 192 lineto 3273 65 2898 0 conicto 2523 -64 2148 -64 conicto 1251 -64 753 390 conicto 256 844 256 1664 conicto 256 2469 740 2930 conicto 1225 3392 2075 3392 conicto 2848 3392 3312 2932 conicto 3776 2472 3776 1703 conicto 2752 2048 moveto 2752 2336 2565 2512 conicto 2379 2688 2077 2688 conicto 1751 2688 1547 2523 conicto 1343 2358 1293 2048 conicto 2752 2048 lineto end_ol grestore gsave 14.243110 -24.411122 translate 0.035278 -0.035278 scale start_ol 3136 3136 moveto 3136 2304 lineto 2924 2467 2710 2545 conicto 2496 2624 2266 2624 conicto 1830 2624 1587 2371 conicto 1344 2118 1344 1664 conicto 1344 1210 1587 957 conicto 1830 704 2266 704 conicto 2511 704 2730 785 conicto 2950 866 3136 1024 conicto 3136 192 lineto 2891 64 2639 0 conicto 2388 -64 2134 -64 conicto 1252 -64 754 393 conicto 256 850 256 1664 conicto 256 2478 754 2935 conicto 1252 3392 2134 3392 conicto 2391 3392 2639 3328 conicto 2888 3264 3136 3136 conicto end_ol grestore gsave 14.717665 -24.411122 translate 0.035278 -0.035278 scale start_ol 2085 2624 moveto 1723 2624 1533 2377 conicto 1344 2130 1344 1664 conicto 1344 1198 1533 951 conicto 1723 704 2085 704 conicto 2440 704 2628 951 conicto 2816 1198 2816 1664 conicto 2816 2130 2628 2377 conicto 2440 2624 2085 2624 conicto 2084 3392 moveto 2941 3392 3422 2933 conicto 3904 2475 3904 1664 conicto 3904 853 3422 394 conicto 2941 -64 2084 -64 conicto 1225 -64 740 394 conicto 256 853 256 1664 conicto 256 2475 740 2933 conicto 1225 3392 2084 3392 conicto end_ol grestore gsave 15.267147 -24.411122 translate 0.035278 -0.035278 scale start_ol 3531 2745 moveto 3730 3061 4003 3226 conicto 4277 3392 4605 3392 conicto 5169 3392 5464 3033 conicto 5760 2675 5760 1991 conicto 5760 0 lineto 4736 0 lineto 4736 1705 lineto 4739 1743 4740 1784 conicto 4742 1825 4742 1901 conicto 4742 2248 4636 2404 conicto 4531 2560 4296 2560 conicto 3989 2560 3821 2314 conicto 3654 2069 3648 1605 conicto 3648 0 lineto 2624 0 lineto 2624 1705 lineto 2624 2248 2527 2404 conicto 2431 2560 2184 2560 conicto 1874 2560 1705 2313 conicto 1536 2066 1536 1608 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2816 lineto 1730 3102 1980 3247 conicto 2231 3392 2533 3392 conicto 2874 3392 3135 3222 conicto 3396 3052 3531 2745 conicto end_ol grestore gsave 16.098865 -24.411122 translate 0.035278 -0.035278 scale start_ol 3531 2745 moveto 3730 3061 4003 3226 conicto 4277 3392 4605 3392 conicto 5169 3392 5464 3033 conicto 5760 2675 5760 1991 conicto 5760 0 lineto 4736 0 lineto 4736 1705 lineto 4739 1743 4740 1784 conicto 4742 1825 4742 1901 conicto 4742 2248 4636 2404 conicto 4531 2560 4296 2560 conicto 3989 2560 3821 2314 conicto 3654 2069 3648 1605 conicto 3648 0 lineto 2624 0 lineto 2624 1705 lineto 2624 2248 2527 2404 conicto 2431 2560 2184 2560 conicto 1874 2560 1705 2313 conicto 1536 2066 1536 1608 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2816 lineto 1730 3102 1980 3247 conicto 2231 3392 2533 3392 conicto 2874 3392 3135 3222 conicto 3396 3052 3531 2745 conicto end_ol grestore gsave 16.930582 -24.411122 translate 0.035278 -0.035278 scale start_ol 3776 1703 moveto 3776 1408 lineto 1280 1408 lineto 1319 1024 1554 832 conicto 1790 640 2213 640 conicto 2555 640 2912 735 conicto 3270 831 3648 1024 conicto 3648 192 lineto 3273 65 2898 0 conicto 2523 -64 2148 -64 conicto 1251 -64 753 390 conicto 256 844 256 1664 conicto 256 2469 740 2930 conicto 1225 3392 2075 3392 conicto 2848 3392 3312 2932 conicto 3776 2472 3776 1703 conicto 2752 2048 moveto 2752 2336 2565 2512 conicto 2379 2688 2077 2688 conicto 1751 2688 1547 2523 conicto 1343 2358 1293 2048 conicto 2752 2048 lineto end_ol grestore gsave 17.472573 -24.411122 translate 0.035278 -0.035278 scale start_ol 3840 1991 moveto 3840 0 lineto 2816 0 lineto 2816 324 lineto 2816 1524 lineto 2816 1947 2795 2107 conicto 2775 2268 2725 2344 conicto 2659 2446 2546 2503 conicto 2433 2560 2289 2560 conicto 1938 2560 1737 2307 conicto 1536 2055 1536 1608 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2816 lineto 1779 3112 2052 3252 conicto 2325 3392 2655 3392 conicto 3237 3392 3538 3033 conicto 3840 2675 3840 1991 conicto end_ol grestore gsave 18.042039 -24.411122 translate 0.035278 -0.035278 scale start_ol 2752 2816 moveto 2752 4544 lineto 3776 4544 lineto 3776 0 lineto 2752 0 lineto 2752 512 lineto 2533 213 2269 74 conicto 2005 -64 1658 -64 conicto 1045 -64 650 419 conicto 256 903 256 1664 conicto 256 2425 650 2908 conicto 1045 3392 1658 3392 conicto 2002 3392 2267 3252 conicto 2533 3112 2752 2816 conicto 2047 704 moveto 2390 704 2571 950 conicto 2752 1196 2752 1664 conicto 2752 2132 2571 2378 conicto 2390 2624 2047 2624 conicto 1706 2624 1525 2378 conicto 1344 2132 1344 1664 conicto 1344 1196 1525 950 conicto 1706 704 2047 704 conicto end_ol grestore gsave 18.614002 -24.411122 translate 0.035278 -0.035278 scale start_ol 3776 1703 moveto 3776 1408 lineto 1280 1408 lineto 1319 1024 1554 832 conicto 1790 640 2213 640 conicto 2555 640 2912 735 conicto 3270 831 3648 1024 conicto 3648 192 lineto 3273 65 2898 0 conicto 2523 -64 2148 -64 conicto 1251 -64 753 390 conicto 256 844 256 1664 conicto 256 2469 740 2930 conicto 1225 3392 2075 3392 conicto 2848 3392 3312 2932 conicto 3776 2472 3776 1703 conicto 2752 2048 moveto 2752 2336 2565 2512 conicto 2379 2688 2077 2688 conicto 1751 2688 1547 2523 conicto 1343 2358 1293 2048 conicto 2752 2048 lineto end_ol grestore gsave 19.155993 -24.411122 translate 0.035278 -0.035278 scale start_ol 2944 2432 moveto 2804 2497 2666 2528 conicto 2528 2560 2389 2560 conicto 1979 2560 1757 2296 conicto 1536 2032 1536 1540 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2752 lineto 1741 3086 2007 3239 conicto 2273 3392 2644 3392 conicto 2697 3392 2759 3385 conicto 2822 3378 2941 3354 conicto 2944 2432 lineto end_ol grestore 1.000000 1.000000 1.000000 srgb n 10.296699 -23.961122 m 10.296699 -20.561122 l 22.346699 -20.561122 l 22.346699 -23.961122 l f 0.000000 0.000000 0.000000 srgb n 10.296699 -23.961122 m 10.296699 -20.561122 l 22.346699 -20.561122 l 22.346699 -23.961122 l cp s gsave 10.446699 -23.261122 translate 0.035278 -0.035278 scale start_ol 1664 2752 moveto 1664 1728 lineto 2688 1728 lineto 2688 1344 lineto 1664 1344 lineto 1664 320 lineto 1280 320 lineto 1280 1344 lineto 256 1344 lineto 256 1728 lineto 1280 1728 lineto 1280 2752 lineto 1664 2752 lineto end_ol grestore gsave 10.831337 -23.261122 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave 11.215975 -23.261122 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore gsave 11.600613 -23.261122 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 11.985251 -23.261122 translate 0.035278 -0.035278 scale start_ol 1598 2401 moveto 1679 2580 1803 2666 conicto 1928 2752 2104 2752 conicto 2424 2752 2556 2499 conicto 2688 2247 2688 1548 conicto 2688 0 lineto 2304 0 lineto 2304 1529 lineto 2304 2094 2239 2231 conicto 2175 2368 2004 2368 conicto 1808 2368 1736 2221 conicto 1664 2075 1664 1529 conicto 1664 0 lineto 1280 0 lineto 1280 1529 lineto 1280 2101 1210 2234 conicto 1140 2368 959 2368 conicto 780 2368 710 2221 conicto 640 2075 640 1529 conicto 640 0 lineto 256 0 lineto 256 2688 lineto 640 2688 lineto 640 2446 lineto 719 2595 837 2673 conicto 956 2752 1107 2752 conicto 1289 2752 1410 2665 conicto 1531 2578 1598 2401 conicto end_ol grestore gsave 12.369889 -23.261122 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave 12.754527 -23.261122 translate 0.035278 -0.035278 scale start_ol 2944 -832 moveto 2944 -1152 lineto 0 -1152 lineto 0 -832 lineto 2944 -832 lineto end_ol grestore gsave 13.139165 -23.261122 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 13.523803 -23.261122 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 13.908441 -23.261122 translate 0.035278 -0.035278 scale start_ol 896 353 moveto 896 -1024 lineto 448 -1024 lineto 448 2688 lineto 896 2688 lineto 896 2335 lineto 1012 2539 1206 2645 conicto 1400 2752 1653 2752 conicto 2167 2752 2459 2376 conicto 2752 2000 2752 1334 conicto 2752 681 2458 308 conicto 2165 -64 1653 -64 conicto 1395 -64 1201 42 conicto 1007 149 896 353 conicto 2304 1344 moveto 2304 1851 2128 2109 conicto 1952 2368 1605 2368 conicto 1256 2368 1076 2108 conicto 896 1849 896 1344 conicto 896 841 1076 580 conicto 1256 320 1605 320 conicto 1952 320 2128 578 conicto 2304 837 2304 1344 conicto end_ol grestore gsave 14.293079 -23.261122 translate 0.035278 -0.035278 scale start_ol 1471 2368 moveto 1124 2368 946 2109 conicto 768 1851 768 1344 conicto 768 839 946 579 conicto 1124 320 1471 320 conicto 1820 320 1998 579 conicto 2176 839 2176 1344 conicto 2176 1851 1998 2109 conicto 1820 2368 1471 2368 conicto 1471 2752 moveto 2031 2752 2327 2390 conicto 2624 2029 2624 1344 conicto 2624 657 2328 296 conicto 2033 -64 1471 -64 conicto 911 -64 615 296 conicto 320 657 320 1344 conicto 320 2029 615 2390 conicto 911 2752 1471 2752 conicto end_ol grestore gsave 14.677717 -23.261122 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave 15.062355 -23.261122 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave 15.446993 -23.261122 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore gsave 15.831631 -23.261122 translate 0.035278 -0.035278 scale start_ol 1471 2368 moveto 1124 2368 946 2109 conicto 768 1851 768 1344 conicto 768 839 946 579 conicto 1124 320 1471 320 conicto 1820 320 1998 579 conicto 2176 839 2176 1344 conicto 2176 1851 1998 2109 conicto 1820 2368 1471 2368 conicto 1471 2752 moveto 2031 2752 2327 2390 conicto 2624 2029 2624 1344 conicto 2624 657 2328 296 conicto 2033 -64 1471 -64 conicto 911 -64 615 296 conicto 320 657 320 1344 conicto 320 2029 615 2390 conicto 911 2752 1471 2752 conicto end_ol grestore gsave 16.216269 -23.261122 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 16.600907 -23.261122 translate 0.035278 -0.035278 scale start_ol 2051 871 moveto 1942 589 1773 128 conicto 1537 -508 1456 -648 conicto 1347 -836 1183 -930 conicto 1019 -1024 800 -1024 conicto 448 -1024 lineto 448 -640 lineto 707 -640 lineto 900 -640 1009 -527 conicto 1118 -415 1287 53 conicto 256 2688 lineto 721 2688 lineto 1511 586 lineto 2288 2688 lineto 2752 2688 lineto 2051 871 lineto end_ol grestore gsave 10.446699 -22.461122 translate 0.035278 -0.035278 scale start_ol 1664 2752 moveto 1664 1728 lineto 2688 1728 lineto 2688 1344 lineto 1664 1344 lineto 1664 320 lineto 1280 320 lineto 1280 1344 lineto 256 1344 lineto 256 1728 lineto 1280 1728 lineto 1280 2752 lineto 1664 2752 lineto end_ol grestore gsave 10.831337 -22.461122 translate 0.035278 -0.035278 scale start_ol 448 1023 moveto 448 2688 lineto 896 2688 lineto 896 1023 lineto 896 661 1022 490 conicto 1149 320 1414 320 conicto 1722 320 1885 539 conicto 2048 759 2048 1169 conicto 2048 2688 lineto 2496 2688 lineto 2496 0 lineto 2048 0 lineto 2048 409 lineto 1931 176 1729 56 conicto 1528 -64 1259 -64 conicto 849 -64 648 206 conicto 448 476 448 1023 conicto end_ol grestore gsave 11.215975 -22.461122 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave 11.600613 -22.461122 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 11.985251 -22.461122 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 12.369889 -22.461122 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave 12.754527 -22.461122 translate 0.035278 -0.035278 scale start_ol 2944 -832 moveto 2944 -1152 lineto 0 -1152 lineto 0 -832 lineto 2944 -832 lineto end_ol grestore gsave 13.139165 -22.461122 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 13.523803 -22.461122 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 13.908441 -22.461122 translate 0.035278 -0.035278 scale start_ol 896 353 moveto 896 -1024 lineto 448 -1024 lineto 448 2688 lineto 896 2688 lineto 896 2335 lineto 1012 2539 1206 2645 conicto 1400 2752 1653 2752 conicto 2167 2752 2459 2376 conicto 2752 2000 2752 1334 conicto 2752 681 2458 308 conicto 2165 -64 1653 -64 conicto 1395 -64 1201 42 conicto 1007 149 896 353 conicto 2304 1344 moveto 2304 1851 2128 2109 conicto 1952 2368 1605 2368 conicto 1256 2368 1076 2108 conicto 896 1849 896 1344 conicto 896 841 1076 580 conicto 1256 320 1605 320 conicto 1952 320 2128 578 conicto 2304 837 2304 1344 conicto end_ol grestore gsave 14.293079 -22.461122 translate 0.035278 -0.035278 scale start_ol 1471 2368 moveto 1124 2368 946 2109 conicto 768 1851 768 1344 conicto 768 839 946 579 conicto 1124 320 1471 320 conicto 1820 320 1998 579 conicto 2176 839 2176 1344 conicto 2176 1851 1998 2109 conicto 1820 2368 1471 2368 conicto 1471 2752 moveto 2031 2752 2327 2390 conicto 2624 2029 2624 1344 conicto 2624 657 2328 296 conicto 2033 -64 1471 -64 conicto 911 -64 615 296 conicto 320 657 320 1344 conicto 320 2029 615 2390 conicto 911 2752 1471 2752 conicto end_ol grestore gsave 14.677717 -22.461122 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave 15.062355 -22.461122 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave 15.446993 -22.461122 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore gsave 15.831631 -22.461122 translate 0.035278 -0.035278 scale start_ol 1471 2368 moveto 1124 2368 946 2109 conicto 768 1851 768 1344 conicto 768 839 946 579 conicto 1124 320 1471 320 conicto 1820 320 1998 579 conicto 2176 839 2176 1344 conicto 2176 1851 1998 2109 conicto 1820 2368 1471 2368 conicto 1471 2752 moveto 2031 2752 2327 2390 conicto 2624 2029 2624 1344 conicto 2624 657 2328 296 conicto 2033 -64 1471 -64 conicto 911 -64 615 296 conicto 320 657 320 1344 conicto 320 2029 615 2390 conicto 911 2752 1471 2752 conicto end_ol grestore gsave 16.216269 -22.461122 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 16.600907 -22.461122 translate 0.035278 -0.035278 scale start_ol 2051 871 moveto 1942 589 1773 128 conicto 1537 -508 1456 -648 conicto 1347 -836 1183 -930 conicto 1019 -1024 800 -1024 conicto 448 -1024 lineto 448 -640 lineto 707 -640 lineto 900 -640 1009 -527 conicto 1118 -415 1287 53 conicto 256 2688 lineto 721 2688 lineto 1511 586 lineto 2288 2688 lineto 2752 2688 lineto 2051 871 lineto end_ol grestore gsave 10.446699 -21.661122 translate 0.035278 -0.035278 scale start_ol 1664 2752 moveto 1664 1728 lineto 2688 1728 lineto 2688 1344 lineto 1664 1344 lineto 1664 320 lineto 1280 320 lineto 1280 1344 lineto 256 1344 lineto 256 1728 lineto 1280 1728 lineto 1280 2752 lineto 1664 2752 lineto end_ol grestore gsave 10.831337 -21.661122 translate 0.035278 -0.035278 scale start_ol 576 3712 moveto 1024 3712 lineto 1024 1572 lineto 2179 2688 lineto 2715 2688 lineto 1660 1675 lineto 2880 0 lineto 2342 0 lineto 1352 1387 lineto 1024 1077 lineto 1024 0 lineto 576 0 lineto 576 3712 lineto end_ol grestore gsave 11.215975 -21.661122 translate 0.035278 -0.035278 scale start_ol 2496 1665 moveto 2496 0 lineto 2048 0 lineto 2048 1665 lineto 2048 2027 1922 2197 conicto 1797 2368 1530 2368 conicto 1225 2368 1060 2148 conicto 896 1929 896 1519 conicto 896 0 lineto 448 0 lineto 448 2688 lineto 896 2688 lineto 896 2284 lineto 1013 2514 1213 2633 conicto 1413 2752 1686 2752 conicto 2094 2752 2295 2482 conicto 2496 2212 2496 1665 conicto end_ol grestore gsave 11.600613 -21.661122 translate 0.035278 -0.035278 scale start_ol 1471 2368 moveto 1124 2368 946 2109 conicto 768 1851 768 1344 conicto 768 839 946 579 conicto 1124 320 1471 320 conicto 1820 320 1998 579 conicto 2176 839 2176 1344 conicto 2176 1851 1998 2109 conicto 1820 2368 1471 2368 conicto 1471 2752 moveto 2031 2752 2327 2390 conicto 2624 2029 2624 1344 conicto 2624 657 2328 296 conicto 2033 -64 1471 -64 conicto 911 -64 615 296 conicto 320 657 320 1344 conicto 320 2029 615 2390 conicto 911 2752 1471 2752 conicto end_ol grestore gsave 11.985251 -21.661122 translate 0.035278 -0.035278 scale start_ol 0 2688 moveto 435 2688 lineto 900 521 lineto 1282 1920 lineto 1657 1920 lineto 2044 521 lineto 2509 2688 lineto 2944 2688 lineto 2318 0 lineto 1898 0 lineto 1471 1487 lineto 1046 0 lineto 626 0 lineto 0 2688 lineto end_ol grestore gsave 12.369889 -21.661122 translate 0.035278 -0.035278 scale start_ol 1536 926 moveto 1536 625 1646 472 conicto 1757 320 1973 320 conicto 2496 320 lineto 2496 0 lineto 1930 0 lineto 1528 0 1308 242 conicto 1088 484 1088 926 conicto 1088 3392 lineto 192 3392 lineto 192 3712 lineto 1536 3712 lineto 1536 926 lineto end_ol grestore gsave 12.754527 -21.661122 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 13.139165 -21.661122 translate 0.035278 -0.035278 scale start_ol 2176 2335 moveto 2176 3712 lineto 2624 3712 lineto 2624 0 lineto 2176 0 lineto 2176 353 lineto 2060 149 1866 42 conicto 1673 -64 1421 -64 conicto 908 -64 614 313 conicto 320 690 320 1354 conicto 320 2007 615 2379 conicto 911 2752 1421 2752 conicto 1676 2752 1870 2645 conicto 2065 2539 2176 2335 conicto 768 1344 moveto 768 837 945 578 conicto 1122 320 1468 320 conicto 1814 320 1995 580 conicto 2176 841 2176 1344 conicto 2176 1849 1995 2108 conicto 1814 2368 1468 2368 conicto 1122 2368 945 2109 conicto 768 1851 768 1344 conicto end_ol grestore gsave 13.523803 -21.661122 translate 0.035278 -0.035278 scale start_ol 2176 1378 moveto 2176 1864 2000 2116 conicto 1825 2368 1489 2368 conicto 1138 2368 953 2116 conicto 768 1864 768 1378 conicto 768 893 954 638 conicto 1140 384 1494 384 conicto 1825 384 2000 639 conicto 2176 895 2176 1378 conicto 2624 201 moveto 2624 -402 2326 -713 conicto 2029 -1024 1452 -1024 conicto 1262 -1024 1054 -991 conicto 847 -959 640 -896 conicto 640 -448 lineto 887 -546 1088 -593 conicto 1290 -640 1458 -640 conicto 1834 -640 2005 -455 conicto 2176 -270 2176 133 conicto 2176 153 lineto 2176 461 lineto 2065 228 1873 114 conicto 1681 0 1406 0 conicto 911 0 615 374 conicto 320 748 320 1375 conicto 320 2004 615 2378 conicto 911 2752 1406 2752 conicto 1679 2752 1868 2646 conicto 2057 2541 2176 2321 conicto 2176 2688 lineto 2624 2688 lineto 2624 201 lineto end_ol grestore gsave 13.908441 -21.661122 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 14.293079 -21.661122 translate 0.035278 -0.035278 scale start_ol 2944 -832 moveto 2944 -1152 lineto 0 -1152 lineto 0 -832 lineto 2944 -832 lineto end_ol grestore gsave 14.677717 -21.661122 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 15.062355 -21.661122 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 15.446993 -21.661122 translate 0.035278 -0.035278 scale start_ol 896 353 moveto 896 -1024 lineto 448 -1024 lineto 448 2688 lineto 896 2688 lineto 896 2335 lineto 1012 2539 1206 2645 conicto 1400 2752 1653 2752 conicto 2167 2752 2459 2376 conicto 2752 2000 2752 1334 conicto 2752 681 2458 308 conicto 2165 -64 1653 -64 conicto 1395 -64 1201 42 conicto 1007 149 896 353 conicto 2304 1344 moveto 2304 1851 2128 2109 conicto 1952 2368 1605 2368 conicto 1256 2368 1076 2108 conicto 896 1849 896 1344 conicto 896 841 1076 580 conicto 1256 320 1605 320 conicto 1952 320 2128 578 conicto 2304 837 2304 1344 conicto end_ol grestore gsave 15.831631 -21.661122 translate 0.035278 -0.035278 scale start_ol 1471 2368 moveto 1124 2368 946 2109 conicto 768 1851 768 1344 conicto 768 839 946 579 conicto 1124 320 1471 320 conicto 1820 320 1998 579 conicto 2176 839 2176 1344 conicto 2176 1851 1998 2109 conicto 1820 2368 1471 2368 conicto 1471 2752 moveto 2031 2752 2327 2390 conicto 2624 2029 2624 1344 conicto 2624 657 2328 296 conicto 2033 -64 1471 -64 conicto 911 -64 615 296 conicto 320 657 320 1344 conicto 320 2029 615 2390 conicto 911 2752 1471 2752 conicto end_ol grestore gsave 16.216269 -21.661122 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave 16.600907 -21.661122 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave 16.985545 -21.661122 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore gsave 17.370184 -21.661122 translate 0.035278 -0.035278 scale start_ol 1471 2368 moveto 1124 2368 946 2109 conicto 768 1851 768 1344 conicto 768 839 946 579 conicto 1124 320 1471 320 conicto 1820 320 1998 579 conicto 2176 839 2176 1344 conicto 2176 1851 1998 2109 conicto 1820 2368 1471 2368 conicto 1471 2752 moveto 2031 2752 2327 2390 conicto 2624 2029 2624 1344 conicto 2624 657 2328 296 conicto 2033 -64 1471 -64 conicto 911 -64 615 296 conicto 320 657 320 1344 conicto 320 2029 615 2390 conicto 911 2752 1471 2752 conicto end_ol grestore gsave 17.754822 -21.661122 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 18.139460 -21.661122 translate 0.035278 -0.035278 scale start_ol 2051 871 moveto 1942 589 1773 128 conicto 1537 -508 1456 -648 conicto 1347 -836 1183 -930 conicto 1019 -1024 800 -1024 conicto 448 -1024 lineto 448 -640 lineto 707 -640 lineto 900 -640 1009 -527 conicto 1118 -415 1287 53 conicto 256 2688 lineto 721 2688 lineto 1511 586 lineto 2288 2688 lineto 2752 2688 lineto 2051 871 lineto end_ol grestore gsave 10.446699 -20.861122 translate 0.035278 -0.035278 scale start_ol 1664 2752 moveto 1664 1728 lineto 2688 1728 lineto 2688 1344 lineto 1664 1344 lineto 1664 320 lineto 1280 320 lineto 1280 1344 lineto 256 1344 lineto 256 1728 lineto 1280 1728 lineto 1280 2752 lineto 1664 2752 lineto end_ol grestore gsave 10.831337 -20.861122 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave 11.215975 -20.861122 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore gsave 11.600613 -20.861122 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 11.985251 -20.861122 translate 0.035278 -0.035278 scale start_ol 1653 1344 moveto 1513 1344 lineto 1143 1344 955 1212 conicto 768 1080 768 818 conicto 768 582 908 451 conicto 1048 320 1297 320 conicto 1646 320 1846 566 conicto 2046 813 2048 1248 conicto 2048 1344 lineto 1653 1344 lineto 2496 1513 moveto 2496 0 lineto 2048 0 lineto 2048 416 lineto 1910 170 1701 53 conicto 1493 -64 1194 -64 conicto 796 -64 558 162 conicto 320 389 320 769 conicto 320 1209 614 1436 conicto 909 1664 1480 1664 conicto 2048 1664 lineto 2048 1737 lineto 2046 2069 1889 2218 conicto 1733 2368 1391 2368 conicto 1172 2368 948 2303 conicto 724 2238 512 2112 conicto 512 2560 lineto 752 2656 971 2704 conicto 1191 2752 1398 2752 conicto 1725 2752 1956 2652 conicto 2188 2552 2331 2352 conicto 2421 2230 2458 2051 conicto 2496 1872 2496 1513 conicto end_ol grestore gsave 12.369889 -20.861122 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore gsave 12.754527 -20.861122 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 13.139165 -20.861122 translate 0.035278 -0.035278 scale start_ol 2176 1378 moveto 2176 1864 2000 2116 conicto 1825 2368 1489 2368 conicto 1138 2368 953 2116 conicto 768 1864 768 1378 conicto 768 893 954 638 conicto 1140 384 1494 384 conicto 1825 384 2000 639 conicto 2176 895 2176 1378 conicto 2624 201 moveto 2624 -402 2326 -713 conicto 2029 -1024 1452 -1024 conicto 1262 -1024 1054 -991 conicto 847 -959 640 -896 conicto 640 -448 lineto 887 -546 1088 -593 conicto 1290 -640 1458 -640 conicto 1834 -640 2005 -455 conicto 2176 -270 2176 133 conicto 2176 153 lineto 2176 461 lineto 2065 228 1873 114 conicto 1681 0 1406 0 conicto 911 0 615 374 conicto 320 748 320 1375 conicto 320 2004 615 2378 conicto 911 2752 1406 2752 conicto 1679 2752 1868 2646 conicto 2057 2541 2176 2321 conicto 2176 2688 lineto 2624 2688 lineto 2624 201 lineto end_ol grestore gsave 13.523803 -20.861122 translate 0.035278 -0.035278 scale start_ol 2051 871 moveto 1942 589 1773 128 conicto 1537 -508 1456 -648 conicto 1347 -836 1183 -930 conicto 1019 -1024 800 -1024 conicto 448 -1024 lineto 448 -640 lineto 707 -640 lineto 900 -640 1009 -527 conicto 1118 -415 1287 53 conicto 256 2688 lineto 721 2688 lineto 1511 586 lineto 2288 2688 lineto 2752 2688 lineto 2051 871 lineto end_ol grestore 1.000000 1.000000 1.000000 srgb n 10.296699 -20.561122 m 10.296699 -19.561122 l 22.346699 -19.561122 l 22.346699 -20.561122 l f 0.000000 0.000000 0.000000 srgb n 10.296699 -20.561122 m 10.296699 -19.561122 l 22.346699 -19.561122 l 22.346699 -20.561122 l cp s gsave 10.446699 -19.861122 translate 0.035278 -0.035278 scale start_ol 1664 2752 moveto 1664 1728 lineto 2688 1728 lineto 2688 1344 lineto 1664 1344 lineto 1664 320 lineto 1280 320 lineto 1280 1344 lineto 256 1344 lineto 256 1728 lineto 1280 1728 lineto 1280 2752 lineto 1664 2752 lineto end_ol grestore gsave 10.831337 -19.861122 translate 0.035278 -0.035278 scale start_ol 2176 1378 moveto 2176 1864 2000 2116 conicto 1825 2368 1489 2368 conicto 1138 2368 953 2116 conicto 768 1864 768 1378 conicto 768 893 954 638 conicto 1140 384 1494 384 conicto 1825 384 2000 639 conicto 2176 895 2176 1378 conicto 2624 201 moveto 2624 -402 2326 -713 conicto 2029 -1024 1452 -1024 conicto 1262 -1024 1054 -991 conicto 847 -959 640 -896 conicto 640 -448 lineto 887 -546 1088 -593 conicto 1290 -640 1458 -640 conicto 1834 -640 2005 -455 conicto 2176 -270 2176 133 conicto 2176 153 lineto 2176 461 lineto 2065 228 1873 114 conicto 1681 0 1406 0 conicto 911 0 615 374 conicto 320 748 320 1375 conicto 320 2004 615 2378 conicto 911 2752 1406 2752 conicto 1679 2752 1868 2646 conicto 2057 2541 2176 2321 conicto 2176 2688 lineto 2624 2688 lineto 2624 201 lineto end_ol grestore gsave 11.215975 -19.861122 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 11.600613 -19.861122 translate 0.035278 -0.035278 scale start_ol 2496 1665 moveto 2496 0 lineto 2048 0 lineto 2048 1665 lineto 2048 2027 1922 2197 conicto 1797 2368 1530 2368 conicto 1225 2368 1060 2148 conicto 896 1929 896 1519 conicto 896 0 lineto 448 0 lineto 448 2688 lineto 896 2688 lineto 896 2284 lineto 1013 2514 1213 2633 conicto 1413 2752 1686 2752 conicto 2094 2752 2295 2482 conicto 2496 2212 2496 1665 conicto end_ol grestore gsave 11.985251 -19.861122 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 12.369889 -19.861122 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 12.754527 -19.861122 translate 0.035278 -0.035278 scale start_ol 1653 1344 moveto 1513 1344 lineto 1143 1344 955 1212 conicto 768 1080 768 818 conicto 768 582 908 451 conicto 1048 320 1297 320 conicto 1646 320 1846 566 conicto 2046 813 2048 1248 conicto 2048 1344 lineto 1653 1344 lineto 2496 1513 moveto 2496 0 lineto 2048 0 lineto 2048 416 lineto 1910 170 1701 53 conicto 1493 -64 1194 -64 conicto 796 -64 558 162 conicto 320 389 320 769 conicto 320 1209 614 1436 conicto 909 1664 1480 1664 conicto 2048 1664 lineto 2048 1737 lineto 2046 2069 1889 2218 conicto 1733 2368 1391 2368 conicto 1172 2368 948 2303 conicto 724 2238 512 2112 conicto 512 2560 lineto 752 2656 971 2704 conicto 1191 2752 1398 2752 conicto 1725 2752 1956 2652 conicto 2188 2552 2331 2352 conicto 2421 2230 2458 2051 conicto 2496 1872 2496 1513 conicto end_ol grestore gsave 13.139165 -19.861122 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore gsave 13.523803 -19.861122 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 13.908441 -19.861122 translate 0.035278 -0.035278 scale start_ol 2944 -832 moveto 2944 -1152 lineto 0 -1152 lineto 0 -832 lineto 2944 -832 lineto end_ol grestore gsave 14.293079 -19.861122 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 14.677717 -19.861122 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 15.062355 -19.861122 translate 0.035278 -0.035278 scale start_ol 2496 128 moveto 2321 32 2135 -16 conicto 1950 -64 1756 -64 conicto 1141 -64 794 309 conicto 448 683 448 1344 conicto 448 2005 794 2378 conicto 1141 2752 1756 2752 conicto 1947 2752 2129 2689 conicto 2312 2627 2496 2496 conicto 2496 2048 lineto 2322 2217 2147 2292 conicto 1972 2368 1751 2368 conicto 1339 2368 1117 2102 conicto 896 1837 896 1344 conicto 896 853 1118 586 conicto 1341 320 1751 320 conicto 1979 320 2160 382 conicto 2341 445 2496 576 conicto 2496 128 lineto end_ol grestore gsave 15.446993 -19.861122 translate 0.035278 -0.035278 scale start_ol 1471 2368 moveto 1124 2368 946 2109 conicto 768 1851 768 1344 conicto 768 839 946 579 conicto 1124 320 1471 320 conicto 1820 320 1998 579 conicto 2176 839 2176 1344 conicto 2176 1851 1998 2109 conicto 1820 2368 1471 2368 conicto 1471 2752 moveto 2031 2752 2327 2390 conicto 2624 2029 2624 1344 conicto 2624 657 2328 296 conicto 2033 -64 1471 -64 conicto 911 -64 615 296 conicto 320 657 320 1344 conicto 320 2029 615 2390 conicto 911 2752 1471 2752 conicto end_ol grestore gsave 15.831631 -19.861122 translate 0.035278 -0.035278 scale start_ol 1598 2401 moveto 1679 2580 1803 2666 conicto 1928 2752 2104 2752 conicto 2424 2752 2556 2499 conicto 2688 2247 2688 1548 conicto 2688 0 lineto 2304 0 lineto 2304 1529 lineto 2304 2094 2239 2231 conicto 2175 2368 2004 2368 conicto 1808 2368 1736 2221 conicto 1664 2075 1664 1529 conicto 1664 0 lineto 1280 0 lineto 1280 1529 lineto 1280 2101 1210 2234 conicto 1140 2368 959 2368 conicto 780 2368 710 2221 conicto 640 2075 640 1529 conicto 640 0 lineto 256 0 lineto 256 2688 lineto 640 2688 lineto 640 2446 lineto 719 2595 837 2673 conicto 956 2752 1107 2752 conicto 1289 2752 1410 2665 conicto 1531 2578 1598 2401 conicto end_ol grestore gsave 16.216269 -19.861122 translate 0.035278 -0.035278 scale start_ol 1598 2401 moveto 1679 2580 1803 2666 conicto 1928 2752 2104 2752 conicto 2424 2752 2556 2499 conicto 2688 2247 2688 1548 conicto 2688 0 lineto 2304 0 lineto 2304 1529 lineto 2304 2094 2239 2231 conicto 2175 2368 2004 2368 conicto 1808 2368 1736 2221 conicto 1664 2075 1664 1529 conicto 1664 0 lineto 1280 0 lineto 1280 1529 lineto 1280 2101 1210 2234 conicto 1140 2368 959 2368 conicto 780 2368 710 2221 conicto 640 2075 640 1529 conicto 640 0 lineto 256 0 lineto 256 2688 lineto 640 2688 lineto 640 2446 lineto 719 2595 837 2673 conicto 956 2752 1107 2752 conicto 1289 2752 1410 2665 conicto 1531 2578 1598 2401 conicto end_ol grestore gsave 16.600907 -19.861122 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 16.985545 -19.861122 translate 0.035278 -0.035278 scale start_ol 2496 1665 moveto 2496 0 lineto 2048 0 lineto 2048 1665 lineto 2048 2027 1922 2197 conicto 1797 2368 1530 2368 conicto 1225 2368 1060 2148 conicto 896 1929 896 1519 conicto 896 0 lineto 448 0 lineto 448 2688 lineto 896 2688 lineto 896 2284 lineto 1013 2514 1213 2633 conicto 1413 2752 1686 2752 conicto 2094 2752 2295 2482 conicto 2496 2212 2496 1665 conicto end_ol grestore gsave 17.370184 -19.861122 translate 0.035278 -0.035278 scale start_ol 2176 2335 moveto 2176 3712 lineto 2624 3712 lineto 2624 0 lineto 2176 0 lineto 2176 353 lineto 2060 149 1866 42 conicto 1673 -64 1421 -64 conicto 908 -64 614 313 conicto 320 690 320 1354 conicto 320 2007 615 2379 conicto 911 2752 1421 2752 conicto 1676 2752 1870 2645 conicto 2065 2539 2176 2335 conicto 768 1344 moveto 768 837 945 578 conicto 1122 320 1468 320 conicto 1814 320 1995 580 conicto 2176 841 2176 1344 conicto 2176 1849 1995 2108 conicto 1814 2368 1468 2368 conicto 1122 2368 945 2109 conicto 768 1851 768 1344 conicto end_ol grestore gsave 17.754822 -19.861122 translate 0.035278 -0.035278 scale start_ol 1653 1344 moveto 1513 1344 lineto 1143 1344 955 1212 conicto 768 1080 768 818 conicto 768 582 908 451 conicto 1048 320 1297 320 conicto 1646 320 1846 566 conicto 2046 813 2048 1248 conicto 2048 1344 lineto 1653 1344 lineto 2496 1513 moveto 2496 0 lineto 2048 0 lineto 2048 416 lineto 1910 170 1701 53 conicto 1493 -64 1194 -64 conicto 796 -64 558 162 conicto 320 389 320 769 conicto 320 1209 614 1436 conicto 909 1664 1480 1664 conicto 2048 1664 lineto 2048 1737 lineto 2046 2069 1889 2218 conicto 1733 2368 1391 2368 conicto 1172 2368 948 2303 conicto 724 2238 512 2112 conicto 512 2560 lineto 752 2656 971 2704 conicto 1191 2752 1398 2752 conicto 1725 2752 1956 2652 conicto 2188 2552 2331 2352 conicto 2421 2230 2458 2051 conicto 2496 1872 2496 1513 conicto end_ol grestore gsave 18.139460 -19.861122 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore gsave 18.524098 -19.861122 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave 18.908736 -19.861122 translate 0.035278 -0.035278 scale start_ol 1471 2368 moveto 1124 2368 946 2109 conicto 768 1851 768 1344 conicto 768 839 946 579 conicto 1124 320 1471 320 conicto 1820 320 1998 579 conicto 2176 839 2176 1344 conicto 2176 1851 1998 2109 conicto 1820 2368 1471 2368 conicto 1471 2752 moveto 2031 2752 2327 2390 conicto 2624 2029 2624 1344 conicto 2624 657 2328 296 conicto 2033 -64 1471 -64 conicto 911 -64 615 296 conicto 320 657 320 1344 conicto 320 2029 615 2390 conicto 911 2752 1471 2752 conicto end_ol grestore gsave 19.293374 -19.861122 translate 0.035278 -0.035278 scale start_ol 2496 1665 moveto 2496 0 lineto 2048 0 lineto 2048 1665 lineto 2048 2027 1922 2197 conicto 1797 2368 1530 2368 conicto 1225 2368 1060 2148 conicto 896 1929 896 1519 conicto 896 0 lineto 448 0 lineto 448 2688 lineto 896 2688 lineto 896 2284 lineto 1013 2514 1213 2633 conicto 1413 2752 1686 2752 conicto 2094 2752 2295 2482 conicto 2496 2212 2496 1665 conicto end_ol grestore gsave 19.678012 -19.861122 translate 0.035278 -0.035278 scale start_ol 2112 3712 moveto 1790 3168 1631 2627 conicto 1472 2087 1472 1538 conicto 1472 992 1631 450 conicto 1790 -91 2112 -640 conicto 1724 -640 lineto 1370 -72 1197 466 conicto 1024 1004 1024 1538 conicto 1024 2070 1197 2609 conicto 1370 3149 1724 3712 conicto 2112 3712 lineto end_ol grestore gsave 20.062650 -19.861122 translate 0.035278 -0.035278 scale start_ol 448 1023 moveto 448 2688 lineto 896 2688 lineto 896 1023 lineto 896 661 1022 490 conicto 1149 320 1414 320 conicto 1722 320 1885 539 conicto 2048 759 2048 1169 conicto 2048 2688 lineto 2496 2688 lineto 2496 0 lineto 2048 0 lineto 2048 409 lineto 1931 176 1729 56 conicto 1528 -64 1259 -64 conicto 849 -64 648 206 conicto 448 476 448 1023 conicto end_ol grestore gsave 20.447288 -19.861122 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave 20.831926 -19.861122 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 21.216564 -19.861122 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 21.601202 -19.861122 translate 0.035278 -0.035278 scale start_ol 832 3712 moveto 1220 3712 lineto 1574 3149 1747 2609 conicto 1920 2070 1920 1538 conicto 1920 1002 1747 462 conicto 1574 -77 1220 -640 conicto 832 -640 lineto 1154 -86 1313 455 conicto 1472 997 1472 1538 conicto 1472 2082 1313 2624 conicto 1154 3166 832 3712 conicto end_ol grestore 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb n 15.694365 -4.700000 m 15.694365 -3.300000 l 26.904365 -3.300000 l 26.904365 -4.700000 l f 0.000000 0.000000 0.000000 srgb n 15.694365 -4.700000 m 15.694365 -3.300000 l 26.904365 -3.300000 l 26.904365 -4.700000 l cp s gsave 15.944365 -3.750000 translate 0.035278 -0.035278 scale start_ol 2182 2496 moveto 2521 2496 2668 2624 conicto 2816 2752 2816 3044 conicto 2816 3334 2668 3459 conicto 2521 3584 2182 3584 conicto 1728 3584 lineto 1728 2496 lineto 2182 2496 lineto 1728 1664 moveto 1728 0 lineto 576 0 lineto 576 4416 lineto 2297 4416 lineto 3162 4416 3565 4125 conicto 3968 3834 3968 3205 conicto 3968 2771 3754 2491 conicto 3540 2212 3109 2080 conicto 3345 2025 3532 1832 conicto 3719 1640 3911 1249 conicto 4544 0 lineto 3310 0 lineto 2768 1093 lineto 2614 1423 2455 1543 conicto 2297 1664 2034 1664 conicto 1728 1664 lineto end_ol grestore gsave 16.558785 -3.750000 translate 0.035278 -0.035278 scale start_ol 3776 1703 moveto 3776 1408 lineto 1280 1408 lineto 1319 1024 1554 832 conicto 1790 640 2213 640 conicto 2555 640 2912 735 conicto 3270 831 3648 1024 conicto 3648 192 lineto 3273 65 2898 0 conicto 2523 -64 2148 -64 conicto 1251 -64 753 390 conicto 256 844 256 1664 conicto 256 2469 740 2930 conicto 1225 3392 2075 3392 conicto 2848 3392 3312 2932 conicto 3776 2472 3776 1703 conicto 2752 2048 moveto 2752 2336 2565 2512 conicto 2379 2688 2077 2688 conicto 1751 2688 1547 2523 conicto 1343 2358 1293 2048 conicto 2752 2048 lineto end_ol grestore gsave 17.100776 -3.750000 translate 0.035278 -0.035278 scale start_ol 3136 3136 moveto 3136 2304 lineto 2924 2467 2710 2545 conicto 2496 2624 2266 2624 conicto 1830 2624 1587 2371 conicto 1344 2118 1344 1664 conicto 1344 1210 1587 957 conicto 1830 704 2266 704 conicto 2511 704 2730 785 conicto 2950 866 3136 1024 conicto 3136 192 lineto 2891 64 2639 0 conicto 2388 -64 2134 -64 conicto 1252 -64 754 393 conicto 256 850 256 1664 conicto 256 2478 754 2935 conicto 1252 3392 2134 3392 conicto 2391 3392 2639 3328 conicto 2888 3264 3136 3136 conicto end_ol grestore gsave 17.575331 -3.750000 translate 0.035278 -0.035278 scale start_ol 2085 2624 moveto 1723 2624 1533 2377 conicto 1344 2130 1344 1664 conicto 1344 1198 1533 951 conicto 1723 704 2085 704 conicto 2440 704 2628 951 conicto 2816 1198 2816 1664 conicto 2816 2130 2628 2377 conicto 2440 2624 2085 2624 conicto 2084 3392 moveto 2941 3392 3422 2933 conicto 3904 2475 3904 1664 conicto 3904 853 3422 394 conicto 2941 -64 2084 -64 conicto 1225 -64 740 394 conicto 256 853 256 1664 conicto 256 2475 740 2933 conicto 1225 3392 2084 3392 conicto end_ol grestore gsave 18.124813 -3.750000 translate 0.035278 -0.035278 scale start_ol 3531 2745 moveto 3730 3061 4003 3226 conicto 4277 3392 4605 3392 conicto 5169 3392 5464 3033 conicto 5760 2675 5760 1991 conicto 5760 0 lineto 4736 0 lineto 4736 1705 lineto 4739 1743 4740 1784 conicto 4742 1825 4742 1901 conicto 4742 2248 4636 2404 conicto 4531 2560 4296 2560 conicto 3989 2560 3821 2314 conicto 3654 2069 3648 1605 conicto 3648 0 lineto 2624 0 lineto 2624 1705 lineto 2624 2248 2527 2404 conicto 2431 2560 2184 2560 conicto 1874 2560 1705 2313 conicto 1536 2066 1536 1608 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2816 lineto 1730 3102 1980 3247 conicto 2231 3392 2533 3392 conicto 2874 3392 3135 3222 conicto 3396 3052 3531 2745 conicto end_ol grestore gsave 18.956531 -3.750000 translate 0.035278 -0.035278 scale start_ol 3531 2745 moveto 3730 3061 4003 3226 conicto 4277 3392 4605 3392 conicto 5169 3392 5464 3033 conicto 5760 2675 5760 1991 conicto 5760 0 lineto 4736 0 lineto 4736 1705 lineto 4739 1743 4740 1784 conicto 4742 1825 4742 1901 conicto 4742 2248 4636 2404 conicto 4531 2560 4296 2560 conicto 3989 2560 3821 2314 conicto 3654 2069 3648 1605 conicto 3648 0 lineto 2624 0 lineto 2624 1705 lineto 2624 2248 2527 2404 conicto 2431 2560 2184 2560 conicto 1874 2560 1705 2313 conicto 1536 2066 1536 1608 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2816 lineto 1730 3102 1980 3247 conicto 2231 3392 2533 3392 conicto 2874 3392 3135 3222 conicto 3396 3052 3531 2745 conicto end_ol grestore gsave 19.788248 -3.750000 translate 0.035278 -0.035278 scale start_ol 3776 1703 moveto 3776 1408 lineto 1280 1408 lineto 1319 1024 1554 832 conicto 1790 640 2213 640 conicto 2555 640 2912 735 conicto 3270 831 3648 1024 conicto 3648 192 lineto 3273 65 2898 0 conicto 2523 -64 2148 -64 conicto 1251 -64 753 390 conicto 256 844 256 1664 conicto 256 2469 740 2930 conicto 1225 3392 2075 3392 conicto 2848 3392 3312 2932 conicto 3776 2472 3776 1703 conicto 2752 2048 moveto 2752 2336 2565 2512 conicto 2379 2688 2077 2688 conicto 1751 2688 1547 2523 conicto 1343 2358 1293 2048 conicto 2752 2048 lineto end_ol grestore gsave 20.330239 -3.750000 translate 0.035278 -0.035278 scale start_ol 3840 1991 moveto 3840 0 lineto 2816 0 lineto 2816 324 lineto 2816 1524 lineto 2816 1947 2795 2107 conicto 2775 2268 2725 2344 conicto 2659 2446 2546 2503 conicto 2433 2560 2289 2560 conicto 1938 2560 1737 2307 conicto 1536 2055 1536 1608 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2816 lineto 1779 3112 2052 3252 conicto 2325 3392 2655 3392 conicto 3237 3392 3538 3033 conicto 3840 2675 3840 1991 conicto end_ol grestore gsave 20.899705 -3.750000 translate 0.035278 -0.035278 scale start_ol 2752 2816 moveto 2752 4544 lineto 3776 4544 lineto 3776 0 lineto 2752 0 lineto 2752 512 lineto 2533 213 2269 74 conicto 2005 -64 1658 -64 conicto 1045 -64 650 419 conicto 256 903 256 1664 conicto 256 2425 650 2908 conicto 1045 3392 1658 3392 conicto 2002 3392 2267 3252 conicto 2533 3112 2752 2816 conicto 2047 704 moveto 2390 704 2571 950 conicto 2752 1196 2752 1664 conicto 2752 2132 2571 2378 conicto 2390 2624 2047 2624 conicto 1706 2624 1525 2378 conicto 1344 2132 1344 1664 conicto 1344 1196 1525 950 conicto 1706 704 2047 704 conicto end_ol grestore gsave 21.471668 -3.750000 translate 0.035278 -0.035278 scale start_ol 1981 1472 moveto 1632 1472 1456 1365 conicto 1280 1258 1280 1049 conicto 1280 857 1421 748 conicto 1563 640 1816 640 conicto 2130 640 2345 844 conicto 2560 1049 2560 1356 conicto 2560 1472 lineto 1981 1472 lineto 3584 1878 moveto 3584 0 lineto 2560 0 lineto 2560 512 lineto 2345 211 2076 73 conicto 1808 -64 1423 -64 conicto 904 -64 580 232 conicto 256 528 256 1001 conicto 256 1575 654 1843 conicto 1052 2112 1903 2112 conicto 2560 2112 lineto 2560 2202 lineto 2560 2454 2363 2571 conicto 2166 2688 1748 2688 conicto 1409 2688 1117 2624 conicto 826 2560 576 2432 conicto 576 3264 lineto 906 3327 1238 3359 conicto 1571 3392 1903 3392 conicto 2793 3392 3188 3036 conicto 3584 2680 3584 1878 conicto end_ol grestore gsave 22.011162 -3.750000 translate 0.035278 -0.035278 scale start_ol 1600 4224 moveto 1600 3264 lineto 2688 3264 lineto 2688 2496 lineto 1600 2496 lineto 1600 1146 lineto 1600 924 1694 846 conicto 1788 768 2067 768 conicto 2624 768 lineto 2624 0 lineto 1694 0 lineto 1085 0 830 260 conicto 576 521 576 1146 conicto 576 2496 lineto 64 2496 lineto 64 3264 lineto 576 3264 lineto 576 4224 lineto 1600 4224 lineto end_ol grestore gsave 22.393303 -3.750000 translate 0.035278 -0.035278 scale start_ol 512 3264 moveto 1536 3264 lineto 1536 0 lineto 512 0 lineto 512 3264 lineto 512 4544 moveto 1536 4544 lineto 1536 3648 lineto 512 3648 lineto 512 4544 lineto end_ol grestore gsave 22.668039 -3.750000 translate 0.035278 -0.035278 scale start_ol 2085 2624 moveto 1723 2624 1533 2377 conicto 1344 2130 1344 1664 conicto 1344 1198 1533 951 conicto 1723 704 2085 704 conicto 2440 704 2628 951 conicto 2816 1198 2816 1664 conicto 2816 2130 2628 2377 conicto 2440 2624 2085 2624 conicto 2084 3392 moveto 2941 3392 3422 2933 conicto 3904 2475 3904 1664 conicto 3904 853 3422 394 conicto 2941 -64 2084 -64 conicto 1225 -64 740 394 conicto 256 853 256 1664 conicto 256 2475 740 2933 conicto 1225 3392 2084 3392 conicto end_ol grestore gsave 23.217521 -3.750000 translate 0.035278 -0.035278 scale start_ol 3840 1991 moveto 3840 0 lineto 2816 0 lineto 2816 324 lineto 2816 1524 lineto 2816 1947 2795 2107 conicto 2775 2268 2725 2344 conicto 2659 2446 2546 2503 conicto 2433 2560 2289 2560 conicto 1938 2560 1737 2307 conicto 1536 2055 1536 1608 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2816 lineto 1779 3112 2052 3252 conicto 2325 3392 2655 3392 conicto 3237 3392 3538 3033 conicto 3840 2675 3840 1991 conicto end_ol grestore gsave 23.786987 -3.750000 translate 0.035278 -0.035278 scale start_ol 2182 2496 moveto 2521 2496 2668 2624 conicto 2816 2752 2816 3044 conicto 2816 3334 2668 3459 conicto 2521 3584 2182 3584 conicto 1728 3584 lineto 1728 2496 lineto 2182 2496 lineto 1728 1664 moveto 1728 0 lineto 576 0 lineto 576 4416 lineto 2297 4416 lineto 3162 4416 3565 4125 conicto 3968 3834 3968 3205 conicto 3968 2771 3754 2491 conicto 3540 2212 3109 2080 conicto 3345 2025 3532 1832 conicto 3719 1640 3911 1249 conicto 4544 0 lineto 3310 0 lineto 2768 1093 lineto 2614 1423 2455 1543 conicto 2297 1664 2034 1664 conicto 1728 1664 lineto end_ol grestore gsave 24.401408 -3.750000 translate 0.035278 -0.035278 scale start_ol 3776 1703 moveto 3776 1408 lineto 1280 1408 lineto 1319 1024 1554 832 conicto 1790 640 2213 640 conicto 2555 640 2912 735 conicto 3270 831 3648 1024 conicto 3648 192 lineto 3273 65 2898 0 conicto 2523 -64 2148 -64 conicto 1251 -64 753 390 conicto 256 844 256 1664 conicto 256 2469 740 2930 conicto 1225 3392 2075 3392 conicto 2848 3392 3312 2932 conicto 3776 2472 3776 1703 conicto 2752 2048 moveto 2752 2336 2565 2512 conicto 2379 2688 2077 2688 conicto 1751 2688 1547 2523 conicto 1343 2358 1293 2048 conicto 2752 2048 lineto end_ol grestore gsave 24.943398 -3.750000 translate 0.035278 -0.035278 scale start_ol 3136 3200 moveto 3136 2432 lineto 2794 2560 2476 2624 conicto 2159 2688 1877 2688 conicto 1574 2688 1427 2616 conicto 1280 2544 1280 2395 conicto 1280 2274 1393 2209 conicto 1507 2145 1800 2114 conicto 1990 2088 lineto 2781 1984 3054 1746 conicto 3328 1509 3328 1002 conicto 3328 470 2939 203 conicto 2550 -64 1778 -64 conicto 1451 -64 1101 0 conicto 752 64 384 192 conicto 384 960 lineto 706 800 1045 720 conicto 1384 640 1733 640 conicto 2049 640 2208 727 conicto 2368 814 2368 986 conicto 2368 1130 2257 1200 conicto 2147 1271 1818 1310 conicto 1628 1334 lineto 903 1421 611 1657 conicto 320 1893 320 2373 conicto 320 2891 685 3141 conicto 1050 3392 1804 3392 conicto 2101 3392 2427 3345 conicto 2753 3299 3136 3200 conicto end_ol grestore gsave 25.417953 -3.750000 translate 0.035278 -0.035278 scale start_ol 512 1320 moveto 512 3264 lineto 1536 3264 lineto 1536 2946 lineto 1536 2687 1533 2296 conicto 1530 1905 1530 1775 conicto 1530 1391 1552 1221 conicto 1574 1052 1627 976 conicto 1696 876 1807 822 conicto 1919 768 2063 768 conicto 2415 768 2615 1012 conicto 2816 1257 2816 1692 conicto 2816 3264 lineto 3840 3264 lineto 3840 0 lineto 2816 0 lineto 2816 512 lineto 2573 216 2301 76 conicto 2030 -64 1703 -64 conicto 1121 -64 816 290 conicto 512 644 512 1320 conicto end_ol grestore gsave 25.987419 -3.750000 translate 0.035278 -0.035278 scale start_ol 512 4544 moveto 1536 4544 lineto 1536 0 lineto 512 0 lineto 512 4544 lineto end_ol grestore gsave 26.262156 -3.750000 translate 0.035278 -0.035278 scale start_ol 1600 4224 moveto 1600 3264 lineto 2688 3264 lineto 2688 2496 lineto 1600 2496 lineto 1600 1146 lineto 1600 924 1694 846 conicto 1788 768 2067 768 conicto 2624 768 lineto 2624 0 lineto 1694 0 lineto 1085 0 830 260 conicto 576 521 576 1146 conicto 576 2496 lineto 64 2496 lineto 64 3264 lineto 576 3264 lineto 576 4224 lineto 1600 4224 lineto end_ol grestore 1.000000 1.000000 1.000000 srgb n 15.694365 -3.300000 m 15.694365 -1.500000 l 26.904365 -1.500000 l 26.904365 -3.300000 l f 0.000000 0.000000 0.000000 srgb n 15.694365 -3.300000 m 15.694365 -1.500000 l 26.904365 -1.500000 l 26.904365 -3.300000 l cp s gsave 15.844365 -2.600000 translate 0.035278 -0.035278 scale start_ol 1664 2752 moveto 1664 1728 lineto 2688 1728 lineto 2688 1344 lineto 1664 1344 lineto 1664 320 lineto 1280 320 lineto 1280 1344 lineto 256 1344 lineto 256 1728 lineto 1280 1728 lineto 1280 2752 lineto 1664 2752 lineto end_ol grestore gsave 16.229003 -2.600000 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave 16.613641 -2.600000 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore gsave 16.998279 -2.600000 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 17.382917 -2.600000 translate 0.035278 -0.035278 scale start_ol 1598 2401 moveto 1679 2580 1803 2666 conicto 1928 2752 2104 2752 conicto 2424 2752 2556 2499 conicto 2688 2247 2688 1548 conicto 2688 0 lineto 2304 0 lineto 2304 1529 lineto 2304 2094 2239 2231 conicto 2175 2368 2004 2368 conicto 1808 2368 1736 2221 conicto 1664 2075 1664 1529 conicto 1664 0 lineto 1280 0 lineto 1280 1529 lineto 1280 2101 1210 2234 conicto 1140 2368 959 2368 conicto 780 2368 710 2221 conicto 640 2075 640 1529 conicto 640 0 lineto 256 0 lineto 256 2688 lineto 640 2688 lineto 640 2446 lineto 719 2595 837 2673 conicto 956 2752 1107 2752 conicto 1289 2752 1410 2665 conicto 1531 2578 1598 2401 conicto end_ol grestore gsave 17.767555 -2.600000 translate 0.035278 -0.035278 scale start_ol 2944 -832 moveto 2944 -1152 lineto 0 -1152 lineto 0 -832 lineto 2944 -832 lineto end_ol grestore gsave 18.152193 -2.600000 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave 18.536831 -2.600000 translate 0.035278 -0.035278 scale start_ol 2496 128 moveto 2321 32 2135 -16 conicto 1950 -64 1756 -64 conicto 1141 -64 794 309 conicto 448 683 448 1344 conicto 448 2005 794 2378 conicto 1141 2752 1756 2752 conicto 1947 2752 2129 2689 conicto 2312 2627 2496 2496 conicto 2496 2048 lineto 2322 2217 2147 2292 conicto 1972 2368 1751 2368 conicto 1339 2368 1117 2102 conicto 896 1837 896 1344 conicto 896 853 1118 586 conicto 1341 320 1751 320 conicto 1979 320 2160 382 conicto 2341 445 2496 576 conicto 2496 128 lineto end_ol grestore gsave 18.921469 -2.600000 translate 0.035278 -0.035278 scale start_ol 1471 2368 moveto 1124 2368 946 2109 conicto 768 1851 768 1344 conicto 768 839 946 579 conicto 1124 320 1471 320 conicto 1820 320 1998 579 conicto 2176 839 2176 1344 conicto 2176 1851 1998 2109 conicto 1820 2368 1471 2368 conicto 1471 2752 moveto 2031 2752 2327 2390 conicto 2624 2029 2624 1344 conicto 2624 657 2328 296 conicto 2033 -64 1471 -64 conicto 911 -64 615 296 conicto 320 657 320 1344 conicto 320 2029 615 2390 conicto 911 2752 1471 2752 conicto end_ol grestore gsave 19.306107 -2.600000 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 19.690745 -2.600000 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 15.844365 -1.800000 translate 0.035278 -0.035278 scale start_ol 1664 2752 moveto 1664 1728 lineto 2688 1728 lineto 2688 1344 lineto 1664 1344 lineto 1664 320 lineto 1280 320 lineto 1280 1344 lineto 256 1344 lineto 256 1728 lineto 1280 1728 lineto 1280 2752 lineto 1664 2752 lineto end_ol grestore gsave 16.229003 -1.800000 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave 16.613641 -1.800000 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave 16.998279 -1.800000 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 2496 2688 lineto 2496 2279 lineto 977 320 lineto 2496 320 lineto 2496 0 lineto 512 0 lineto 512 413 lineto 2038 2368 lineto 576 2368 lineto 576 2688 lineto end_ol grestore gsave 17.382917 -1.800000 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore 1.000000 1.000000 1.000000 srgb n 15.694365 -1.500000 m 15.694365 0.300000 l 26.904365 0.300000 l 26.904365 -1.500000 l f 0.000000 0.000000 0.000000 srgb n 15.694365 -1.500000 m 15.694365 0.300000 l 26.904365 0.300000 l 26.904365 -1.500000 l cp s gsave 15.844365 -0.800000 translate 0.035278 -0.035278 scale start_ol 1664 2752 moveto 1664 1728 lineto 2688 1728 lineto 2688 1344 lineto 1664 1344 lineto 1664 320 lineto 1280 320 lineto 1280 1344 lineto 256 1344 lineto 256 1728 lineto 1280 1728 lineto 1280 2752 lineto 1664 2752 lineto end_ol grestore gsave 16.229003 -0.800000 translate 0.035278 -0.035278 scale start_ol 2176 1378 moveto 2176 1864 2000 2116 conicto 1825 2368 1489 2368 conicto 1138 2368 953 2116 conicto 768 1864 768 1378 conicto 768 893 954 638 conicto 1140 384 1494 384 conicto 1825 384 2000 639 conicto 2176 895 2176 1378 conicto 2624 201 moveto 2624 -402 2326 -713 conicto 2029 -1024 1452 -1024 conicto 1262 -1024 1054 -991 conicto 847 -959 640 -896 conicto 640 -448 lineto 887 -546 1088 -593 conicto 1290 -640 1458 -640 conicto 1834 -640 2005 -455 conicto 2176 -270 2176 133 conicto 2176 153 lineto 2176 461 lineto 2065 228 1873 114 conicto 1681 0 1406 0 conicto 911 0 615 374 conicto 320 748 320 1375 conicto 320 2004 615 2378 conicto 911 2752 1406 2752 conicto 1679 2752 1868 2646 conicto 2057 2541 2176 2321 conicto 2176 2688 lineto 2624 2688 lineto 2624 201 lineto end_ol grestore gsave 16.613641 -0.800000 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 16.998279 -0.800000 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore gsave 17.382917 -0.800000 translate 0.035278 -0.035278 scale start_ol 2944 -832 moveto 2944 -1152 lineto 0 -1152 lineto 0 -832 lineto 2944 -832 lineto end_ol grestore gsave 17.767555 -0.800000 translate 0.035278 -0.035278 scale start_ol 896 353 moveto 896 -1024 lineto 448 -1024 lineto 448 2688 lineto 896 2688 lineto 896 2335 lineto 1012 2539 1206 2645 conicto 1400 2752 1653 2752 conicto 2167 2752 2459 2376 conicto 2752 2000 2752 1334 conicto 2752 681 2458 308 conicto 2165 -64 1653 -64 conicto 1395 -64 1201 42 conicto 1007 149 896 353 conicto 2304 1344 moveto 2304 1851 2128 2109 conicto 1952 2368 1605 2368 conicto 1256 2368 1076 2108 conicto 896 1849 896 1344 conicto 896 841 1076 580 conicto 1256 320 1605 320 conicto 1952 320 2128 578 conicto 2304 837 2304 1344 conicto end_ol grestore gsave 18.152193 -0.800000 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 18.536831 -0.800000 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 18.921469 -0.800000 translate 0.035278 -0.035278 scale start_ol 2176 2335 moveto 2176 3712 lineto 2624 3712 lineto 2624 0 lineto 2176 0 lineto 2176 353 lineto 2060 149 1866 42 conicto 1673 -64 1421 -64 conicto 908 -64 614 313 conicto 320 690 320 1354 conicto 320 2007 615 2379 conicto 911 2752 1421 2752 conicto 1676 2752 1870 2645 conicto 2065 2539 2176 2335 conicto 768 1344 moveto 768 837 945 578 conicto 1122 320 1468 320 conicto 1814 320 1995 580 conicto 2176 841 2176 1344 conicto 2176 1849 1995 2108 conicto 1814 2368 1468 2368 conicto 1122 2368 945 2109 conicto 768 1851 768 1344 conicto end_ol grestore gsave 19.306107 -0.800000 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave 19.690745 -0.800000 translate 0.035278 -0.035278 scale start_ol 2496 128 moveto 2321 32 2135 -16 conicto 1950 -64 1756 -64 conicto 1141 -64 794 309 conicto 448 683 448 1344 conicto 448 2005 794 2378 conicto 1141 2752 1756 2752 conicto 1947 2752 2129 2689 conicto 2312 2627 2496 2496 conicto 2496 2048 lineto 2322 2217 2147 2292 conicto 1972 2368 1751 2368 conicto 1339 2368 1117 2102 conicto 896 1837 896 1344 conicto 896 853 1118 586 conicto 1341 320 1751 320 conicto 1979 320 2160 382 conicto 2341 445 2496 576 conicto 2496 128 lineto end_ol grestore gsave 20.075383 -0.800000 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore gsave 20.460021 -0.800000 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave 20.844659 -0.800000 translate 0.035278 -0.035278 scale start_ol 1471 2368 moveto 1124 2368 946 2109 conicto 768 1851 768 1344 conicto 768 839 946 579 conicto 1124 320 1471 320 conicto 1820 320 1998 579 conicto 2176 839 2176 1344 conicto 2176 1851 1998 2109 conicto 1820 2368 1471 2368 conicto 1471 2752 moveto 2031 2752 2327 2390 conicto 2624 2029 2624 1344 conicto 2624 657 2328 296 conicto 2033 -64 1471 -64 conicto 911 -64 615 296 conicto 320 657 320 1344 conicto 320 2029 615 2390 conicto 911 2752 1471 2752 conicto end_ol grestore gsave 21.229297 -0.800000 translate 0.035278 -0.035278 scale start_ol 2496 1665 moveto 2496 0 lineto 2048 0 lineto 2048 1665 lineto 2048 2027 1922 2197 conicto 1797 2368 1530 2368 conicto 1225 2368 1060 2148 conicto 896 1929 896 1519 conicto 896 0 lineto 448 0 lineto 448 2688 lineto 896 2688 lineto 896 2284 lineto 1013 2514 1213 2633 conicto 1413 2752 1686 2752 conicto 2094 2752 2295 2482 conicto 2496 2212 2496 1665 conicto end_ol grestore gsave 21.613935 -0.800000 translate 0.035278 -0.035278 scale start_ol 2112 3712 moveto 1790 3168 1631 2627 conicto 1472 2087 1472 1538 conicto 1472 992 1631 450 conicto 1790 -91 2112 -640 conicto 1724 -640 lineto 1370 -72 1197 466 conicto 1024 1004 1024 1538 conicto 1024 2070 1197 2609 conicto 1370 3149 1724 3712 conicto 2112 3712 lineto end_ol grestore gsave 21.998573 -0.800000 translate 0.035278 -0.035278 scale start_ol 832 3712 moveto 1220 3712 lineto 1574 3149 1747 2609 conicto 1920 2070 1920 1538 conicto 1920 1002 1747 462 conicto 1574 -77 1220 -640 conicto 832 -640 lineto 1154 -86 1313 455 conicto 1472 997 1472 1538 conicto 1472 2082 1313 2624 conicto 1154 3166 832 3712 conicto end_ol grestore gsave 15.844365 0.000000 translate 0.035278 -0.035278 scale start_ol 1664 2752 moveto 1664 1728 lineto 2688 1728 lineto 2688 1344 lineto 1664 1344 lineto 1664 320 lineto 1280 320 lineto 1280 1344 lineto 256 1344 lineto 256 1728 lineto 1280 1728 lineto 1280 2752 lineto 1664 2752 lineto end_ol grestore gsave 16.229003 0.000000 translate 0.035278 -0.035278 scale start_ol 896 353 moveto 896 -1024 lineto 448 -1024 lineto 448 2688 lineto 896 2688 lineto 896 2335 lineto 1012 2539 1206 2645 conicto 1400 2752 1653 2752 conicto 2167 2752 2459 2376 conicto 2752 2000 2752 1334 conicto 2752 681 2458 308 conicto 2165 -64 1653 -64 conicto 1395 -64 1201 42 conicto 1007 149 896 353 conicto 2304 1344 moveto 2304 1851 2128 2109 conicto 1952 2368 1605 2368 conicto 1256 2368 1076 2108 conicto 896 1849 896 1344 conicto 896 841 1076 580 conicto 1256 320 1605 320 conicto 1952 320 2128 578 conicto 2304 837 2304 1344 conicto end_ol grestore gsave 16.613641 0.000000 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 16.998279 0.000000 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave 17.382917 0.000000 translate 0.035278 -0.035278 scale start_ol 2496 1665 moveto 2496 0 lineto 2048 0 lineto 2048 1665 lineto 2048 2027 1922 2197 conicto 1797 2368 1530 2368 conicto 1225 2368 1060 2148 conicto 896 1929 896 1519 conicto 896 0 lineto 448 0 lineto 448 2688 lineto 896 2688 lineto 896 2284 lineto 1013 2514 1213 2633 conicto 1413 2752 1686 2752 conicto 2094 2752 2295 2482 conicto 2496 2212 2496 1665 conicto end_ol grestore gsave 17.767555 0.000000 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore gsave 18.152193 0.000000 translate 0.035278 -0.035278 scale start_ol 2944 -832 moveto 2944 -1152 lineto 0 -1152 lineto 0 -832 lineto 2944 -832 lineto end_ol grestore gsave 18.536831 0.000000 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 18.921469 0.000000 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 19.306107 0.000000 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave 19.690745 0.000000 translate 0.035278 -0.035278 scale start_ol 448 1023 moveto 448 2688 lineto 896 2688 lineto 896 1023 lineto 896 661 1022 490 conicto 1149 320 1414 320 conicto 1722 320 1885 539 conicto 2048 759 2048 1169 conicto 2048 2688 lineto 2496 2688 lineto 2496 0 lineto 2048 0 lineto 2048 409 lineto 1931 176 1729 56 conicto 1528 -64 1259 -64 conicto 849 -64 648 206 conicto 448 476 448 1023 conicto end_ol grestore gsave 20.075383 0.000000 translate 0.035278 -0.035278 scale start_ol 1536 926 moveto 1536 625 1646 472 conicto 1757 320 1973 320 conicto 2496 320 lineto 2496 0 lineto 1930 0 lineto 1528 0 1308 242 conicto 1088 484 1088 926 conicto 1088 3392 lineto 192 3392 lineto 192 3712 lineto 1536 3712 lineto 1536 926 lineto end_ol grestore gsave 20.460021 0.000000 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore gsave 20.844659 0.000000 translate 0.035278 -0.035278 scale start_ol 2112 3712 moveto 1790 3168 1631 2627 conicto 1472 2087 1472 1538 conicto 1472 992 1631 450 conicto 1790 -91 2112 -640 conicto 1724 -640 lineto 1370 -72 1197 466 conicto 1024 1004 1024 1538 conicto 1024 2070 1197 2609 conicto 1370 3149 1724 3712 conicto 2112 3712 lineto end_ol grestore gsave 21.229297 0.000000 translate 0.035278 -0.035278 scale start_ol 832 3712 moveto 1220 3712 lineto 1574 3149 1747 2609 conicto 1920 2070 1920 1538 conicto 1920 1002 1747 462 conicto 1574 -77 1220 -640 conicto 832 -640 lineto 1154 -86 1313 455 conicto 1472 997 1472 1538 conicto 1472 2082 1313 2624 conicto 1154 3166 832 3712 conicto end_ol grestore 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb n -5.151472 -16.500000 m -5.151472 -15.100000 l 2.388528 -15.100000 l 2.388528 -16.500000 l f 0.000000 0.000000 0.000000 srgb n -5.151472 -16.500000 m -5.151472 -15.100000 l 2.388528 -15.100000 l 2.388528 -16.500000 l cp s gsave -4.901472 -15.550000 translate 0.035278 -0.035278 scale start_ol 4032 267 moveto 3722 103 3386 19 conicto 3050 -64 2685 -64 conicto 1594 -64 957 556 conicto 320 1177 320 2239 conicto 320 3303 957 3923 conicto 1594 4544 2685 4544 conicto 3050 4544 3386 4460 conicto 3722 4377 4032 4213 conicto 4032 3328 lineto 3718 3527 3412 3619 conicto 3107 3712 2770 3712 conicto 2165 3712 1818 3320 conicto 1472 2928 1472 2239 conicto 1472 1552 1818 1160 conicto 2165 768 2770 768 conicto 3107 768 3412 860 conicto 3718 953 4032 1152 conicto 4032 267 lineto end_ol grestore gsave -4.314527 -15.550000 translate 0.035278 -0.035278 scale start_ol 2944 2432 moveto 2804 2497 2666 2528 conicto 2528 2560 2389 2560 conicto 1979 2560 1757 2296 conicto 1536 2032 1536 1540 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2752 lineto 1741 3086 2007 3239 conicto 2273 3392 2644 3392 conicto 2697 3392 2759 3385 conicto 2822 3378 2941 3354 conicto 2944 2432 lineto end_ol grestore gsave -3.919901 -15.550000 translate 0.035278 -0.035278 scale start_ol 2085 2624 moveto 1723 2624 1533 2377 conicto 1344 2130 1344 1664 conicto 1344 1198 1533 951 conicto 1723 704 2085 704 conicto 2440 704 2628 951 conicto 2816 1198 2816 1664 conicto 2816 2130 2628 2377 conicto 2440 2624 2085 2624 conicto 2084 3392 moveto 2941 3392 3422 2933 conicto 3904 2475 3904 1664 conicto 3904 853 3422 394 conicto 2941 -64 2084 -64 conicto 1225 -64 740 394 conicto 256 853 256 1664 conicto 256 2475 740 2933 conicto 1225 3392 2084 3392 conicto end_ol grestore gsave -3.370419 -15.550000 translate 0.035278 -0.035278 scale start_ol 3136 3200 moveto 3136 2432 lineto 2794 2560 2476 2624 conicto 2159 2688 1877 2688 conicto 1574 2688 1427 2616 conicto 1280 2544 1280 2395 conicto 1280 2274 1393 2209 conicto 1507 2145 1800 2114 conicto 1990 2088 lineto 2781 1984 3054 1746 conicto 3328 1509 3328 1002 conicto 3328 470 2939 203 conicto 2550 -64 1778 -64 conicto 1451 -64 1101 0 conicto 752 64 384 192 conicto 384 960 lineto 706 800 1045 720 conicto 1384 640 1733 640 conicto 2049 640 2208 727 conicto 2368 814 2368 986 conicto 2368 1130 2257 1200 conicto 2147 1271 1818 1310 conicto 1628 1334 lineto 903 1421 611 1657 conicto 320 1893 320 2373 conicto 320 2891 685 3141 conicto 1050 3392 1804 3392 conicto 2101 3392 2427 3345 conicto 2753 3299 3136 3200 conicto end_ol grestore gsave -2.895864 -15.550000 translate 0.035278 -0.035278 scale start_ol 3136 3200 moveto 3136 2432 lineto 2794 2560 2476 2624 conicto 2159 2688 1877 2688 conicto 1574 2688 1427 2616 conicto 1280 2544 1280 2395 conicto 1280 2274 1393 2209 conicto 1507 2145 1800 2114 conicto 1990 2088 lineto 2781 1984 3054 1746 conicto 3328 1509 3328 1002 conicto 3328 470 2939 203 conicto 2550 -64 1778 -64 conicto 1451 -64 1101 0 conicto 752 64 384 192 conicto 384 960 lineto 706 800 1045 720 conicto 1384 640 1733 640 conicto 2049 640 2208 727 conicto 2368 814 2368 986 conicto 2368 1130 2257 1200 conicto 2147 1271 1818 1310 conicto 1628 1334 lineto 903 1421 611 1657 conicto 320 1893 320 2373 conicto 320 2891 685 3141 conicto 1050 3392 1804 3392 conicto 2101 3392 2427 3345 conicto 2753 3299 3136 3200 conicto end_ol grestore gsave -2.421309 -15.550000 translate 0.035278 -0.035278 scale start_ol 0 4416 moveto 1139 4416 lineto 2305 1157 lineto 3469 4416 lineto 4608 4416 lineto 2980 0 lineto 1628 0 lineto 0 4416 lineto end_ol grestore gsave -1.844352 -15.550000 translate 0.035278 -0.035278 scale start_ol 1981 1472 moveto 1632 1472 1456 1365 conicto 1280 1258 1280 1049 conicto 1280 857 1421 748 conicto 1563 640 1816 640 conicto 2130 640 2345 844 conicto 2560 1049 2560 1356 conicto 2560 1472 lineto 1981 1472 lineto 3584 1878 moveto 3584 0 lineto 2560 0 lineto 2560 512 lineto 2345 211 2076 73 conicto 1808 -64 1423 -64 conicto 904 -64 580 232 conicto 256 528 256 1001 conicto 256 1575 654 1843 conicto 1052 2112 1903 2112 conicto 2560 2112 lineto 2560 2202 lineto 2560 2454 2363 2571 conicto 2166 2688 1748 2688 conicto 1409 2688 1117 2624 conicto 826 2560 576 2432 conicto 576 3264 lineto 906 3327 1238 3359 conicto 1571 3392 1903 3392 conicto 2793 3392 3188 3036 conicto 3584 2680 3584 1878 conicto end_ol grestore gsave -1.304858 -15.550000 translate 0.035278 -0.035278 scale start_ol 512 4544 moveto 1536 4544 lineto 1536 0 lineto 512 0 lineto 512 4544 lineto end_ol grestore gsave -1.030122 -15.550000 translate 0.035278 -0.035278 scale start_ol 512 3264 moveto 1536 3264 lineto 1536 0 lineto 512 0 lineto 512 3264 lineto 512 4544 moveto 1536 4544 lineto 1536 3648 lineto 512 3648 lineto 512 4544 lineto end_ol grestore gsave -0.755385 -15.550000 translate 0.035278 -0.035278 scale start_ol 2752 2816 moveto 2752 4544 lineto 3776 4544 lineto 3776 0 lineto 2752 0 lineto 2752 512 lineto 2533 213 2269 74 conicto 2005 -64 1658 -64 conicto 1045 -64 650 419 conicto 256 903 256 1664 conicto 256 2425 650 2908 conicto 1045 3392 1658 3392 conicto 2002 3392 2267 3252 conicto 2533 3112 2752 2816 conicto 2047 704 moveto 2390 704 2571 950 conicto 2752 1196 2752 1664 conicto 2752 2132 2571 2378 conicto 2390 2624 2047 2624 conicto 1706 2624 1525 2378 conicto 1344 2132 1344 1664 conicto 1344 1196 1525 950 conicto 1706 704 2047 704 conicto end_ol grestore gsave -0.183422 -15.550000 translate 0.035278 -0.035278 scale start_ol 1981 1472 moveto 1632 1472 1456 1365 conicto 1280 1258 1280 1049 conicto 1280 857 1421 748 conicto 1563 640 1816 640 conicto 2130 640 2345 844 conicto 2560 1049 2560 1356 conicto 2560 1472 lineto 1981 1472 lineto 3584 1878 moveto 3584 0 lineto 2560 0 lineto 2560 512 lineto 2345 211 2076 73 conicto 1808 -64 1423 -64 conicto 904 -64 580 232 conicto 256 528 256 1001 conicto 256 1575 654 1843 conicto 1052 2112 1903 2112 conicto 2560 2112 lineto 2560 2202 lineto 2560 2454 2363 2571 conicto 2166 2688 1748 2688 conicto 1409 2688 1117 2624 conicto 826 2560 576 2432 conicto 576 3264 lineto 906 3327 1238 3359 conicto 1571 3392 1903 3392 conicto 2793 3392 3188 3036 conicto 3584 2680 3584 1878 conicto end_ol grestore gsave 0.356072 -15.550000 translate 0.035278 -0.035278 scale start_ol 1600 4224 moveto 1600 3264 lineto 2688 3264 lineto 2688 2496 lineto 1600 2496 lineto 1600 1146 lineto 1600 924 1694 846 conicto 1788 768 2067 768 conicto 2624 768 lineto 2624 0 lineto 1694 0 lineto 1085 0 830 260 conicto 576 521 576 1146 conicto 576 2496 lineto 64 2496 lineto 64 3264 lineto 576 3264 lineto 576 4224 lineto 1600 4224 lineto end_ol grestore gsave 0.738213 -15.550000 translate 0.035278 -0.035278 scale start_ol 512 3264 moveto 1536 3264 lineto 1536 0 lineto 512 0 lineto 512 3264 lineto 512 4544 moveto 1536 4544 lineto 1536 3648 lineto 512 3648 lineto 512 4544 lineto end_ol grestore gsave 1.012950 -15.550000 translate 0.035278 -0.035278 scale start_ol 2085 2624 moveto 1723 2624 1533 2377 conicto 1344 2130 1344 1664 conicto 1344 1198 1533 951 conicto 1723 704 2085 704 conicto 2440 704 2628 951 conicto 2816 1198 2816 1664 conicto 2816 2130 2628 2377 conicto 2440 2624 2085 2624 conicto 2084 3392 moveto 2941 3392 3422 2933 conicto 3904 2475 3904 1664 conicto 3904 853 3422 394 conicto 2941 -64 2084 -64 conicto 1225 -64 740 394 conicto 256 853 256 1664 conicto 256 2475 740 2933 conicto 1225 3392 2084 3392 conicto end_ol grestore gsave 1.562431 -15.550000 translate 0.035278 -0.035278 scale start_ol 3840 1991 moveto 3840 0 lineto 2816 0 lineto 2816 324 lineto 2816 1524 lineto 2816 1947 2795 2107 conicto 2775 2268 2725 2344 conicto 2659 2446 2546 2503 conicto 2433 2560 2289 2560 conicto 1938 2560 1737 2307 conicto 1536 2055 1536 1608 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2816 lineto 1779 3112 2052 3252 conicto 2325 3392 2655 3392 conicto 3237 3392 3538 3033 conicto 3840 2675 3840 1991 conicto end_ol grestore 1.000000 1.000000 1.000000 srgb n -5.151472 -15.100000 m -5.151472 -11.700000 l 2.388528 -11.700000 l 2.388528 -15.100000 l f 0.000000 0.000000 0.000000 srgb n -5.151472 -15.100000 m -5.151472 -11.700000 l 2.388528 -11.700000 l 2.388528 -15.100000 l cp s gsave -5.001472 -14.400000 translate 0.035278 -0.035278 scale start_ol 1664 2752 moveto 1664 1728 lineto 2688 1728 lineto 2688 1344 lineto 1664 1344 lineto 1664 320 lineto 1280 320 lineto 1280 1344 lineto 256 1344 lineto 256 1728 lineto 1280 1728 lineto 1280 2752 lineto 1664 2752 lineto end_ol grestore gsave -4.616834 -14.400000 translate 0.035278 -0.035278 scale start_ol 896 353 moveto 896 -1024 lineto 448 -1024 lineto 448 2688 lineto 896 2688 lineto 896 2335 lineto 1012 2539 1206 2645 conicto 1400 2752 1653 2752 conicto 2167 2752 2459 2376 conicto 2752 2000 2752 1334 conicto 2752 681 2458 308 conicto 2165 -64 1653 -64 conicto 1395 -64 1201 42 conicto 1007 149 896 353 conicto 2304 1344 moveto 2304 1851 2128 2109 conicto 1952 2368 1605 2368 conicto 1256 2368 1076 2108 conicto 896 1849 896 1344 conicto 896 841 1076 580 conicto 1256 320 1605 320 conicto 1952 320 2128 578 conicto 2304 837 2304 1344 conicto end_ol grestore gsave -4.232196 -14.400000 translate 0.035278 -0.035278 scale start_ol 1653 1344 moveto 1513 1344 lineto 1143 1344 955 1212 conicto 768 1080 768 818 conicto 768 582 908 451 conicto 1048 320 1297 320 conicto 1646 320 1846 566 conicto 2046 813 2048 1248 conicto 2048 1344 lineto 1653 1344 lineto 2496 1513 moveto 2496 0 lineto 2048 0 lineto 2048 416 lineto 1910 170 1701 53 conicto 1493 -64 1194 -64 conicto 796 -64 558 162 conicto 320 389 320 769 conicto 320 1209 614 1436 conicto 909 1664 1480 1664 conicto 2048 1664 lineto 2048 1737 lineto 2046 2069 1889 2218 conicto 1733 2368 1391 2368 conicto 1172 2368 948 2303 conicto 724 2238 512 2112 conicto 512 2560 lineto 752 2656 971 2704 conicto 1191 2752 1398 2752 conicto 1725 2752 1956 2652 conicto 2188 2552 2331 2352 conicto 2421 2230 2458 2051 conicto 2496 1872 2496 1513 conicto end_ol grestore gsave -3.847558 -14.400000 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave -3.462920 -14.400000 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore gsave -3.078282 -14.400000 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave -2.693644 -14.400000 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore gsave -2.309006 -14.400000 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave -1.924368 -14.400000 translate 0.035278 -0.035278 scale start_ol 1471 2368 moveto 1124 2368 946 2109 conicto 768 1851 768 1344 conicto 768 839 946 579 conicto 1124 320 1471 320 conicto 1820 320 1998 579 conicto 2176 839 2176 1344 conicto 2176 1851 1998 2109 conicto 1820 2368 1471 2368 conicto 1471 2752 moveto 2031 2752 2327 2390 conicto 2624 2029 2624 1344 conicto 2624 657 2328 296 conicto 2033 -64 1471 -64 conicto 911 -64 615 296 conicto 320 657 320 1344 conicto 320 2029 615 2390 conicto 911 2752 1471 2752 conicto end_ol grestore gsave -1.539730 -14.400000 translate 0.035278 -0.035278 scale start_ol 2496 1665 moveto 2496 0 lineto 2048 0 lineto 2048 1665 lineto 2048 2027 1922 2197 conicto 1797 2368 1530 2368 conicto 1225 2368 1060 2148 conicto 896 1929 896 1519 conicto 896 0 lineto 448 0 lineto 448 2688 lineto 896 2688 lineto 896 2284 lineto 1013 2514 1213 2633 conicto 1413 2752 1686 2752 conicto 2094 2752 2295 2482 conicto 2496 2212 2496 1665 conicto end_ol grestore gsave -1.155092 -14.400000 translate 0.035278 -0.035278 scale start_ol 2944 -832 moveto 2944 -1152 lineto 0 -1152 lineto 0 -832 lineto 2944 -832 lineto end_ol grestore gsave -0.770454 -14.400000 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave -0.385816 -14.400000 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave -0.001178 -14.400000 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 2496 2688 lineto 2496 2279 lineto 977 320 lineto 2496 320 lineto 2496 0 lineto 512 0 lineto 512 413 lineto 2038 2368 lineto 576 2368 lineto 576 2688 lineto end_ol grestore gsave 0.383460 -14.400000 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave -5.001472 -13.600000 translate 0.035278 -0.035278 scale start_ol 1664 2752 moveto 1664 1728 lineto 2688 1728 lineto 2688 1344 lineto 1664 1344 lineto 1664 320 lineto 1280 320 lineto 1280 1344 lineto 256 1344 lineto 256 1728 lineto 1280 1728 lineto 1280 2752 lineto 1664 2752 lineto end_ol grestore gsave -4.616834 -13.600000 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave -4.232196 -13.600000 translate 0.035278 -0.035278 scale start_ol 1471 2368 moveto 1124 2368 946 2109 conicto 768 1851 768 1344 conicto 768 839 946 579 conicto 1124 320 1471 320 conicto 1820 320 1998 579 conicto 2176 839 2176 1344 conicto 2176 1851 1998 2109 conicto 1820 2368 1471 2368 conicto 1471 2752 moveto 2031 2752 2327 2390 conicto 2624 2029 2624 1344 conicto 2624 657 2328 296 conicto 2033 -64 1471 -64 conicto 911 -64 615 296 conicto 320 657 320 1344 conicto 320 2029 615 2390 conicto 911 2752 1471 2752 conicto end_ol grestore gsave -3.847558 -13.600000 translate 0.035278 -0.035278 scale start_ol 448 1023 moveto 448 2688 lineto 896 2688 lineto 896 1023 lineto 896 661 1022 490 conicto 1149 320 1414 320 conicto 1722 320 1885 539 conicto 2048 759 2048 1169 conicto 2048 2688 lineto 2496 2688 lineto 2496 0 lineto 2048 0 lineto 2048 409 lineto 1931 176 1729 56 conicto 1528 -64 1259 -64 conicto 849 -64 648 206 conicto 448 476 448 1023 conicto end_ol grestore gsave -3.462920 -13.600000 translate 0.035278 -0.035278 scale start_ol 2496 1665 moveto 2496 0 lineto 2048 0 lineto 2048 1665 lineto 2048 2027 1922 2197 conicto 1797 2368 1530 2368 conicto 1225 2368 1060 2148 conicto 896 1929 896 1519 conicto 896 0 lineto 448 0 lineto 448 2688 lineto 896 2688 lineto 896 2284 lineto 1013 2514 1213 2633 conicto 1413 2752 1686 2752 conicto 2094 2752 2295 2482 conicto 2496 2212 2496 1665 conicto end_ol grestore gsave -3.078282 -13.600000 translate 0.035278 -0.035278 scale start_ol 2176 2335 moveto 2176 3712 lineto 2624 3712 lineto 2624 0 lineto 2176 0 lineto 2176 353 lineto 2060 149 1866 42 conicto 1673 -64 1421 -64 conicto 908 -64 614 313 conicto 320 690 320 1354 conicto 320 2007 615 2379 conicto 911 2752 1421 2752 conicto 1676 2752 1870 2645 conicto 2065 2539 2176 2335 conicto 768 1344 moveto 768 837 945 578 conicto 1122 320 1468 320 conicto 1814 320 1995 580 conicto 2176 841 2176 1344 conicto 2176 1849 1995 2108 conicto 1814 2368 1468 2368 conicto 1122 2368 945 2109 conicto 768 1851 768 1344 conicto end_ol grestore gsave -2.693644 -13.600000 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave -5.001472 -12.800000 translate 0.035278 -0.035278 scale start_ol 1664 2752 moveto 1664 1728 lineto 2688 1728 lineto 2688 1344 lineto 1664 1344 lineto 1664 320 lineto 1280 320 lineto 1280 1344 lineto 256 1344 lineto 256 1728 lineto 1280 1728 lineto 1280 2752 lineto 1664 2752 lineto end_ol grestore gsave -4.616834 -12.800000 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave -4.232196 -12.800000 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave -3.847558 -12.800000 translate 0.035278 -0.035278 scale start_ol 2496 128 moveto 2321 32 2135 -16 conicto 1950 -64 1756 -64 conicto 1141 -64 794 309 conicto 448 683 448 1344 conicto 448 2005 794 2378 conicto 1141 2752 1756 2752 conicto 1947 2752 2129 2689 conicto 2312 2627 2496 2496 conicto 2496 2048 lineto 2322 2217 2147 2292 conicto 1972 2368 1751 2368 conicto 1339 2368 1117 2102 conicto 896 1837 896 1344 conicto 896 853 1118 586 conicto 1341 320 1751 320 conicto 1979 320 2160 382 conicto 2341 445 2496 576 conicto 2496 128 lineto end_ol grestore gsave -3.462920 -12.800000 translate 0.035278 -0.035278 scale start_ol 1471 2368 moveto 1124 2368 946 2109 conicto 768 1851 768 1344 conicto 768 839 946 579 conicto 1124 320 1471 320 conicto 1820 320 1998 579 conicto 2176 839 2176 1344 conicto 2176 1851 1998 2109 conicto 1820 2368 1471 2368 conicto 1471 2752 moveto 2031 2752 2327 2390 conicto 2624 2029 2624 1344 conicto 2624 657 2328 296 conicto 2033 -64 1471 -64 conicto 911 -64 615 296 conicto 320 657 320 1344 conicto 320 2029 615 2390 conicto 911 2752 1471 2752 conicto end_ol grestore gsave -3.078282 -12.800000 translate 0.035278 -0.035278 scale start_ol 1598 2401 moveto 1679 2580 1803 2666 conicto 1928 2752 2104 2752 conicto 2424 2752 2556 2499 conicto 2688 2247 2688 1548 conicto 2688 0 lineto 2304 0 lineto 2304 1529 lineto 2304 2094 2239 2231 conicto 2175 2368 2004 2368 conicto 1808 2368 1736 2221 conicto 1664 2075 1664 1529 conicto 1664 0 lineto 1280 0 lineto 1280 1529 lineto 1280 2101 1210 2234 conicto 1140 2368 959 2368 conicto 780 2368 710 2221 conicto 640 2075 640 1529 conicto 640 0 lineto 256 0 lineto 256 2688 lineto 640 2688 lineto 640 2446 lineto 719 2595 837 2673 conicto 956 2752 1107 2752 conicto 1289 2752 1410 2665 conicto 1531 2578 1598 2401 conicto end_ol grestore gsave -2.693644 -12.800000 translate 0.035278 -0.035278 scale start_ol 1598 2401 moveto 1679 2580 1803 2666 conicto 1928 2752 2104 2752 conicto 2424 2752 2556 2499 conicto 2688 2247 2688 1548 conicto 2688 0 lineto 2304 0 lineto 2304 1529 lineto 2304 2094 2239 2231 conicto 2175 2368 2004 2368 conicto 1808 2368 1736 2221 conicto 1664 2075 1664 1529 conicto 1664 0 lineto 1280 0 lineto 1280 1529 lineto 1280 2101 1210 2234 conicto 1140 2368 959 2368 conicto 780 2368 710 2221 conicto 640 2075 640 1529 conicto 640 0 lineto 256 0 lineto 256 2688 lineto 640 2688 lineto 640 2446 lineto 719 2595 837 2673 conicto 956 2752 1107 2752 conicto 1289 2752 1410 2665 conicto 1531 2578 1598 2401 conicto end_ol grestore gsave -2.309006 -12.800000 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave -1.924368 -12.800000 translate 0.035278 -0.035278 scale start_ol 2496 1665 moveto 2496 0 lineto 2048 0 lineto 2048 1665 lineto 2048 2027 1922 2197 conicto 1797 2368 1530 2368 conicto 1225 2368 1060 2148 conicto 896 1929 896 1519 conicto 896 0 lineto 448 0 lineto 448 2688 lineto 896 2688 lineto 896 2284 lineto 1013 2514 1213 2633 conicto 1413 2752 1686 2752 conicto 2094 2752 2295 2482 conicto 2496 2212 2496 1665 conicto end_ol grestore gsave -1.539730 -12.800000 translate 0.035278 -0.035278 scale start_ol 2176 2335 moveto 2176 3712 lineto 2624 3712 lineto 2624 0 lineto 2176 0 lineto 2176 353 lineto 2060 149 1866 42 conicto 1673 -64 1421 -64 conicto 908 -64 614 313 conicto 320 690 320 1354 conicto 320 2007 615 2379 conicto 911 2752 1421 2752 conicto 1676 2752 1870 2645 conicto 2065 2539 2176 2335 conicto 768 1344 moveto 768 837 945 578 conicto 1122 320 1468 320 conicto 1814 320 1995 580 conicto 2176 841 2176 1344 conicto 2176 1849 1995 2108 conicto 1814 2368 1468 2368 conicto 1122 2368 945 2109 conicto 768 1851 768 1344 conicto end_ol grestore gsave -1.155092 -12.800000 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave -0.770454 -12.800000 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave -5.001472 -12.000000 translate 0.035278 -0.035278 scale start_ol 1664 2752 moveto 1664 1728 lineto 2688 1728 lineto 2688 1344 lineto 1664 1344 lineto 1664 320 lineto 1280 320 lineto 1280 1344 lineto 256 1344 lineto 256 1728 lineto 1280 1728 lineto 1280 2752 lineto 1664 2752 lineto end_ol grestore gsave -4.616834 -12.000000 translate 0.035278 -0.035278 scale start_ol 1598 2401 moveto 1679 2580 1803 2666 conicto 1928 2752 2104 2752 conicto 2424 2752 2556 2499 conicto 2688 2247 2688 1548 conicto 2688 0 lineto 2304 0 lineto 2304 1529 lineto 2304 2094 2239 2231 conicto 2175 2368 2004 2368 conicto 1808 2368 1736 2221 conicto 1664 2075 1664 1529 conicto 1664 0 lineto 1280 0 lineto 1280 1529 lineto 1280 2101 1210 2234 conicto 1140 2368 959 2368 conicto 780 2368 710 2221 conicto 640 2075 640 1529 conicto 640 0 lineto 256 0 lineto 256 2688 lineto 640 2688 lineto 640 2446 lineto 719 2595 837 2673 conicto 956 2752 1107 2752 conicto 1289 2752 1410 2665 conicto 1531 2578 1598 2401 conicto end_ol grestore gsave -4.232196 -12.000000 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave -3.847558 -12.000000 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore gsave -3.462920 -12.000000 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave -3.078282 -12.000000 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave -2.693644 -12.000000 translate 0.035278 -0.035278 scale start_ol 2496 128 moveto 2321 32 2135 -16 conicto 1950 -64 1756 -64 conicto 1141 -64 794 309 conicto 448 683 448 1344 conicto 448 2005 794 2378 conicto 1141 2752 1756 2752 conicto 1947 2752 2129 2689 conicto 2312 2627 2496 2496 conicto 2496 2048 lineto 2322 2217 2147 2292 conicto 1972 2368 1751 2368 conicto 1339 2368 1117 2102 conicto 896 1837 896 1344 conicto 896 853 1118 586 conicto 1341 320 1751 320 conicto 1979 320 2160 382 conicto 2341 445 2496 576 conicto 2496 128 lineto end_ol grestore gsave -2.309006 -12.000000 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave -1.924368 -12.000000 translate 0.035278 -0.035278 scale start_ol 2944 -832 moveto 2944 -1152 lineto 0 -1152 lineto 0 -832 lineto 2944 -832 lineto end_ol grestore gsave -1.539730 -12.000000 translate 0.035278 -0.035278 scale start_ol 1536 926 moveto 1536 625 1646 472 conicto 1757 320 1973 320 conicto 2496 320 lineto 2496 0 lineto 1930 0 lineto 1528 0 1308 242 conicto 1088 484 1088 926 conicto 1088 3392 lineto 192 3392 lineto 192 3712 lineto 1536 3712 lineto 1536 926 lineto end_ol grestore gsave -1.155092 -12.000000 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave -0.770454 -12.000000 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave -0.385816 -12.000000 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore 1.000000 1.000000 1.000000 srgb n -5.151472 -11.700000 m -5.151472 -10.700000 l 2.388528 -10.700000 l 2.388528 -11.700000 l f 0.000000 0.000000 0.000000 srgb n -5.151472 -11.700000 m -5.151472 -10.700000 l 2.388528 -10.700000 l 2.388528 -11.700000 l cp s gsave -5.001472 -11.000000 translate 0.035278 -0.035278 scale start_ol 1664 2752 moveto 1664 1728 lineto 2688 1728 lineto 2688 1344 lineto 1664 1344 lineto 1664 320 lineto 1280 320 lineto 1280 1344 lineto 256 1344 lineto 256 1728 lineto 1280 1728 lineto 1280 2752 lineto 1664 2752 lineto end_ol grestore gsave -4.616834 -11.000000 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave -4.232196 -11.000000 translate 0.035278 -0.035278 scale start_ol 448 1023 moveto 448 2688 lineto 896 2688 lineto 896 1023 lineto 896 661 1022 490 conicto 1149 320 1414 320 conicto 1722 320 1885 539 conicto 2048 759 2048 1169 conicto 2048 2688 lineto 2496 2688 lineto 2496 0 lineto 2048 0 lineto 2048 409 lineto 1931 176 1729 56 conicto 1528 -64 1259 -64 conicto 849 -64 648 206 conicto 448 476 448 1023 conicto end_ol grestore gsave -3.847558 -11.000000 translate 0.035278 -0.035278 scale start_ol 2496 1665 moveto 2496 0 lineto 2048 0 lineto 2048 1665 lineto 2048 2027 1922 2197 conicto 1797 2368 1530 2368 conicto 1225 2368 1060 2148 conicto 896 1929 896 1519 conicto 896 0 lineto 448 0 lineto 448 2688 lineto 896 2688 lineto 896 2284 lineto 1013 2514 1213 2633 conicto 1413 2752 1686 2752 conicto 2094 2752 2295 2482 conicto 2496 2212 2496 1665 conicto end_ol grestore gsave -3.462920 -11.000000 translate 0.035278 -0.035278 scale start_ol 2112 3712 moveto 1790 3168 1631 2627 conicto 1472 2087 1472 1538 conicto 1472 992 1631 450 conicto 1790 -91 2112 -640 conicto 1724 -640 lineto 1370 -72 1197 466 conicto 1024 1004 1024 1538 conicto 1024 2070 1197 2609 conicto 1370 3149 1724 3712 conicto 2112 3712 lineto end_ol grestore gsave -3.078282 -11.000000 translate 0.035278 -0.035278 scale start_ol 448 1023 moveto 448 2688 lineto 896 2688 lineto 896 1023 lineto 896 661 1022 490 conicto 1149 320 1414 320 conicto 1722 320 1885 539 conicto 2048 759 2048 1169 conicto 2048 2688 lineto 2496 2688 lineto 2496 0 lineto 2048 0 lineto 2048 409 lineto 1931 176 1729 56 conicto 1528 -64 1259 -64 conicto 849 -64 648 206 conicto 448 476 448 1023 conicto end_ol grestore gsave -2.693644 -11.000000 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave -2.309006 -11.000000 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave -1.924368 -11.000000 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave -1.539730 -11.000000 translate 0.035278 -0.035278 scale start_ol 832 3712 moveto 1220 3712 lineto 1574 3149 1747 2609 conicto 1920 2070 1920 1538 conicto 1920 1002 1747 462 conicto 1574 -77 1220 -640 conicto 832 -640 lineto 1154 -86 1313 455 conicto 1472 997 1472 1538 conicto 1472 2082 1313 2624 conicto 1154 3166 832 3712 conicto end_ol grestore 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb n 22.522716 -10.712132 m 22.522716 -9.312132 l 28.027716 -9.312132 l 28.027716 -10.712132 l f 0.000000 0.000000 0.000000 srgb n 22.522716 -10.712132 m 22.522716 -9.312132 l 28.027716 -9.312132 l 28.027716 -10.712132 l cp s gsave 24.243966 -9.762132 translate 0.035278 -0.035278 scale start_ol 576 4416 moveto 1728 4416 lineto 1728 1781 lineto 1728 1236 1900 1002 conicto 2073 768 2463 768 conicto 2855 768 3027 1002 conicto 3200 1236 3200 1781 conicto 3200 4416 lineto 4352 4416 lineto 4352 1781 lineto 4352 848 3885 392 conicto 3419 -64 2463 -64 conicto 1509 -64 1042 392 conicto 576 848 576 1781 conicto 576 4416 lineto end_ol grestore gsave 24.893353 -9.762132 translate 0.035278 -0.035278 scale start_ol 3136 3200 moveto 3136 2432 lineto 2794 2560 2476 2624 conicto 2159 2688 1877 2688 conicto 1574 2688 1427 2616 conicto 1280 2544 1280 2395 conicto 1280 2274 1393 2209 conicto 1507 2145 1800 2114 conicto 1990 2088 lineto 2781 1984 3054 1746 conicto 3328 1509 3328 1002 conicto 3328 470 2939 203 conicto 2550 -64 1778 -64 conicto 1451 -64 1101 0 conicto 752 64 384 192 conicto 384 960 lineto 706 800 1045 720 conicto 1384 640 1733 640 conicto 2049 640 2208 727 conicto 2368 814 2368 986 conicto 2368 1130 2257 1200 conicto 2147 1271 1818 1310 conicto 1628 1334 lineto 903 1421 611 1657 conicto 320 1893 320 2373 conicto 320 2891 685 3141 conicto 1050 3392 1804 3392 conicto 2101 3392 2427 3345 conicto 2753 3299 3136 3200 conicto end_ol grestore gsave 25.367908 -9.762132 translate 0.035278 -0.035278 scale start_ol 3776 1703 moveto 3776 1408 lineto 1280 1408 lineto 1319 1024 1554 832 conicto 1790 640 2213 640 conicto 2555 640 2912 735 conicto 3270 831 3648 1024 conicto 3648 192 lineto 3273 65 2898 0 conicto 2523 -64 2148 -64 conicto 1251 -64 753 390 conicto 256 844 256 1664 conicto 256 2469 740 2930 conicto 1225 3392 2075 3392 conicto 2848 3392 3312 2932 conicto 3776 2472 3776 1703 conicto 2752 2048 moveto 2752 2336 2565 2512 conicto 2379 2688 2077 2688 conicto 1751 2688 1547 2523 conicto 1343 2358 1293 2048 conicto 2752 2048 lineto end_ol grestore gsave 25.909899 -9.762132 translate 0.035278 -0.035278 scale start_ol 2944 2432 moveto 2804 2497 2666 2528 conicto 2528 2560 2389 2560 conicto 1979 2560 1757 2296 conicto 1536 2032 1536 1540 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2752 lineto 1741 3086 2007 3239 conicto 2273 3392 2644 3392 conicto 2697 3392 2759 3385 conicto 2822 3378 2941 3354 conicto 2944 2432 lineto end_ol grestore 1.000000 1.000000 1.000000 srgb n 22.522716 -9.312132 m 22.522716 -6.712132 l 28.027716 -6.712132 l 28.027716 -9.312132 l f 0.000000 0.000000 0.000000 srgb n 22.522716 -9.312132 m 22.522716 -6.712132 l 28.027716 -6.712132 l 28.027716 -9.312132 l cp s gsave 22.672716 -8.612132 translate 0.035278 -0.035278 scale start_ol 1664 2752 moveto 1664 1728 lineto 2688 1728 lineto 2688 1344 lineto 1664 1344 lineto 1664 320 lineto 1280 320 lineto 1280 1344 lineto 256 1344 lineto 256 1728 lineto 1280 1728 lineto 1280 2752 lineto 1664 2752 lineto end_ol grestore gsave 23.057354 -8.612132 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave 23.441992 -8.612132 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore gsave 23.826631 -8.612132 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 24.211269 -8.612132 translate 0.035278 -0.035278 scale start_ol 1598 2401 moveto 1679 2580 1803 2666 conicto 1928 2752 2104 2752 conicto 2424 2752 2556 2499 conicto 2688 2247 2688 1548 conicto 2688 0 lineto 2304 0 lineto 2304 1529 lineto 2304 2094 2239 2231 conicto 2175 2368 2004 2368 conicto 1808 2368 1736 2221 conicto 1664 2075 1664 1529 conicto 1664 0 lineto 1280 0 lineto 1280 1529 lineto 1280 2101 1210 2234 conicto 1140 2368 959 2368 conicto 780 2368 710 2221 conicto 640 2075 640 1529 conicto 640 0 lineto 256 0 lineto 256 2688 lineto 640 2688 lineto 640 2446 lineto 719 2595 837 2673 conicto 956 2752 1107 2752 conicto 1289 2752 1410 2665 conicto 1531 2578 1598 2401 conicto end_ol grestore gsave 24.595907 -8.612132 translate 0.035278 -0.035278 scale start_ol 2944 -832 moveto 2944 -1152 lineto 0 -1152 lineto 0 -832 lineto 2944 -832 lineto end_ol grestore gsave 24.980545 -8.612132 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave 25.365183 -8.612132 translate 0.035278 -0.035278 scale start_ol 2496 128 moveto 2321 32 2135 -16 conicto 1950 -64 1756 -64 conicto 1141 -64 794 309 conicto 448 683 448 1344 conicto 448 2005 794 2378 conicto 1141 2752 1756 2752 conicto 1947 2752 2129 2689 conicto 2312 2627 2496 2496 conicto 2496 2048 lineto 2322 2217 2147 2292 conicto 1972 2368 1751 2368 conicto 1339 2368 1117 2102 conicto 896 1837 896 1344 conicto 896 853 1118 586 conicto 1341 320 1751 320 conicto 1979 320 2160 382 conicto 2341 445 2496 576 conicto 2496 128 lineto end_ol grestore gsave 25.749821 -8.612132 translate 0.035278 -0.035278 scale start_ol 1471 2368 moveto 1124 2368 946 2109 conicto 768 1851 768 1344 conicto 768 839 946 579 conicto 1124 320 1471 320 conicto 1820 320 1998 579 conicto 2176 839 2176 1344 conicto 2176 1851 1998 2109 conicto 1820 2368 1471 2368 conicto 1471 2752 moveto 2031 2752 2327 2390 conicto 2624 2029 2624 1344 conicto 2624 657 2328 296 conicto 2033 -64 1471 -64 conicto 911 -64 615 296 conicto 320 657 320 1344 conicto 320 2029 615 2390 conicto 911 2752 1471 2752 conicto end_ol grestore gsave 26.134459 -8.612132 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 26.519097 -8.612132 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 22.672716 -7.812132 translate 0.035278 -0.035278 scale start_ol 1664 2752 moveto 1664 1728 lineto 2688 1728 lineto 2688 1344 lineto 1664 1344 lineto 1664 320 lineto 1280 320 lineto 1280 1344 lineto 256 1344 lineto 256 1728 lineto 1280 1728 lineto 1280 2752 lineto 1664 2752 lineto end_ol grestore gsave 23.057354 -7.812132 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave 23.441992 -7.812132 translate 0.035278 -0.035278 scale start_ol 2176 2335 moveto 2176 3712 lineto 2624 3712 lineto 2624 0 lineto 2176 0 lineto 2176 353 lineto 2060 149 1866 42 conicto 1673 -64 1421 -64 conicto 908 -64 614 313 conicto 320 690 320 1354 conicto 320 2007 615 2379 conicto 911 2752 1421 2752 conicto 1676 2752 1870 2645 conicto 2065 2539 2176 2335 conicto 768 1344 moveto 768 837 945 578 conicto 1122 320 1468 320 conicto 1814 320 1995 580 conicto 2176 841 2176 1344 conicto 2176 1849 1995 2108 conicto 1814 2368 1468 2368 conicto 1122 2368 945 2109 conicto 768 1851 768 1344 conicto end_ol grestore gsave 22.672716 -7.012132 translate 0.035278 -0.035278 scale start_ol 1664 2752 moveto 1664 1728 lineto 2688 1728 lineto 2688 1344 lineto 1664 1344 lineto 1664 320 lineto 1280 320 lineto 1280 1344 lineto 256 1344 lineto 256 1728 lineto 1280 1728 lineto 1280 2752 lineto 1664 2752 lineto end_ol grestore gsave 23.057354 -7.012132 translate 0.035278 -0.035278 scale start_ol 2176 2335 moveto 2176 3712 lineto 2624 3712 lineto 2624 0 lineto 2176 0 lineto 2176 353 lineto 2060 149 1866 42 conicto 1673 -64 1421 -64 conicto 908 -64 614 313 conicto 320 690 320 1354 conicto 320 2007 615 2379 conicto 911 2752 1421 2752 conicto 1676 2752 1870 2645 conicto 2065 2539 2176 2335 conicto 768 1344 moveto 768 837 945 578 conicto 1122 320 1468 320 conicto 1814 320 1995 580 conicto 2176 841 2176 1344 conicto 2176 1849 1995 2108 conicto 1814 2368 1468 2368 conicto 1122 2368 945 2109 conicto 768 1851 768 1344 conicto end_ol grestore gsave 23.441992 -7.012132 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 23.826631 -7.012132 translate 0.035278 -0.035278 scale start_ol 1598 2401 moveto 1679 2580 1803 2666 conicto 1928 2752 2104 2752 conicto 2424 2752 2556 2499 conicto 2688 2247 2688 1548 conicto 2688 0 lineto 2304 0 lineto 2304 1529 lineto 2304 2094 2239 2231 conicto 2175 2368 2004 2368 conicto 1808 2368 1736 2221 conicto 1664 2075 1664 1529 conicto 1664 0 lineto 1280 0 lineto 1280 1529 lineto 1280 2101 1210 2234 conicto 1140 2368 959 2368 conicto 780 2368 710 2221 conicto 640 2075 640 1529 conicto 640 0 lineto 256 0 lineto 256 2688 lineto 640 2688 lineto 640 2446 lineto 719 2595 837 2673 conicto 956 2752 1107 2752 conicto 1289 2752 1410 2665 conicto 1531 2578 1598 2401 conicto end_ol grestore gsave 24.211269 -7.012132 translate 0.035278 -0.035278 scale start_ol 1471 2368 moveto 1124 2368 946 2109 conicto 768 1851 768 1344 conicto 768 839 946 579 conicto 1124 320 1471 320 conicto 1820 320 1998 579 conicto 2176 839 2176 1344 conicto 2176 1851 1998 2109 conicto 1820 2368 1471 2368 conicto 1471 2752 moveto 2031 2752 2327 2390 conicto 2624 2029 2624 1344 conicto 2624 657 2328 296 conicto 2033 -64 1471 -64 conicto 911 -64 615 296 conicto 320 657 320 1344 conicto 320 2029 615 2390 conicto 911 2752 1471 2752 conicto end_ol grestore gsave 24.595907 -7.012132 translate 0.035278 -0.035278 scale start_ol 2944 -832 moveto 2944 -1152 lineto 0 -1152 lineto 0 -832 lineto 2944 -832 lineto end_ol grestore gsave 24.980545 -7.012132 translate 0.035278 -0.035278 scale start_ol 896 353 moveto 896 -1024 lineto 448 -1024 lineto 448 2688 lineto 896 2688 lineto 896 2335 lineto 1012 2539 1206 2645 conicto 1400 2752 1653 2752 conicto 2167 2752 2459 2376 conicto 2752 2000 2752 1334 conicto 2752 681 2458 308 conicto 2165 -64 1653 -64 conicto 1395 -64 1201 42 conicto 1007 149 896 353 conicto 2304 1344 moveto 2304 1851 2128 2109 conicto 1952 2368 1605 2368 conicto 1256 2368 1076 2108 conicto 896 1849 896 1344 conicto 896 841 1076 580 conicto 1256 320 1605 320 conicto 1952 320 2128 578 conicto 2304 837 2304 1344 conicto end_ol grestore gsave 25.365183 -7.012132 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 25.749821 -7.012132 translate 0.035278 -0.035278 scale start_ol 1471 2368 moveto 1124 2368 946 2109 conicto 768 1851 768 1344 conicto 768 839 946 579 conicto 1124 320 1471 320 conicto 1820 320 1998 579 conicto 2176 839 2176 1344 conicto 2176 1851 1998 2109 conicto 1820 2368 1471 2368 conicto 1471 2752 moveto 2031 2752 2327 2390 conicto 2624 2029 2624 1344 conicto 2624 657 2328 296 conicto 2033 -64 1471 -64 conicto 911 -64 615 296 conicto 320 657 320 1344 conicto 320 2029 615 2390 conicto 911 2752 1471 2752 conicto end_ol grestore gsave 26.134459 -7.012132 translate 0.035278 -0.035278 scale start_ol 2496 3712 moveto 2496 3328 lineto 2010 3328 lineto 1779 3328 1689 3236 conicto 1600 3145 1600 2912 conicto 1600 2688 lineto 2496 2688 lineto 2496 2368 lineto 1600 2368 lineto 1600 0 lineto 1152 0 lineto 1152 2368 lineto 448 2368 lineto 448 2688 lineto 1152 2688 lineto 1152 2864 lineto 1152 3300 1353 3506 conicto 1555 3712 1982 3712 conicto 2496 3712 lineto end_ol grestore gsave 26.519097 -7.012132 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave 26.903735 -7.012132 translate 0.035278 -0.035278 scale start_ol 1536 926 moveto 1536 625 1646 472 conicto 1757 320 1973 320 conicto 2496 320 lineto 2496 0 lineto 1930 0 lineto 1528 0 1308 242 conicto 1088 484 1088 926 conicto 1088 3392 lineto 192 3392 lineto 192 3712 lineto 1536 3712 lineto 1536 926 lineto end_ol grestore gsave 27.288373 -7.012132 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore 1.000000 1.000000 1.000000 srgb n 22.522716 -6.712132 m 22.522716 -6.312132 l 28.027716 -6.312132 l 28.027716 -6.712132 l f 0.000000 0.000000 0.000000 srgb n 22.522716 -6.712132 m 22.522716 -6.312132 l 28.027716 -6.312132 l 28.027716 -6.712132 l cp s 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb n 2.470000 -4.350000 m 2.470000 -2.950000 l 9.515000 -2.950000 l 9.515000 -4.350000 l f 0.000000 0.000000 0.000000 srgb n 2.470000 -4.350000 m 2.470000 -2.950000 l 9.515000 -2.950000 l 9.515000 -4.350000 l cp s gsave 3.606250 -3.400000 translate 0.035278 -0.035278 scale start_ol 576 4416 moveto 3648 4416 lineto 3648 3584 lineto 1728 3584 lineto 1728 2752 lineto 3520 2752 lineto 3520 1920 lineto 1728 1920 lineto 1728 832 lineto 3712 832 lineto 3712 0 lineto 576 0 lineto 576 4416 lineto end_ol grestore gsave 4.153235 -3.400000 translate 0.035278 -0.035278 scale start_ol 64 3264 moveto 1107 3264 lineto 1920 1008 lineto 2730 3264 lineto 3776 3264 lineto 2491 0 lineto 1346 0 lineto 64 3264 lineto end_ol grestore gsave 4.675241 -3.400000 translate 0.035278 -0.035278 scale start_ol 1981 1472 moveto 1632 1472 1456 1365 conicto 1280 1258 1280 1049 conicto 1280 857 1421 748 conicto 1563 640 1816 640 conicto 2130 640 2345 844 conicto 2560 1049 2560 1356 conicto 2560 1472 lineto 1981 1472 lineto 3584 1878 moveto 3584 0 lineto 2560 0 lineto 2560 512 lineto 2345 211 2076 73 conicto 1808 -64 1423 -64 conicto 904 -64 580 232 conicto 256 528 256 1001 conicto 256 1575 654 1843 conicto 1052 2112 1903 2112 conicto 2560 2112 lineto 2560 2202 lineto 2560 2454 2363 2571 conicto 2166 2688 1748 2688 conicto 1409 2688 1117 2624 conicto 826 2560 576 2432 conicto 576 3264 lineto 906 3327 1238 3359 conicto 1571 3392 1903 3392 conicto 2793 3392 3188 3036 conicto 3584 2680 3584 1878 conicto end_ol grestore gsave 5.214735 -3.400000 translate 0.035278 -0.035278 scale start_ol 512 4544 moveto 1536 4544 lineto 1536 0 lineto 512 0 lineto 512 4544 lineto end_ol grestore gsave 5.489471 -3.400000 translate 0.035278 -0.035278 scale start_ol 512 1320 moveto 512 3264 lineto 1536 3264 lineto 1536 2946 lineto 1536 2687 1533 2296 conicto 1530 1905 1530 1775 conicto 1530 1391 1552 1221 conicto 1574 1052 1627 976 conicto 1696 876 1807 822 conicto 1919 768 2063 768 conicto 2415 768 2615 1012 conicto 2816 1257 2816 1692 conicto 2816 3264 lineto 3840 3264 lineto 3840 0 lineto 2816 0 lineto 2816 512 lineto 2573 216 2301 76 conicto 2030 -64 1703 -64 conicto 1121 -64 816 290 conicto 512 644 512 1320 conicto end_ol grestore gsave 6.058937 -3.400000 translate 0.035278 -0.035278 scale start_ol 1981 1472 moveto 1632 1472 1456 1365 conicto 1280 1258 1280 1049 conicto 1280 857 1421 748 conicto 1563 640 1816 640 conicto 2130 640 2345 844 conicto 2560 1049 2560 1356 conicto 2560 1472 lineto 1981 1472 lineto 3584 1878 moveto 3584 0 lineto 2560 0 lineto 2560 512 lineto 2345 211 2076 73 conicto 1808 -64 1423 -64 conicto 904 -64 580 232 conicto 256 528 256 1001 conicto 256 1575 654 1843 conicto 1052 2112 1903 2112 conicto 2560 2112 lineto 2560 2202 lineto 2560 2454 2363 2571 conicto 2166 2688 1748 2688 conicto 1409 2688 1117 2624 conicto 826 2560 576 2432 conicto 576 3264 lineto 906 3327 1238 3359 conicto 1571 3392 1903 3392 conicto 2793 3392 3188 3036 conicto 3584 2680 3584 1878 conicto end_ol grestore gsave 6.598431 -3.400000 translate 0.035278 -0.035278 scale start_ol 1600 4224 moveto 1600 3264 lineto 2688 3264 lineto 2688 2496 lineto 1600 2496 lineto 1600 1146 lineto 1600 924 1694 846 conicto 1788 768 2067 768 conicto 2624 768 lineto 2624 0 lineto 1694 0 lineto 1085 0 830 260 conicto 576 521 576 1146 conicto 576 2496 lineto 64 2496 lineto 64 3264 lineto 576 3264 lineto 576 4224 lineto 1600 4224 lineto end_ol grestore gsave 6.980572 -3.400000 translate 0.035278 -0.035278 scale start_ol 512 3264 moveto 1536 3264 lineto 1536 0 lineto 512 0 lineto 512 3264 lineto 512 4544 moveto 1536 4544 lineto 1536 3648 lineto 512 3648 lineto 512 4544 lineto end_ol grestore gsave 7.255309 -3.400000 translate 0.035278 -0.035278 scale start_ol 2085 2624 moveto 1723 2624 1533 2377 conicto 1344 2130 1344 1664 conicto 1344 1198 1533 951 conicto 1723 704 2085 704 conicto 2440 704 2628 951 conicto 2816 1198 2816 1664 conicto 2816 2130 2628 2377 conicto 2440 2624 2085 2624 conicto 2084 3392 moveto 2941 3392 3422 2933 conicto 3904 2475 3904 1664 conicto 3904 853 3422 394 conicto 2941 -64 2084 -64 conicto 1225 -64 740 394 conicto 256 853 256 1664 conicto 256 2475 740 2933 conicto 1225 3392 2084 3392 conicto end_ol grestore gsave 7.804791 -3.400000 translate 0.035278 -0.035278 scale start_ol 3840 1991 moveto 3840 0 lineto 2816 0 lineto 2816 324 lineto 2816 1524 lineto 2816 1947 2795 2107 conicto 2775 2268 2725 2344 conicto 2659 2446 2546 2503 conicto 2433 2560 2289 2560 conicto 1938 2560 1737 2307 conicto 1536 2055 1536 1608 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2816 lineto 1779 3112 2052 3252 conicto 2325 3392 2655 3392 conicto 3237 3392 3538 3033 conicto 3840 2675 3840 1991 conicto end_ol grestore 1.000000 1.000000 1.000000 srgb n 2.470000 -2.950000 m 2.470000 -1.150000 l 9.515000 -1.150000 l 9.515000 -2.950000 l f 0.000000 0.000000 0.000000 srgb n 2.470000 -2.950000 m 2.470000 -1.150000 l 9.515000 -1.150000 l 9.515000 -2.950000 l cp s gsave 2.620000 -2.250000 translate 0.035278 -0.035278 scale start_ol 1664 2752 moveto 1664 1728 lineto 2688 1728 lineto 2688 1344 lineto 1664 1344 lineto 1664 320 lineto 1280 320 lineto 1280 1344 lineto 256 1344 lineto 256 1728 lineto 1280 1728 lineto 1280 2752 lineto 1664 2752 lineto end_ol grestore gsave 3.004638 -2.250000 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 3.389276 -2.250000 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 3.773914 -2.250000 translate 0.035278 -0.035278 scale start_ol 1653 1344 moveto 1513 1344 lineto 1143 1344 955 1212 conicto 768 1080 768 818 conicto 768 582 908 451 conicto 1048 320 1297 320 conicto 1646 320 1846 566 conicto 2046 813 2048 1248 conicto 2048 1344 lineto 1653 1344 lineto 2496 1513 moveto 2496 0 lineto 2048 0 lineto 2048 416 lineto 1910 170 1701 53 conicto 1493 -64 1194 -64 conicto 796 -64 558 162 conicto 320 389 320 769 conicto 320 1209 614 1436 conicto 909 1664 1480 1664 conicto 2048 1664 lineto 2048 1737 lineto 2046 2069 1889 2218 conicto 1733 2368 1391 2368 conicto 1172 2368 948 2303 conicto 724 2238 512 2112 conicto 512 2560 lineto 752 2656 971 2704 conicto 1191 2752 1398 2752 conicto 1725 2752 1956 2652 conicto 2188 2552 2331 2352 conicto 2421 2230 2458 2051 conicto 2496 1872 2496 1513 conicto end_ol grestore gsave 4.158552 -2.250000 translate 0.035278 -0.035278 scale start_ol 1536 926 moveto 1536 625 1646 472 conicto 1757 320 1973 320 conicto 2496 320 lineto 2496 0 lineto 1930 0 lineto 1528 0 1308 242 conicto 1088 484 1088 926 conicto 1088 3392 lineto 192 3392 lineto 192 3712 lineto 1536 3712 lineto 1536 926 lineto end_ol grestore gsave 4.543190 -2.250000 translate 0.035278 -0.035278 scale start_ol 2944 -832 moveto 2944 -1152 lineto 0 -1152 lineto 0 -832 lineto 2944 -832 lineto end_ol grestore gsave 4.927828 -2.250000 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 5.312466 -2.250000 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 5.697104 -2.250000 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave 6.081742 -2.250000 translate 0.035278 -0.035278 scale start_ol 448 1023 moveto 448 2688 lineto 896 2688 lineto 896 1023 lineto 896 661 1022 490 conicto 1149 320 1414 320 conicto 1722 320 1885 539 conicto 2048 759 2048 1169 conicto 2048 2688 lineto 2496 2688 lineto 2496 0 lineto 2048 0 lineto 2048 409 lineto 1931 176 1729 56 conicto 1528 -64 1259 -64 conicto 849 -64 648 206 conicto 448 476 448 1023 conicto end_ol grestore gsave 6.466380 -2.250000 translate 0.035278 -0.035278 scale start_ol 1536 926 moveto 1536 625 1646 472 conicto 1757 320 1973 320 conicto 2496 320 lineto 2496 0 lineto 1930 0 lineto 1528 0 1308 242 conicto 1088 484 1088 926 conicto 1088 3392 lineto 192 3392 lineto 192 3712 lineto 1536 3712 lineto 1536 926 lineto end_ol grestore gsave 6.851018 -2.250000 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore gsave 2.620000 -1.450000 translate 0.035278 -0.035278 scale start_ol 1664 2752 moveto 1664 1728 lineto 2688 1728 lineto 2688 1344 lineto 1664 1344 lineto 1664 320 lineto 1280 320 lineto 1280 1344 lineto 256 1344 lineto 256 1728 lineto 1280 1728 lineto 1280 2752 lineto 1664 2752 lineto end_ol grestore gsave 3.004638 -1.450000 translate 0.035278 -0.035278 scale start_ol 896 353 moveto 896 -1024 lineto 448 -1024 lineto 448 2688 lineto 896 2688 lineto 896 2335 lineto 1012 2539 1206 2645 conicto 1400 2752 1653 2752 conicto 2167 2752 2459 2376 conicto 2752 2000 2752 1334 conicto 2752 681 2458 308 conicto 2165 -64 1653 -64 conicto 1395 -64 1201 42 conicto 1007 149 896 353 conicto 2304 1344 moveto 2304 1851 2128 2109 conicto 1952 2368 1605 2368 conicto 1256 2368 1076 2108 conicto 896 1849 896 1344 conicto 896 841 1076 580 conicto 1256 320 1605 320 conicto 1952 320 2128 578 conicto 2304 837 2304 1344 conicto end_ol grestore gsave 3.389276 -1.450000 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 3.773914 -1.450000 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 4.158552 -1.450000 translate 0.035278 -0.035278 scale start_ol 2176 2335 moveto 2176 3712 lineto 2624 3712 lineto 2624 0 lineto 2176 0 lineto 2176 353 lineto 2060 149 1866 42 conicto 1673 -64 1421 -64 conicto 908 -64 614 313 conicto 320 690 320 1354 conicto 320 2007 615 2379 conicto 911 2752 1421 2752 conicto 1676 2752 1870 2645 conicto 2065 2539 2176 2335 conicto 768 1344 moveto 768 837 945 578 conicto 1122 320 1468 320 conicto 1814 320 1995 580 conicto 2176 841 2176 1344 conicto 2176 1849 1995 2108 conicto 1814 2368 1468 2368 conicto 1122 2368 945 2109 conicto 768 1851 768 1344 conicto end_ol grestore gsave 4.543190 -1.450000 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave 4.927828 -1.450000 translate 0.035278 -0.035278 scale start_ol 2496 128 moveto 2321 32 2135 -16 conicto 1950 -64 1756 -64 conicto 1141 -64 794 309 conicto 448 683 448 1344 conicto 448 2005 794 2378 conicto 1141 2752 1756 2752 conicto 1947 2752 2129 2689 conicto 2312 2627 2496 2496 conicto 2496 2048 lineto 2322 2217 2147 2292 conicto 1972 2368 1751 2368 conicto 1339 2368 1117 2102 conicto 896 1837 896 1344 conicto 896 853 1118 586 conicto 1341 320 1751 320 conicto 1979 320 2160 382 conicto 2341 445 2496 576 conicto 2496 128 lineto end_ol grestore gsave 5.312466 -1.450000 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore gsave 5.697104 -1.450000 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 6.081742 -1.450000 translate 0.035278 -0.035278 scale start_ol 2176 2335 moveto 2176 3712 lineto 2624 3712 lineto 2624 0 lineto 2176 0 lineto 2176 353 lineto 2060 149 1866 42 conicto 1673 -64 1421 -64 conicto 908 -64 614 313 conicto 320 690 320 1354 conicto 320 2007 615 2379 conicto 911 2752 1421 2752 conicto 1676 2752 1870 2645 conicto 2065 2539 2176 2335 conicto 768 1344 moveto 768 837 945 578 conicto 1122 320 1468 320 conicto 1814 320 1995 580 conicto 2176 841 2176 1344 conicto 2176 1849 1995 2108 conicto 1814 2368 1468 2368 conicto 1122 2368 945 2109 conicto 768 1851 768 1344 conicto end_ol grestore gsave 6.466380 -1.450000 translate 0.035278 -0.035278 scale start_ol 2944 -832 moveto 2944 -1152 lineto 0 -1152 lineto 0 -832 lineto 2944 -832 lineto end_ol grestore gsave 6.851018 -1.450000 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 7.235656 -1.450000 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 7.620294 -1.450000 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave 8.004932 -1.450000 translate 0.035278 -0.035278 scale start_ol 448 1023 moveto 448 2688 lineto 896 2688 lineto 896 1023 lineto 896 661 1022 490 conicto 1149 320 1414 320 conicto 1722 320 1885 539 conicto 2048 759 2048 1169 conicto 2048 2688 lineto 2496 2688 lineto 2496 0 lineto 2048 0 lineto 2048 409 lineto 1931 176 1729 56 conicto 1528 -64 1259 -64 conicto 849 -64 648 206 conicto 448 476 448 1023 conicto end_ol grestore gsave 8.389570 -1.450000 translate 0.035278 -0.035278 scale start_ol 1536 926 moveto 1536 625 1646 472 conicto 1757 320 1973 320 conicto 2496 320 lineto 2496 0 lineto 1930 0 lineto 1528 0 1308 242 conicto 1088 484 1088 926 conicto 1088 3392 lineto 192 3392 lineto 192 3712 lineto 1536 3712 lineto 1536 926 lineto end_ol grestore gsave 8.774208 -1.450000 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore 1.000000 1.000000 1.000000 srgb n 2.470000 -1.150000 m 2.470000 -0.150000 l 9.515000 -0.150000 l 9.515000 -1.150000 l f 0.000000 0.000000 0.000000 srgb n 2.470000 -1.150000 m 2.470000 -0.150000 l 9.515000 -0.150000 l 9.515000 -1.150000 l cp s gsave 2.620000 -0.450000 translate 0.035278 -0.035278 scale start_ol 1664 2752 moveto 1664 1728 lineto 2688 1728 lineto 2688 1344 lineto 1664 1344 lineto 1664 320 lineto 1280 320 lineto 1280 1344 lineto 256 1344 lineto 256 1728 lineto 1280 1728 lineto 1280 2752 lineto 1664 2752 lineto end_ol grestore gsave 3.004638 -0.450000 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 3.389276 -0.450000 translate 0.035278 -0.035278 scale start_ol 448 1023 moveto 448 2688 lineto 896 2688 lineto 896 1023 lineto 896 661 1022 490 conicto 1149 320 1414 320 conicto 1722 320 1885 539 conicto 2048 759 2048 1169 conicto 2048 2688 lineto 2496 2688 lineto 2496 0 lineto 2048 0 lineto 2048 409 lineto 1931 176 1729 56 conicto 1528 -64 1259 -64 conicto 849 -64 648 206 conicto 448 476 448 1023 conicto end_ol grestore gsave 3.773914 -0.450000 translate 0.035278 -0.035278 scale start_ol 2496 1665 moveto 2496 0 lineto 2048 0 lineto 2048 1665 lineto 2048 2027 1922 2197 conicto 1797 2368 1530 2368 conicto 1225 2368 1060 2148 conicto 896 1929 896 1519 conicto 896 0 lineto 448 0 lineto 448 2688 lineto 896 2688 lineto 896 2284 lineto 1013 2514 1213 2633 conicto 1413 2752 1686 2752 conicto 2094 2752 2295 2482 conicto 2496 2212 2496 1665 conicto end_ol grestore gsave 4.158552 -0.450000 translate 0.035278 -0.035278 scale start_ol 2112 3712 moveto 1790 3168 1631 2627 conicto 1472 2087 1472 1538 conicto 1472 992 1631 450 conicto 1790 -91 2112 -640 conicto 1724 -640 lineto 1370 -72 1197 466 conicto 1024 1004 1024 1538 conicto 1024 2070 1197 2609 conicto 1370 3149 1724 3712 conicto 2112 3712 lineto end_ol grestore gsave 4.543190 -0.450000 translate 0.035278 -0.035278 scale start_ol 1598 2401 moveto 1679 2580 1803 2666 conicto 1928 2752 2104 2752 conicto 2424 2752 2556 2499 conicto 2688 2247 2688 1548 conicto 2688 0 lineto 2304 0 lineto 2304 1529 lineto 2304 2094 2239 2231 conicto 2175 2368 2004 2368 conicto 1808 2368 1736 2221 conicto 1664 2075 1664 1529 conicto 1664 0 lineto 1280 0 lineto 1280 1529 lineto 1280 2101 1210 2234 conicto 1140 2368 959 2368 conicto 780 2368 710 2221 conicto 640 2075 640 1529 conicto 640 0 lineto 256 0 lineto 256 2688 lineto 640 2688 lineto 640 2446 lineto 719 2595 837 2673 conicto 956 2752 1107 2752 conicto 1289 2752 1410 2665 conicto 1531 2578 1598 2401 conicto end_ol grestore gsave 4.927828 -0.450000 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 5.312466 -0.450000 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore gsave 5.697104 -0.450000 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 6.081742 -0.450000 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave 6.466380 -0.450000 translate 0.035278 -0.035278 scale start_ol 2496 128 moveto 2321 32 2135 -16 conicto 1950 -64 1756 -64 conicto 1141 -64 794 309 conicto 448 683 448 1344 conicto 448 2005 794 2378 conicto 1141 2752 1756 2752 conicto 1947 2752 2129 2689 conicto 2312 2627 2496 2496 conicto 2496 2048 lineto 2322 2217 2147 2292 conicto 1972 2368 1751 2368 conicto 1339 2368 1117 2102 conicto 896 1837 896 1344 conicto 896 853 1118 586 conicto 1341 320 1751 320 conicto 1979 320 2160 382 conicto 2341 445 2496 576 conicto 2496 128 lineto end_ol grestore gsave 6.851018 -0.450000 translate 0.035278 -0.035278 scale start_ol 832 3712 moveto 1220 3712 lineto 1574 3149 1747 2609 conicto 1920 2070 1920 1538 conicto 1920 1002 1747 462 conicto 1574 -77 1220 -640 conicto 832 -640 lineto 1154 -86 1313 455 conicto 1472 997 1472 1538 conicto 1472 2082 1313 2624 conicto 1154 3166 832 3712 conicto end_ol grestore 0.100000 slw [] 0 sd 0 slj 0 slc n 10.824015 -2.250000 m 12.604728 -2.250000 l 12.604728 -2.200000 l 15.644020 -2.200000 l s [] 0 sd 0 slj 0 slc 1.000000 1.000000 1.000000 srgb n 9.565436 -2.250000 m 10.265436 -2.490000 l 10.965436 -2.250000 l 10.265436 -2.010000 l ef 0.100000 slw [] 0 sd 0 slj 0 slc 0.000000 0.000000 0.000000 srgb n 9.565436 -2.250000 m 10.265436 -2.490000 l 10.965436 -2.250000 l 10.265436 -2.010000 l cp s 0.100000 slw [] 0 sd 0 slj 0 slc n 10.780000 4.799548 m 10.780000 2.349905 l 5.992500 2.349905 l 5.992500 -0.099738 l s n 8.486250 2.349905 m 8.486250 1.949905 l 8.886250 2.149905 l ef 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb n 29.165504 8.008579 m 29.165504 9.408579 l 35.825504 9.408579 l 35.825504 8.008579 l f 0.000000 0.000000 0.000000 srgb n 29.165504 8.008579 m 29.165504 9.408579 l 35.825504 9.408579 l 35.825504 8.008579 l cp s gsave 30.611754 8.958579 translate 0.035278 -0.035278 scale start_ol 576 4416 moveto 2455 4416 lineto 3279 4416 3719 4042 conicto 4160 3669 4160 2977 conicto 4160 2283 3719 1909 conicto 3279 1536 2455 1536 conicto 1728 1536 lineto 1728 0 lineto 576 0 lineto 576 4416 lineto 1728 3584 moveto 1728 2368 lineto 2338 2368 lineto 2659 2368 2833 2527 conicto 3008 2686 3008 2977 conicto 3008 3269 2833 3426 conicto 2659 3584 2338 3584 conicto 1728 3584 lineto end_ol grestore gsave 31.176226 8.958579 translate 0.035278 -0.035278 scale start_ol 1981 1472 moveto 1632 1472 1456 1365 conicto 1280 1258 1280 1049 conicto 1280 857 1421 748 conicto 1563 640 1816 640 conicto 2130 640 2345 844 conicto 2560 1049 2560 1356 conicto 2560 1472 lineto 1981 1472 lineto 3584 1878 moveto 3584 0 lineto 2560 0 lineto 2560 512 lineto 2345 211 2076 73 conicto 1808 -64 1423 -64 conicto 904 -64 580 232 conicto 256 528 256 1001 conicto 256 1575 654 1843 conicto 1052 2112 1903 2112 conicto 2560 2112 lineto 2560 2202 lineto 2560 2454 2363 2571 conicto 2166 2688 1748 2688 conicto 1409 2688 1117 2624 conicto 826 2560 576 2432 conicto 576 3264 lineto 906 3327 1238 3359 conicto 1571 3392 1903 3392 conicto 2793 3392 3188 3036 conicto 3584 2680 3584 1878 conicto end_ol grestore gsave 31.715720 8.958579 translate 0.035278 -0.035278 scale start_ol 3136 3136 moveto 3136 2304 lineto 2924 2467 2710 2545 conicto 2496 2624 2266 2624 conicto 1830 2624 1587 2371 conicto 1344 2118 1344 1664 conicto 1344 1210 1587 957 conicto 1830 704 2266 704 conicto 2511 704 2730 785 conicto 2950 866 3136 1024 conicto 3136 192 lineto 2891 64 2639 0 conicto 2388 -64 2134 -64 conicto 1252 -64 754 393 conicto 256 850 256 1664 conicto 256 2478 754 2935 conicto 1252 3392 2134 3392 conicto 2391 3392 2639 3328 conicto 2888 3264 3136 3136 conicto end_ol grestore gsave 32.190275 8.958579 translate 0.035278 -0.035278 scale start_ol 512 4544 moveto 1536 4544 lineto 1536 2066 lineto 2746 3264 lineto 3968 3264 lineto 2361 1766 lineto 4096 0 lineto 2820 0 lineto 1536 1361 lineto 1536 0 lineto 512 0 lineto 512 4544 lineto end_ol grestore gsave 32.722277 8.958579 translate 0.035278 -0.035278 scale start_ol 1981 1472 moveto 1632 1472 1456 1365 conicto 1280 1258 1280 1049 conicto 1280 857 1421 748 conicto 1563 640 1816 640 conicto 2130 640 2345 844 conicto 2560 1049 2560 1356 conicto 2560 1472 lineto 1981 1472 lineto 3584 1878 moveto 3584 0 lineto 2560 0 lineto 2560 512 lineto 2345 211 2076 73 conicto 1808 -64 1423 -64 conicto 904 -64 580 232 conicto 256 528 256 1001 conicto 256 1575 654 1843 conicto 1052 2112 1903 2112 conicto 2560 2112 lineto 2560 2202 lineto 2560 2454 2363 2571 conicto 2166 2688 1748 2688 conicto 1409 2688 1117 2624 conicto 826 2560 576 2432 conicto 576 3264 lineto 906 3327 1238 3359 conicto 1571 3392 1903 3392 conicto 2793 3392 3188 3036 conicto 3584 2680 3584 1878 conicto end_ol grestore gsave 33.261771 8.958579 translate 0.035278 -0.035278 scale start_ol 2752 576 moveto 2533 279 2269 139 conicto 2005 0 1658 0 conicto 1050 0 653 478 conicto 256 957 256 1697 conicto 256 2441 653 2916 conicto 1050 3392 1658 3392 conicto 2005 3392 2269 3253 conicto 2533 3115 2752 2816 conicto 2752 3264 lineto 3776 3264 lineto 3776 343 lineto 3776 -447 3274 -863 conicto 2772 -1280 1818 -1280 conicto 1509 -1280 1220 -1232 conicto 932 -1185 640 -1088 conicto 640 -256 lineto 922 -417 1191 -496 conicto 1461 -576 1733 -576 conicto 2261 -576 2506 -353 conicto 2752 -131 2752 343 conicto 2752 576 lineto 2047 2624 moveto 1715 2624 1529 2381 conicto 1344 2139 1344 1695 conicto 1344 1239 1523 1003 conicto 1703 768 2047 768 conicto 2381 768 2566 1010 conicto 2752 1253 2752 1695 conicto 2752 2139 2566 2381 conicto 2381 2624 2047 2624 conicto end_ol grestore gsave 33.833734 8.958579 translate 0.035278 -0.035278 scale start_ol 3776 1703 moveto 3776 1408 lineto 1280 1408 lineto 1319 1024 1554 832 conicto 1790 640 2213 640 conicto 2555 640 2912 735 conicto 3270 831 3648 1024 conicto 3648 192 lineto 3273 65 2898 0 conicto 2523 -64 2148 -64 conicto 1251 -64 753 390 conicto 256 844 256 1664 conicto 256 2469 740 2930 conicto 1225 3392 2075 3392 conicto 2848 3392 3312 2932 conicto 3776 2472 3776 1703 conicto 2752 2048 moveto 2752 2336 2565 2512 conicto 2379 2688 2077 2688 conicto 1751 2688 1547 2523 conicto 1343 2358 1293 2048 conicto 2752 2048 lineto end_ol grestore 1.000000 1.000000 1.000000 srgb n 29.165504 9.408579 m 29.165504 12.808579 l 35.825504 12.808579 l 35.825504 9.408579 l f 0.000000 0.000000 0.000000 srgb n 29.165504 9.408579 m 29.165504 12.808579 l 35.825504 12.808579 l 35.825504 9.408579 l cp s gsave 29.315504 10.108579 translate 0.035278 -0.035278 scale start_ol 1664 2752 moveto 1664 1728 lineto 2688 1728 lineto 2688 1344 lineto 1664 1344 lineto 1664 320 lineto 1280 320 lineto 1280 1344 lineto 256 1344 lineto 256 1728 lineto 1280 1728 lineto 1280 2752 lineto 1664 2752 lineto end_ol grestore gsave 29.700142 10.108579 translate 0.035278 -0.035278 scale start_ol 2496 1665 moveto 2496 0 lineto 2048 0 lineto 2048 1665 lineto 2048 2027 1922 2197 conicto 1797 2368 1530 2368 conicto 1225 2368 1060 2148 conicto 896 1929 896 1519 conicto 896 0 lineto 448 0 lineto 448 2688 lineto 896 2688 lineto 896 2284 lineto 1013 2514 1213 2633 conicto 1413 2752 1686 2752 conicto 2094 2752 2295 2482 conicto 2496 2212 2496 1665 conicto end_ol grestore gsave 30.084780 10.108579 translate 0.035278 -0.035278 scale start_ol 1653 1344 moveto 1513 1344 lineto 1143 1344 955 1212 conicto 768 1080 768 818 conicto 768 582 908 451 conicto 1048 320 1297 320 conicto 1646 320 1846 566 conicto 2046 813 2048 1248 conicto 2048 1344 lineto 1653 1344 lineto 2496 1513 moveto 2496 0 lineto 2048 0 lineto 2048 416 lineto 1910 170 1701 53 conicto 1493 -64 1194 -64 conicto 796 -64 558 162 conicto 320 389 320 769 conicto 320 1209 614 1436 conicto 909 1664 1480 1664 conicto 2048 1664 lineto 2048 1737 lineto 2046 2069 1889 2218 conicto 1733 2368 1391 2368 conicto 1172 2368 948 2303 conicto 724 2238 512 2112 conicto 512 2560 lineto 752 2656 971 2704 conicto 1191 2752 1398 2752 conicto 1725 2752 1956 2652 conicto 2188 2552 2331 2352 conicto 2421 2230 2458 2051 conicto 2496 1872 2496 1513 conicto end_ol grestore gsave 30.469418 10.108579 translate 0.035278 -0.035278 scale start_ol 1598 2401 moveto 1679 2580 1803 2666 conicto 1928 2752 2104 2752 conicto 2424 2752 2556 2499 conicto 2688 2247 2688 1548 conicto 2688 0 lineto 2304 0 lineto 2304 1529 lineto 2304 2094 2239 2231 conicto 2175 2368 2004 2368 conicto 1808 2368 1736 2221 conicto 1664 2075 1664 1529 conicto 1664 0 lineto 1280 0 lineto 1280 1529 lineto 1280 2101 1210 2234 conicto 1140 2368 959 2368 conicto 780 2368 710 2221 conicto 640 2075 640 1529 conicto 640 0 lineto 256 0 lineto 256 2688 lineto 640 2688 lineto 640 2446 lineto 719 2595 837 2673 conicto 956 2752 1107 2752 conicto 1289 2752 1410 2665 conicto 1531 2578 1598 2401 conicto end_ol grestore gsave 30.854056 10.108579 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 29.315504 10.908579 translate 0.035278 -0.035278 scale start_ol 1664 2752 moveto 1664 1728 lineto 2688 1728 lineto 2688 1344 lineto 1664 1344 lineto 1664 320 lineto 1280 320 lineto 1280 1344 lineto 256 1344 lineto 256 1728 lineto 1280 1728 lineto 1280 2752 lineto 1664 2752 lineto end_ol grestore gsave 29.700142 10.908579 translate 0.035278 -0.035278 scale start_ol 2176 2335 moveto 2176 3712 lineto 2624 3712 lineto 2624 0 lineto 2176 0 lineto 2176 353 lineto 2060 149 1866 42 conicto 1673 -64 1421 -64 conicto 908 -64 614 313 conicto 320 690 320 1354 conicto 320 2007 615 2379 conicto 911 2752 1421 2752 conicto 1676 2752 1870 2645 conicto 2065 2539 2176 2335 conicto 768 1344 moveto 768 837 945 578 conicto 1122 320 1468 320 conicto 1814 320 1995 580 conicto 2176 841 2176 1344 conicto 2176 1849 1995 2108 conicto 1814 2368 1468 2368 conicto 1122 2368 945 2109 conicto 768 1851 768 1344 conicto end_ol grestore gsave 30.084780 10.908579 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 30.469418 10.908579 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave 30.854056 10.908579 translate 0.035278 -0.035278 scale start_ol 2496 128 moveto 2321 32 2135 -16 conicto 1950 -64 1756 -64 conicto 1141 -64 794 309 conicto 448 683 448 1344 conicto 448 2005 794 2378 conicto 1141 2752 1756 2752 conicto 1947 2752 2129 2689 conicto 2312 2627 2496 2496 conicto 2496 2048 lineto 2322 2217 2147 2292 conicto 1972 2368 1751 2368 conicto 1339 2368 1117 2102 conicto 896 1837 896 1344 conicto 896 853 1118 586 conicto 1341 320 1751 320 conicto 1979 320 2160 382 conicto 2341 445 2496 576 conicto 2496 128 lineto end_ol grestore gsave 29.315504 11.708579 translate 0.035278 -0.035278 scale start_ol 1664 2752 moveto 1664 1728 lineto 2688 1728 lineto 2688 1344 lineto 1664 1344 lineto 1664 320 lineto 1280 320 lineto 1280 1344 lineto 256 1344 lineto 256 1728 lineto 1280 1728 lineto 1280 2752 lineto 1664 2752 lineto end_ol grestore gsave 29.700142 11.708579 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore gsave 30.084780 11.708579 translate 0.035278 -0.035278 scale start_ol 1653 1344 moveto 1513 1344 lineto 1143 1344 955 1212 conicto 768 1080 768 818 conicto 768 582 908 451 conicto 1048 320 1297 320 conicto 1646 320 1846 566 conicto 2046 813 2048 1248 conicto 2048 1344 lineto 1653 1344 lineto 2496 1513 moveto 2496 0 lineto 2048 0 lineto 2048 416 lineto 1910 170 1701 53 conicto 1493 -64 1194 -64 conicto 796 -64 558 162 conicto 320 389 320 769 conicto 320 1209 614 1436 conicto 909 1664 1480 1664 conicto 2048 1664 lineto 2048 1737 lineto 2046 2069 1889 2218 conicto 1733 2368 1391 2368 conicto 1172 2368 948 2303 conicto 724 2238 512 2112 conicto 512 2560 lineto 752 2656 971 2704 conicto 1191 2752 1398 2752 conicto 1725 2752 1956 2652 conicto 2188 2552 2331 2352 conicto 2421 2230 2458 2051 conicto 2496 1872 2496 1513 conicto end_ol grestore gsave 30.469418 11.708579 translate 0.035278 -0.035278 scale start_ol 2176 1378 moveto 2176 1864 2000 2116 conicto 1825 2368 1489 2368 conicto 1138 2368 953 2116 conicto 768 1864 768 1378 conicto 768 893 954 638 conicto 1140 384 1494 384 conicto 1825 384 2000 639 conicto 2176 895 2176 1378 conicto 2624 201 moveto 2624 -402 2326 -713 conicto 2029 -1024 1452 -1024 conicto 1262 -1024 1054 -991 conicto 847 -959 640 -896 conicto 640 -448 lineto 887 -546 1088 -593 conicto 1290 -640 1458 -640 conicto 1834 -640 2005 -455 conicto 2176 -270 2176 133 conicto 2176 153 lineto 2176 461 lineto 2065 228 1873 114 conicto 1681 0 1406 0 conicto 911 0 615 374 conicto 320 748 320 1375 conicto 320 2004 615 2378 conicto 911 2752 1406 2752 conicto 1679 2752 1868 2646 conicto 2057 2541 2176 2321 conicto 2176 2688 lineto 2624 2688 lineto 2624 201 lineto end_ol grestore gsave 30.854056 11.708579 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave 29.315504 12.508579 translate 0.035278 -0.035278 scale start_ol 1664 2752 moveto 1664 1728 lineto 2688 1728 lineto 2688 1344 lineto 1664 1344 lineto 1664 320 lineto 1280 320 lineto 1280 1344 lineto 256 1344 lineto 256 1728 lineto 1280 1728 lineto 1280 2752 lineto 1664 2752 lineto end_ol grestore gsave 29.700142 12.508579 translate 0.035278 -0.035278 scale start_ol 1598 2401 moveto 1679 2580 1803 2666 conicto 1928 2752 2104 2752 conicto 2424 2752 2556 2499 conicto 2688 2247 2688 1548 conicto 2688 0 lineto 2304 0 lineto 2304 1529 lineto 2304 2094 2239 2231 conicto 2175 2368 2004 2368 conicto 1808 2368 1736 2221 conicto 1664 2075 1664 1529 conicto 1664 0 lineto 1280 0 lineto 1280 1529 lineto 1280 2101 1210 2234 conicto 1140 2368 959 2368 conicto 780 2368 710 2221 conicto 640 2075 640 1529 conicto 640 0 lineto 256 0 lineto 256 2688 lineto 640 2688 lineto 640 2446 lineto 719 2595 837 2673 conicto 956 2752 1107 2752 conicto 1289 2752 1410 2665 conicto 1531 2578 1598 2401 conicto end_ol grestore gsave 30.084780 12.508579 translate 0.035278 -0.035278 scale start_ol 1653 1344 moveto 1513 1344 lineto 1143 1344 955 1212 conicto 768 1080 768 818 conicto 768 582 908 451 conicto 1048 320 1297 320 conicto 1646 320 1846 566 conicto 2046 813 2048 1248 conicto 2048 1344 lineto 1653 1344 lineto 2496 1513 moveto 2496 0 lineto 2048 0 lineto 2048 416 lineto 1910 170 1701 53 conicto 1493 -64 1194 -64 conicto 796 -64 558 162 conicto 320 389 320 769 conicto 320 1209 614 1436 conicto 909 1664 1480 1664 conicto 2048 1664 lineto 2048 1737 lineto 2046 2069 1889 2218 conicto 1733 2368 1391 2368 conicto 1172 2368 948 2303 conicto 724 2238 512 2112 conicto 512 2560 lineto 752 2656 971 2704 conicto 1191 2752 1398 2752 conicto 1725 2752 1956 2652 conicto 2188 2552 2331 2352 conicto 2421 2230 2458 2051 conicto 2496 1872 2496 1513 conicto end_ol grestore gsave 30.469418 12.508579 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave 30.854056 12.508579 translate 0.035278 -0.035278 scale start_ol 2496 1665 moveto 2496 0 lineto 2048 0 lineto 2048 1665 lineto 2048 2027 1922 2197 conicto 1797 2368 1530 2368 conicto 1225 2368 1060 2148 conicto 896 1929 896 1519 conicto 896 0 lineto 448 0 lineto 448 2688 lineto 896 2688 lineto 896 2284 lineto 1013 2514 1213 2633 conicto 1413 2752 1686 2752 conicto 2094 2752 2295 2482 conicto 2496 2212 2496 1665 conicto end_ol grestore gsave 31.238694 12.508579 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore gsave 31.623332 12.508579 translate 0.035278 -0.035278 scale start_ol 1653 1344 moveto 1513 1344 lineto 1143 1344 955 1212 conicto 768 1080 768 818 conicto 768 582 908 451 conicto 1048 320 1297 320 conicto 1646 320 1846 566 conicto 2046 813 2048 1248 conicto 2048 1344 lineto 1653 1344 lineto 2496 1513 moveto 2496 0 lineto 2048 0 lineto 2048 416 lineto 1910 170 1701 53 conicto 1493 -64 1194 -64 conicto 796 -64 558 162 conicto 320 389 320 769 conicto 320 1209 614 1436 conicto 909 1664 1480 1664 conicto 2048 1664 lineto 2048 1737 lineto 2046 2069 1889 2218 conicto 1733 2368 1391 2368 conicto 1172 2368 948 2303 conicto 724 2238 512 2112 conicto 512 2560 lineto 752 2656 971 2704 conicto 1191 2752 1398 2752 conicto 1725 2752 1956 2652 conicto 2188 2552 2331 2352 conicto 2421 2230 2458 2051 conicto 2496 1872 2496 1513 conicto end_ol grestore gsave 32.007970 12.508579 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave 32.392608 12.508579 translate 0.035278 -0.035278 scale start_ol 2496 1665 moveto 2496 0 lineto 2048 0 lineto 2048 1665 lineto 2048 2027 1922 2197 conicto 1797 2368 1530 2368 conicto 1225 2368 1060 2148 conicto 896 1929 896 1519 conicto 896 0 lineto 448 0 lineto 448 2688 lineto 896 2688 lineto 896 2284 lineto 1013 2514 1213 2633 conicto 1413 2752 1686 2752 conicto 2094 2752 2295 2482 conicto 2496 2212 2496 1665 conicto end_ol grestore gsave 32.777246 12.508579 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 33.161884 12.508579 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore 1.000000 1.000000 1.000000 srgb n 29.165504 12.808579 m 29.165504 13.808579 l 35.825504 13.808579 l 35.825504 12.808579 l f 0.000000 0.000000 0.000000 srgb n 29.165504 12.808579 m 29.165504 13.808579 l 35.825504 13.808579 l 35.825504 12.808579 l cp s gsave 29.315504 13.508579 translate 0.035278 -0.035278 scale start_ol 1664 2752 moveto 1664 1728 lineto 2688 1728 lineto 2688 1344 lineto 1664 1344 lineto 1664 320 lineto 1280 320 lineto 1280 1344 lineto 256 1344 lineto 256 1728 lineto 1280 1728 lineto 1280 2752 lineto 1664 2752 lineto end_ol grestore gsave 29.700142 13.508579 translate 0.035278 -0.035278 scale start_ol 1536 926 moveto 1536 625 1646 472 conicto 1757 320 1973 320 conicto 2496 320 lineto 2496 0 lineto 1930 0 lineto 1528 0 1308 242 conicto 1088 484 1088 926 conicto 1088 3392 lineto 192 3392 lineto 192 3712 lineto 1536 3712 lineto 1536 926 lineto end_ol grestore gsave 30.084780 13.508579 translate 0.035278 -0.035278 scale start_ol 1471 2368 moveto 1124 2368 946 2109 conicto 768 1851 768 1344 conicto 768 839 946 579 conicto 1124 320 1471 320 conicto 1820 320 1998 579 conicto 2176 839 2176 1344 conicto 2176 1851 1998 2109 conicto 1820 2368 1471 2368 conicto 1471 2752 moveto 2031 2752 2327 2390 conicto 2624 2029 2624 1344 conicto 2624 657 2328 296 conicto 2033 -64 1471 -64 conicto 911 -64 615 296 conicto 320 657 320 1344 conicto 320 2029 615 2390 conicto 911 2752 1471 2752 conicto end_ol grestore gsave 30.469418 13.508579 translate 0.035278 -0.035278 scale start_ol 1653 1344 moveto 1513 1344 lineto 1143 1344 955 1212 conicto 768 1080 768 818 conicto 768 582 908 451 conicto 1048 320 1297 320 conicto 1646 320 1846 566 conicto 2046 813 2048 1248 conicto 2048 1344 lineto 1653 1344 lineto 2496 1513 moveto 2496 0 lineto 2048 0 lineto 2048 416 lineto 1910 170 1701 53 conicto 1493 -64 1194 -64 conicto 796 -64 558 162 conicto 320 389 320 769 conicto 320 1209 614 1436 conicto 909 1664 1480 1664 conicto 2048 1664 lineto 2048 1737 lineto 2046 2069 1889 2218 conicto 1733 2368 1391 2368 conicto 1172 2368 948 2303 conicto 724 2238 512 2112 conicto 512 2560 lineto 752 2656 971 2704 conicto 1191 2752 1398 2752 conicto 1725 2752 1956 2652 conicto 2188 2552 2331 2352 conicto 2421 2230 2458 2051 conicto 2496 1872 2496 1513 conicto end_ol grestore gsave 30.854056 13.508579 translate 0.035278 -0.035278 scale start_ol 2176 2335 moveto 2176 3712 lineto 2624 3712 lineto 2624 0 lineto 2176 0 lineto 2176 353 lineto 2060 149 1866 42 conicto 1673 -64 1421 -64 conicto 908 -64 614 313 conicto 320 690 320 1354 conicto 320 2007 615 2379 conicto 911 2752 1421 2752 conicto 1676 2752 1870 2645 conicto 2065 2539 2176 2335 conicto 768 1344 moveto 768 837 945 578 conicto 1122 320 1468 320 conicto 1814 320 1995 580 conicto 2176 841 2176 1344 conicto 2176 1849 1995 2108 conicto 1814 2368 1468 2368 conicto 1122 2368 945 2109 conicto 768 1851 768 1344 conicto end_ol grestore gsave 31.238694 13.508579 translate 0.035278 -0.035278 scale start_ol 2944 -832 moveto 2944 -1152 lineto 0 -1152 lineto 0 -832 lineto 2944 -832 lineto end_ol grestore gsave 31.623332 13.508579 translate 0.035278 -0.035278 scale start_ol 896 353 moveto 896 -1024 lineto 448 -1024 lineto 448 2688 lineto 896 2688 lineto 896 2335 lineto 1012 2539 1206 2645 conicto 1400 2752 1653 2752 conicto 2167 2752 2459 2376 conicto 2752 2000 2752 1334 conicto 2752 681 2458 308 conicto 2165 -64 1653 -64 conicto 1395 -64 1201 42 conicto 1007 149 896 353 conicto 2304 1344 moveto 2304 1851 2128 2109 conicto 1952 2368 1605 2368 conicto 1256 2368 1076 2108 conicto 896 1849 896 1344 conicto 896 841 1076 580 conicto 1256 320 1605 320 conicto 1952 320 2128 578 conicto 2304 837 2304 1344 conicto end_ol grestore gsave 32.007970 13.508579 translate 0.035278 -0.035278 scale start_ol 576 3712 moveto 1024 3712 lineto 1024 1572 lineto 2179 2688 lineto 2715 2688 lineto 1660 1675 lineto 2880 0 lineto 2342 0 lineto 1352 1387 lineto 1024 1077 lineto 1024 0 lineto 576 0 lineto 576 3712 lineto end_ol grestore gsave 32.392608 13.508579 translate 0.035278 -0.035278 scale start_ol 2176 1378 moveto 2176 1864 2000 2116 conicto 1825 2368 1489 2368 conicto 1138 2368 953 2116 conicto 768 1864 768 1378 conicto 768 893 954 638 conicto 1140 384 1494 384 conicto 1825 384 2000 639 conicto 2176 895 2176 1378 conicto 2624 201 moveto 2624 -402 2326 -713 conicto 2029 -1024 1452 -1024 conicto 1262 -1024 1054 -991 conicto 847 -959 640 -896 conicto 640 -448 lineto 887 -546 1088 -593 conicto 1290 -640 1458 -640 conicto 1834 -640 2005 -455 conicto 2176 -270 2176 133 conicto 2176 153 lineto 2176 461 lineto 2065 228 1873 114 conicto 1681 0 1406 0 conicto 911 0 615 374 conicto 320 748 320 1375 conicto 320 2004 615 2378 conicto 911 2752 1406 2752 conicto 1679 2752 1868 2646 conicto 2057 2541 2176 2321 conicto 2176 2688 lineto 2624 2688 lineto 2624 201 lineto end_ol grestore gsave 32.777246 13.508579 translate 0.035278 -0.035278 scale start_ol 2944 -832 moveto 2944 -1152 lineto 0 -1152 lineto 0 -832 lineto 2944 -832 lineto end_ol grestore gsave 33.161884 13.508579 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave 33.546522 13.508579 translate 0.035278 -0.035278 scale start_ol 2496 1665 moveto 2496 0 lineto 2048 0 lineto 2048 1665 lineto 2048 2027 1922 2197 conicto 1797 2368 1530 2368 conicto 1225 2368 1060 2148 conicto 896 1929 896 1519 conicto 896 0 lineto 448 0 lineto 448 2688 lineto 896 2688 lineto 896 2284 lineto 1013 2514 1213 2633 conicto 1413 2752 1686 2752 conicto 2094 2752 2295 2482 conicto 2496 2212 2496 1665 conicto end_ol grestore gsave 33.931160 13.508579 translate 0.035278 -0.035278 scale start_ol 2496 3712 moveto 2496 3328 lineto 2010 3328 lineto 1779 3328 1689 3236 conicto 1600 3145 1600 2912 conicto 1600 2688 lineto 2496 2688 lineto 2496 2368 lineto 1600 2368 lineto 1600 0 lineto 1152 0 lineto 1152 2368 lineto 448 2368 lineto 448 2688 lineto 1152 2688 lineto 1152 2864 lineto 1152 3300 1353 3506 conicto 1555 3712 1982 3712 conicto 2496 3712 lineto end_ol grestore gsave 34.315798 13.508579 translate 0.035278 -0.035278 scale start_ol 1471 2368 moveto 1124 2368 946 2109 conicto 768 1851 768 1344 conicto 768 839 946 579 conicto 1124 320 1471 320 conicto 1820 320 1998 579 conicto 2176 839 2176 1344 conicto 2176 1851 1998 2109 conicto 1820 2368 1471 2368 conicto 1471 2752 moveto 2031 2752 2327 2390 conicto 2624 2029 2624 1344 conicto 2624 657 2328 296 conicto 2033 -64 1471 -64 conicto 911 -64 615 296 conicto 320 657 320 1344 conicto 320 2029 615 2390 conicto 911 2752 1471 2752 conicto end_ol grestore gsave 34.700436 13.508579 translate 0.035278 -0.035278 scale start_ol 2112 3712 moveto 1790 3168 1631 2627 conicto 1472 2087 1472 1538 conicto 1472 992 1631 450 conicto 1790 -91 2112 -640 conicto 1724 -640 lineto 1370 -72 1197 466 conicto 1024 1004 1024 1538 conicto 1024 2070 1197 2609 conicto 1370 3149 1724 3712 conicto 2112 3712 lineto end_ol grestore gsave 35.085074 13.508579 translate 0.035278 -0.035278 scale start_ol 832 3712 moveto 1220 3712 lineto 1574 3149 1747 2609 conicto 1920 2070 1920 1538 conicto 1920 1002 1747 462 conicto 1574 -77 1220 -640 conicto 832 -640 lineto 1154 -86 1313 455 conicto 1472 997 1472 1538 conicto 1472 2082 1313 2624 conicto 1154 3166 832 3712 conicto end_ol grestore 0.100000 slw [] 0 sd 0 slj 0 slc n 22.472374 -8.512132 m 12.455684 -8.512132 l 12.455684 -13.600000 l 2.438994 -13.600000 l s n 12.655684 -11.056066 m 12.655684 -11.456066 l 13.055684 -11.256066 l ef 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb n 31.210100 2.895837 m 31.210100 4.295837 l 33.765100 4.295837 l 33.765100 2.895837 l f 0.000000 0.000000 0.000000 srgb n 31.210100 2.895837 m 31.210100 4.295837 l 33.765100 4.295837 l 33.765100 2.895837 l cp s gsave 31.460100 3.845837 translate 0.035278 -0.035278 scale start_ol 576 4416 moveto 1728 4416 lineto 1728 0 lineto 576 0 lineto 576 4416 lineto end_ol grestore gsave 31.757318 3.845837 translate 0.035278 -0.035278 scale start_ol 1600 4224 moveto 1600 3264 lineto 2688 3264 lineto 2688 2496 lineto 1600 2496 lineto 1600 1146 lineto 1600 924 1694 846 conicto 1788 768 2067 768 conicto 2624 768 lineto 2624 0 lineto 1694 0 lineto 1085 0 830 260 conicto 576 521 576 1146 conicto 576 2496 lineto 64 2496 lineto 64 3264 lineto 576 3264 lineto 576 4224 lineto 1600 4224 lineto end_ol grestore gsave 32.139459 3.845837 translate 0.035278 -0.035278 scale start_ol 3776 1703 moveto 3776 1408 lineto 1280 1408 lineto 1319 1024 1554 832 conicto 1790 640 2213 640 conicto 2555 640 2912 735 conicto 3270 831 3648 1024 conicto 3648 192 lineto 3273 65 2898 0 conicto 2523 -64 2148 -64 conicto 1251 -64 753 390 conicto 256 844 256 1664 conicto 256 2469 740 2930 conicto 1225 3392 2075 3392 conicto 2848 3392 3312 2932 conicto 3776 2472 3776 1703 conicto 2752 2048 moveto 2752 2336 2565 2512 conicto 2379 2688 2077 2688 conicto 1751 2688 1547 2523 conicto 1343 2358 1293 2048 conicto 2752 2048 lineto end_ol grestore gsave 32.681450 3.845837 translate 0.035278 -0.035278 scale start_ol 3531 2745 moveto 3730 3061 4003 3226 conicto 4277 3392 4605 3392 conicto 5169 3392 5464 3033 conicto 5760 2675 5760 1991 conicto 5760 0 lineto 4736 0 lineto 4736 1705 lineto 4739 1743 4740 1784 conicto 4742 1825 4742 1901 conicto 4742 2248 4636 2404 conicto 4531 2560 4296 2560 conicto 3989 2560 3821 2314 conicto 3654 2069 3648 1605 conicto 3648 0 lineto 2624 0 lineto 2624 1705 lineto 2624 2248 2527 2404 conicto 2431 2560 2184 2560 conicto 1874 2560 1705 2313 conicto 1536 2066 1536 1608 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2816 lineto 1730 3102 1980 3247 conicto 2231 3392 2533 3392 conicto 2874 3392 3135 3222 conicto 3396 3052 3531 2745 conicto end_ol grestore 1.000000 1.000000 1.000000 srgb n 31.210100 4.295837 m 31.210100 4.695837 l 33.765100 4.695837 l 33.765100 4.295837 l f 0.000000 0.000000 0.000000 srgb n 31.210100 4.295837 m 31.210100 4.695837 l 33.765100 4.695837 l 33.765100 4.295837 l cp s 1.000000 1.000000 1.000000 srgb n 31.210100 4.695837 m 31.210100 5.095837 l 33.765100 5.095837 l 33.765100 4.695837 l f 0.000000 0.000000 0.000000 srgb n 31.210100 4.695837 m 31.210100 5.095837 l 33.765100 5.095837 l 33.765100 4.695837 l cp s 1.000000 1.000000 1.000000 srgb n 31.465100 2.795837 m 31.465100 3.195837 l 34.165100 3.195837 l 34.165100 2.795837 l f [1.000000] 0 sd [0.300000] 0 sd 0.000000 0.000000 0.000000 srgb n 31.465100 2.795837 m 31.465100 3.195837 l 34.165100 3.195837 l 34.165100 2.795837 l cp s 0.100000 slw [] 0 sd 0 slj 0 slc n 32.487600 6.057921 m 32.487600 6.552168 l 32.495504 6.552168 l 32.495504 7.958219 l s 0 slj 1.000000 1.000000 1.000000 srgb n 32.887600 6.057921 m 32.487600 5.257921 l 32.087600 6.057921 l ef 0.100000 slw [] 0 sd 0 slj 0.000000 0.000000 0.000000 srgb n 32.887600 6.057921 m 32.487600 5.257921 l 32.087600 6.057921 l cp s 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb n 7.450000 4.950000 m 7.450000 6.350000 l 14.110000 6.350000 l 14.110000 4.950000 l f 0.000000 0.000000 0.000000 srgb n 7.450000 4.950000 m 7.450000 6.350000 l 14.110000 6.350000 l 14.110000 4.950000 l cp s gsave 9.347500 5.900000 translate 0.035278 -0.035278 scale start_ol 960 4416 moveto 2374 4416 lineto 2948 2070 lineto 4436 4416 lineto 5888 4416 lineto 5056 0 lineto 3965 0 lineto 4602 3259 lineto 3053 849 lineto 2434 849 lineto 1818 3259 lineto 1181 0 lineto 128 0 lineto 960 4416 lineto end_ol grestore gsave 10.141754 5.900000 translate 0.035278 -0.035278 scale start_ol 3774 1573 moveto 3739 1408 lineto 1286 1408 lineto 1286 1390 1283 1355 conicto 1280 1320 1280 1301 conicto 1280 969 1472 804 conicto 1664 640 2048 640 conicto 2379 640 2747 736 conicto 3115 833 3520 1024 conicto 3361 192 lineto 2973 63 2590 0 conicto 2207 -64 1811 -64 conicto 1035 -64 613 291 conicto 192 647 192 1297 conicto 192 1673 326 2027 conicto 460 2381 717 2675 conicto 1021 3028 1444 3210 conicto 1867 3392 2383 3392 conicto 3053 3392 3446 3042 conicto 3840 2692 3840 2099 conicto 3840 1984 3824 1855 conicto 3808 1726 3774 1573 conicto 2798 2048 moveto 2807 2085 2811 2123 conicto 2816 2161 2816 2197 conicto 2816 2423 2674 2555 conicto 2533 2688 2290 2688 conicto 1980 2688 1763 2526 conicto 1546 2364 1431 2048 conicto 2798 2048 lineto end_ol grestore gsave 10.683745 5.900000 translate 0.035278 -0.035278 scale start_ol 2143 4224 moveto 1964 3264 lineto 3039 3264 lineto 2889 2496 lineto 1814 2496 lineto 1544 1149 lineto 1532 1104 1527 1072 conicto 1523 1041 1523 1013 conicto 1523 882 1612 825 conicto 1702 768 1914 768 conicto 2457 768 lineto 2308 0 lineto 1423 0 lineto 947 0 697 200 conicto 448 401 448 778 conicto 448 860 457 954 conicto 466 1049 483 1146 conicto 754 2496 lineto 246 2496 lineto 384 3264 lineto 903 3264 lineto 1085 4224 lineto 2143 4224 lineto end_ol grestore gsave 11.065886 5.900000 translate 0.035278 -0.035278 scale start_ol 3081 2432 moveto 2973 2495 2842 2527 conicto 2711 2560 2560 2560 conicto 2160 2560 1896 2297 conicto 1633 2035 1540 1540 conicto 1243 0 lineto 192 0 lineto 832 3264 lineto 1881 3264 lineto 1767 2748 lineto 1974 3060 2284 3226 conicto 2594 3392 2973 3392 conicto 3028 3392 3098 3382 conicto 3168 3373 3264 3354 conicto 3081 2432 lineto end_ol grestore gsave 11.460512 5.900000 translate 0.035278 -0.035278 scale start_ol 832 3264 moveto 1899 3264 lineto 1256 0 lineto 192 0 lineto 832 3264 lineto 1088 4544 moveto 2146 4544 lineto 1978 3648 lineto 896 3648 lineto 1088 4544 lineto end_ol grestore gsave 11.735249 5.900000 translate 0.035278 -0.035278 scale start_ol 3456 3136 moveto 3287 2304 lineto 3073 2461 2865 2542 conicto 2658 2624 2459 2624 conicto 1939 2624 1609 2284 conicto 1280 1944 1280 1415 conicto 1280 1077 1485 890 conicto 1690 704 2064 704 conicto 2313 704 2553 785 conicto 2794 866 3011 1024 conicto 2847 192 lineto 2587 64 2324 0 conicto 2061 -64 1796 -64 conicto 1024 -64 608 284 conicto 192 632 192 1273 conicto 192 1676 346 2055 conicto 500 2434 787 2737 conicto 1106 3069 1519 3230 conicto 1932 3392 2472 3392 conicto 2721 3392 2967 3328 conicto 3213 3264 3456 3136 conicto end_ol grestore 1.000000 1.000000 1.000000 srgb n 7.450000 6.350000 m 7.450000 7.350000 l 14.110000 7.350000 l 14.110000 6.350000 l f 0.000000 0.000000 0.000000 srgb n 7.450000 6.350000 m 7.450000 7.350000 l 14.110000 7.350000 l 14.110000 6.350000 l cp s gsave 7.600000 7.050000 translate 0.035278 -0.035278 scale start_ol 1664 2752 moveto 1664 1728 lineto 2688 1728 lineto 2688 1344 lineto 1664 1344 lineto 1664 320 lineto 1280 320 lineto 1280 1344 lineto 256 1344 lineto 256 1728 lineto 1280 1728 lineto 1280 2752 lineto 1664 2752 lineto end_ol grestore gsave 7.984638 7.050000 translate 0.035278 -0.035278 scale start_ol 2176 2335 moveto 2176 3712 lineto 2624 3712 lineto 2624 0 lineto 2176 0 lineto 2176 353 lineto 2060 149 1866 42 conicto 1673 -64 1421 -64 conicto 908 -64 614 313 conicto 320 690 320 1354 conicto 320 2007 615 2379 conicto 911 2752 1421 2752 conicto 1676 2752 1870 2645 conicto 2065 2539 2176 2335 conicto 768 1344 moveto 768 837 945 578 conicto 1122 320 1468 320 conicto 1814 320 1995 580 conicto 2176 841 2176 1344 conicto 2176 1849 1995 2108 conicto 1814 2368 1468 2368 conicto 1122 2368 945 2109 conicto 768 1851 768 1344 conicto end_ol grestore gsave 8.369276 7.050000 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 8.753914 7.050000 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave 9.138552 7.050000 translate 0.035278 -0.035278 scale start_ol 2496 128 moveto 2321 32 2135 -16 conicto 1950 -64 1756 -64 conicto 1141 -64 794 309 conicto 448 683 448 1344 conicto 448 2005 794 2378 conicto 1141 2752 1756 2752 conicto 1947 2752 2129 2689 conicto 2312 2627 2496 2496 conicto 2496 2048 lineto 2322 2217 2147 2292 conicto 1972 2368 1751 2368 conicto 1339 2368 1117 2102 conicto 896 1837 896 1344 conicto 896 853 1118 586 conicto 1341 320 1751 320 conicto 1979 320 2160 382 conicto 2341 445 2496 576 conicto 2496 128 lineto end_ol grestore 1.000000 1.000000 1.000000 srgb n 7.450000 7.350000 m 7.450000 8.350000 l 14.110000 8.350000 l 14.110000 7.350000 l f 0.000000 0.000000 0.000000 srgb n 7.450000 7.350000 m 7.450000 8.350000 l 14.110000 8.350000 l 14.110000 7.350000 l cp s gsave 7.600000 8.050000 translate 0.035278 -0.035278 scale start_ol 1664 2752 moveto 1664 1728 lineto 2688 1728 lineto 2688 1344 lineto 1664 1344 lineto 1664 320 lineto 1280 320 lineto 1280 1344 lineto 256 1344 lineto 256 1728 lineto 1280 1728 lineto 1280 2752 lineto 1664 2752 lineto end_ol grestore gsave 7.984638 8.050000 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 8.369276 8.050000 translate 0.035278 -0.035278 scale start_ol 448 1023 moveto 448 2688 lineto 896 2688 lineto 896 1023 lineto 896 661 1022 490 conicto 1149 320 1414 320 conicto 1722 320 1885 539 conicto 2048 759 2048 1169 conicto 2048 2688 lineto 2496 2688 lineto 2496 0 lineto 2048 0 lineto 2048 409 lineto 1931 176 1729 56 conicto 1528 -64 1259 -64 conicto 849 -64 648 206 conicto 448 476 448 1023 conicto end_ol grestore gsave 8.753914 8.050000 translate 0.035278 -0.035278 scale start_ol 2496 1665 moveto 2496 0 lineto 2048 0 lineto 2048 1665 lineto 2048 2027 1922 2197 conicto 1797 2368 1530 2368 conicto 1225 2368 1060 2148 conicto 896 1929 896 1519 conicto 896 0 lineto 448 0 lineto 448 2688 lineto 896 2688 lineto 896 2284 lineto 1013 2514 1213 2633 conicto 1413 2752 1686 2752 conicto 2094 2752 2295 2482 conicto 2496 2212 2496 1665 conicto end_ol grestore gsave 9.138552 8.050000 translate 0.035278 -0.035278 scale start_ol 2112 3712 moveto 1790 3168 1631 2627 conicto 1472 2087 1472 1538 conicto 1472 992 1631 450 conicto 1790 -91 2112 -640 conicto 1724 -640 lineto 1370 -72 1197 466 conicto 1024 1004 1024 1538 conicto 1024 2070 1197 2609 conicto 1370 3149 1724 3712 conicto 2112 3712 lineto end_ol grestore gsave 9.523190 8.050000 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 9.907828 8.050000 translate 0.035278 -0.035278 scale start_ol 256 2688 moveto 706 2688 lineto 1471 432 lineto 2238 2688 lineto 2688 2688 lineto 1751 0 lineto 1193 0 lineto 256 2688 lineto end_ol grestore gsave 10.292466 8.050000 translate 0.035278 -0.035278 scale start_ol 1653 1344 moveto 1513 1344 lineto 1143 1344 955 1212 conicto 768 1080 768 818 conicto 768 582 908 451 conicto 1048 320 1297 320 conicto 1646 320 1846 566 conicto 2046 813 2048 1248 conicto 2048 1344 lineto 1653 1344 lineto 2496 1513 moveto 2496 0 lineto 2048 0 lineto 2048 416 lineto 1910 170 1701 53 conicto 1493 -64 1194 -64 conicto 796 -64 558 162 conicto 320 389 320 769 conicto 320 1209 614 1436 conicto 909 1664 1480 1664 conicto 2048 1664 lineto 2048 1737 lineto 2046 2069 1889 2218 conicto 1733 2368 1391 2368 conicto 1172 2368 948 2303 conicto 724 2238 512 2112 conicto 512 2560 lineto 752 2656 971 2704 conicto 1191 2752 1398 2752 conicto 1725 2752 1956 2652 conicto 2188 2552 2331 2352 conicto 2421 2230 2458 2051 conicto 2496 1872 2496 1513 conicto end_ol grestore gsave 10.677104 8.050000 translate 0.035278 -0.035278 scale start_ol 1536 926 moveto 1536 625 1646 472 conicto 1757 320 1973 320 conicto 2496 320 lineto 2496 0 lineto 1930 0 lineto 1528 0 1308 242 conicto 1088 484 1088 926 conicto 1088 3392 lineto 192 3392 lineto 192 3712 lineto 1536 3712 lineto 1536 926 lineto end_ol grestore gsave 11.061742 8.050000 translate 0.035278 -0.035278 scale start_ol 448 1023 moveto 448 2688 lineto 896 2688 lineto 896 1023 lineto 896 661 1022 490 conicto 1149 320 1414 320 conicto 1722 320 1885 539 conicto 2048 759 2048 1169 conicto 2048 2688 lineto 2496 2688 lineto 2496 0 lineto 2048 0 lineto 2048 409 lineto 1931 176 1729 56 conicto 1528 -64 1259 -64 conicto 849 -64 648 206 conicto 448 476 448 1023 conicto end_ol grestore gsave 11.446380 8.050000 translate 0.035278 -0.035278 scale start_ol 1653 1344 moveto 1513 1344 lineto 1143 1344 955 1212 conicto 768 1080 768 818 conicto 768 582 908 451 conicto 1048 320 1297 320 conicto 1646 320 1846 566 conicto 2046 813 2048 1248 conicto 2048 1344 lineto 1653 1344 lineto 2496 1513 moveto 2496 0 lineto 2048 0 lineto 2048 416 lineto 1910 170 1701 53 conicto 1493 -64 1194 -64 conicto 796 -64 558 162 conicto 320 389 320 769 conicto 320 1209 614 1436 conicto 909 1664 1480 1664 conicto 2048 1664 lineto 2048 1737 lineto 2046 2069 1889 2218 conicto 1733 2368 1391 2368 conicto 1172 2368 948 2303 conicto 724 2238 512 2112 conicto 512 2560 lineto 752 2656 971 2704 conicto 1191 2752 1398 2752 conicto 1725 2752 1956 2652 conicto 2188 2552 2331 2352 conicto 2421 2230 2458 2051 conicto 2496 1872 2496 1513 conicto end_ol grestore gsave 11.831018 8.050000 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore gsave 12.215656 8.050000 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave 12.600294 8.050000 translate 0.035278 -0.035278 scale start_ol 1471 2368 moveto 1124 2368 946 2109 conicto 768 1851 768 1344 conicto 768 839 946 579 conicto 1124 320 1471 320 conicto 1820 320 1998 579 conicto 2176 839 2176 1344 conicto 2176 1851 1998 2109 conicto 1820 2368 1471 2368 conicto 1471 2752 moveto 2031 2752 2327 2390 conicto 2624 2029 2624 1344 conicto 2624 657 2328 296 conicto 2033 -64 1471 -64 conicto 911 -64 615 296 conicto 320 657 320 1344 conicto 320 2029 615 2390 conicto 911 2752 1471 2752 conicto end_ol grestore gsave 12.984932 8.050000 translate 0.035278 -0.035278 scale start_ol 2496 1665 moveto 2496 0 lineto 2048 0 lineto 2048 1665 lineto 2048 2027 1922 2197 conicto 1797 2368 1530 2368 conicto 1225 2368 1060 2148 conicto 896 1929 896 1519 conicto 896 0 lineto 448 0 lineto 448 2688 lineto 896 2688 lineto 896 2284 lineto 1013 2514 1213 2633 conicto 1413 2752 1686 2752 conicto 2094 2752 2295 2482 conicto 2496 2212 2496 1665 conicto end_ol grestore gsave 13.369570 8.050000 translate 0.035278 -0.035278 scale start_ol 832 3712 moveto 1220 3712 lineto 1574 3149 1747 2609 conicto 1920 2070 1920 1538 conicto 1920 1002 1747 462 conicto 1574 -77 1220 -640 conicto 832 -640 lineto 1154 -86 1313 455 conicto 1472 997 1472 1538 conicto 1472 2082 1313 2624 conicto 1154 3166 832 3712 conicto end_ol grestore 1.000000 1.000000 1.000000 srgb n 11.810000 4.850000 m 11.810000 5.250000 l 14.510000 5.250000 l 14.510000 4.850000 l f [0.300000] 0 sd [0.300000] 0 sd 0.000000 0.000000 0.000000 srgb n 11.810000 4.850000 m 11.810000 5.250000 l 14.510000 5.250000 l 14.510000 4.850000 l cp s 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb n 3.350000 11.350000 m 3.350000 12.750000 l 7.995000 12.750000 l 7.995000 11.350000 l f 0.000000 0.000000 0.000000 srgb n 3.350000 11.350000 m 3.350000 12.750000 l 7.995000 12.750000 l 7.995000 11.350000 l cp s gsave 3.600000 12.300000 translate 0.035278 -0.035278 scale start_ol 576 4416 moveto 2455 4416 lineto 3279 4416 3719 4042 conicto 4160 3669 4160 2977 conicto 4160 2283 3719 1909 conicto 3279 1536 2455 1536 conicto 1728 1536 lineto 1728 0 lineto 576 0 lineto 576 4416 lineto 1728 3584 moveto 1728 2368 lineto 2338 2368 lineto 2659 2368 2833 2527 conicto 3008 2686 3008 2977 conicto 3008 3269 2833 3426 conicto 2659 3584 2338 3584 conicto 1728 3584 lineto end_ol grestore gsave 4.186945 12.300000 translate 0.035278 -0.035278 scale start_ol 2944 2432 moveto 2804 2497 2666 2528 conicto 2528 2560 2389 2560 conicto 1979 2560 1757 2296 conicto 1536 2032 1536 1540 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2752 lineto 1741 3086 2007 3239 conicto 2273 3392 2644 3392 conicto 2697 3392 2759 3385 conicto 2822 3378 2941 3354 conicto 2944 2432 lineto end_ol grestore gsave 4.581571 12.300000 translate 0.035278 -0.035278 scale start_ol 3776 1703 moveto 3776 1408 lineto 1280 1408 lineto 1319 1024 1554 832 conicto 1790 640 2213 640 conicto 2555 640 2912 735 conicto 3270 831 3648 1024 conicto 3648 192 lineto 3273 65 2898 0 conicto 2523 -64 2148 -64 conicto 1251 -64 753 390 conicto 256 844 256 1664 conicto 256 2469 740 2930 conicto 1225 3392 2075 3392 conicto 2848 3392 3312 2932 conicto 3776 2472 3776 1703 conicto 2752 2048 moveto 2752 2336 2565 2512 conicto 2379 2688 2077 2688 conicto 1751 2688 1547 2523 conicto 1343 2358 1293 2048 conicto 2752 2048 lineto end_ol grestore gsave 5.123562 12.300000 translate 0.035278 -0.035278 scale start_ol 3136 3136 moveto 3136 2304 lineto 2924 2467 2710 2545 conicto 2496 2624 2266 2624 conicto 1830 2624 1587 2371 conicto 1344 2118 1344 1664 conicto 1344 1210 1587 957 conicto 1830 704 2266 704 conicto 2511 704 2730 785 conicto 2950 866 3136 1024 conicto 3136 192 lineto 2891 64 2639 0 conicto 2388 -64 2134 -64 conicto 1252 -64 754 393 conicto 256 850 256 1664 conicto 256 2478 754 2935 conicto 1252 3392 2134 3392 conicto 2391 3392 2639 3328 conicto 2888 3264 3136 3136 conicto end_ol grestore gsave 5.598117 12.300000 translate 0.035278 -0.035278 scale start_ol 512 3264 moveto 1536 3264 lineto 1536 0 lineto 512 0 lineto 512 3264 lineto 512 4544 moveto 1536 4544 lineto 1536 3648 lineto 512 3648 lineto 512 4544 lineto end_ol grestore gsave 5.872854 12.300000 translate 0.035278 -0.035278 scale start_ol 3136 3200 moveto 3136 2432 lineto 2794 2560 2476 2624 conicto 2159 2688 1877 2688 conicto 1574 2688 1427 2616 conicto 1280 2544 1280 2395 conicto 1280 2274 1393 2209 conicto 1507 2145 1800 2114 conicto 1990 2088 lineto 2781 1984 3054 1746 conicto 3328 1509 3328 1002 conicto 3328 470 2939 203 conicto 2550 -64 1778 -64 conicto 1451 -64 1101 0 conicto 752 64 384 192 conicto 384 960 lineto 706 800 1045 720 conicto 1384 640 1733 640 conicto 2049 640 2208 727 conicto 2368 814 2368 986 conicto 2368 1130 2257 1200 conicto 2147 1271 1818 1310 conicto 1628 1334 lineto 903 1421 611 1657 conicto 320 1893 320 2373 conicto 320 2891 685 3141 conicto 1050 3392 1804 3392 conicto 2101 3392 2427 3345 conicto 2753 3299 3136 3200 conicto end_ol grestore gsave 6.347409 12.300000 translate 0.035278 -0.035278 scale start_ol 512 3264 moveto 1536 3264 lineto 1536 0 lineto 512 0 lineto 512 3264 lineto 512 4544 moveto 1536 4544 lineto 1536 3648 lineto 512 3648 lineto 512 4544 lineto end_ol grestore gsave 6.622145 12.300000 translate 0.035278 -0.035278 scale start_ol 2085 2624 moveto 1723 2624 1533 2377 conicto 1344 2130 1344 1664 conicto 1344 1198 1533 951 conicto 1723 704 2085 704 conicto 2440 704 2628 951 conicto 2816 1198 2816 1664 conicto 2816 2130 2628 2377 conicto 2440 2624 2085 2624 conicto 2084 3392 moveto 2941 3392 3422 2933 conicto 3904 2475 3904 1664 conicto 3904 853 3422 394 conicto 2941 -64 2084 -64 conicto 1225 -64 740 394 conicto 256 853 256 1664 conicto 256 2475 740 2933 conicto 1225 3392 2084 3392 conicto end_ol grestore gsave 7.171627 12.300000 translate 0.035278 -0.035278 scale start_ol 3840 1991 moveto 3840 0 lineto 2816 0 lineto 2816 324 lineto 2816 1524 lineto 2816 1947 2795 2107 conicto 2775 2268 2725 2344 conicto 2659 2446 2546 2503 conicto 2433 2560 2289 2560 conicto 1938 2560 1737 2307 conicto 1536 2055 1536 1608 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2816 lineto 1779 3112 2052 3252 conicto 2325 3392 2655 3392 conicto 3237 3392 3538 3033 conicto 3840 2675 3840 1991 conicto end_ol grestore 1.000000 1.000000 1.000000 srgb n 3.350000 12.750000 m 3.350000 13.150000 l 7.995000 13.150000 l 7.995000 12.750000 l f 0.000000 0.000000 0.000000 srgb n 3.350000 12.750000 m 3.350000 13.150000 l 7.995000 13.150000 l 7.995000 12.750000 l cp s 1.000000 1.000000 1.000000 srgb n 3.350000 13.150000 m 3.350000 13.550000 l 7.995000 13.550000 l 7.995000 13.150000 l f 0.000000 0.000000 0.000000 srgb n 3.350000 13.150000 m 3.350000 13.550000 l 7.995000 13.550000 l 7.995000 13.150000 l cp s 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb n -0.630000 11.255000 m -0.630000 12.655000 l 2.592500 12.655000 l 2.592500 11.255000 l f 0.000000 0.000000 0.000000 srgb n -0.630000 11.255000 m -0.630000 12.655000 l 2.592500 12.655000 l 2.592500 11.255000 l cp s gsave -0.380000 12.205000 translate 0.035278 -0.035278 scale start_ol 2182 2496 moveto 2521 2496 2668 2624 conicto 2816 2752 2816 3044 conicto 2816 3334 2668 3459 conicto 2521 3584 2182 3584 conicto 1728 3584 lineto 1728 2496 lineto 2182 2496 lineto 1728 1664 moveto 1728 0 lineto 576 0 lineto 576 4416 lineto 2297 4416 lineto 3162 4416 3565 4125 conicto 3968 3834 3968 3205 conicto 3968 2771 3754 2491 conicto 3540 2212 3109 2080 conicto 3345 2025 3532 1832 conicto 3719 1640 3911 1249 conicto 4544 0 lineto 3310 0 lineto 2768 1093 lineto 2614 1423 2455 1543 conicto 2297 1664 2034 1664 conicto 1728 1664 lineto end_ol grestore gsave 0.234420 12.205000 translate 0.035278 -0.035278 scale start_ol 3776 1703 moveto 3776 1408 lineto 1280 1408 lineto 1319 1024 1554 832 conicto 1790 640 2213 640 conicto 2555 640 2912 735 conicto 3270 831 3648 1024 conicto 3648 192 lineto 3273 65 2898 0 conicto 2523 -64 2148 -64 conicto 1251 -64 753 390 conicto 256 844 256 1664 conicto 256 2469 740 2930 conicto 1225 3392 2075 3392 conicto 2848 3392 3312 2932 conicto 3776 2472 3776 1703 conicto 2752 2048 moveto 2752 2336 2565 2512 conicto 2379 2688 2077 2688 conicto 1751 2688 1547 2523 conicto 1343 2358 1293 2048 conicto 2752 2048 lineto end_ol grestore gsave 0.776411 12.205000 translate 0.035278 -0.035278 scale start_ol 3136 3136 moveto 3136 2304 lineto 2924 2467 2710 2545 conicto 2496 2624 2266 2624 conicto 1830 2624 1587 2371 conicto 1344 2118 1344 1664 conicto 1344 1210 1587 957 conicto 1830 704 2266 704 conicto 2511 704 2730 785 conicto 2950 866 3136 1024 conicto 3136 192 lineto 2891 64 2639 0 conicto 2388 -64 2134 -64 conicto 1252 -64 754 393 conicto 256 850 256 1664 conicto 256 2478 754 2935 conicto 1252 3392 2134 3392 conicto 2391 3392 2639 3328 conicto 2888 3264 3136 3136 conicto end_ol grestore gsave 1.250966 12.205000 translate 0.035278 -0.035278 scale start_ol 1981 1472 moveto 1632 1472 1456 1365 conicto 1280 1258 1280 1049 conicto 1280 857 1421 748 conicto 1563 640 1816 640 conicto 2130 640 2345 844 conicto 2560 1049 2560 1356 conicto 2560 1472 lineto 1981 1472 lineto 3584 1878 moveto 3584 0 lineto 2560 0 lineto 2560 512 lineto 2345 211 2076 73 conicto 1808 -64 1423 -64 conicto 904 -64 580 232 conicto 256 528 256 1001 conicto 256 1575 654 1843 conicto 1052 2112 1903 2112 conicto 2560 2112 lineto 2560 2202 lineto 2560 2454 2363 2571 conicto 2166 2688 1748 2688 conicto 1409 2688 1117 2624 conicto 826 2560 576 2432 conicto 576 3264 lineto 906 3327 1238 3359 conicto 1571 3392 1903 3392 conicto 2793 3392 3188 3036 conicto 3584 2680 3584 1878 conicto end_ol grestore gsave 1.790460 12.205000 translate 0.035278 -0.035278 scale start_ol 512 4544 moveto 1536 4544 lineto 1536 0 lineto 512 0 lineto 512 4544 lineto end_ol grestore gsave 2.065196 12.205000 translate 0.035278 -0.035278 scale start_ol 512 4544 moveto 1536 4544 lineto 1536 0 lineto 512 0 lineto 512 4544 lineto end_ol grestore 1.000000 1.000000 1.000000 srgb n -0.630000 12.655000 m -0.630000 13.055000 l 2.592500 13.055000 l 2.592500 12.655000 l f 0.000000 0.000000 0.000000 srgb n -0.630000 12.655000 m -0.630000 13.055000 l 2.592500 13.055000 l 2.592500 12.655000 l cp s 1.000000 1.000000 1.000000 srgb n -0.630000 13.055000 m -0.630000 13.455000 l 2.592500 13.455000 l 2.592500 13.055000 l f 0.000000 0.000000 0.000000 srgb n -0.630000 13.055000 m -0.630000 13.455000 l 2.592500 13.455000 l 2.592500 13.055000 l cp s 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb n 8.790000 11.410000 m 8.790000 12.810000 l 10.395000 12.810000 l 10.395000 11.410000 l f 0.000000 0.000000 0.000000 srgb n 8.790000 11.410000 m 8.790000 12.810000 l 10.395000 12.810000 l 10.395000 11.410000 l cp s gsave 9.040000 12.360000 translate 0.035278 -0.035278 scale start_ol 576 4416 moveto 3648 4416 lineto 3648 3584 lineto 1728 3584 lineto 1728 2752 lineto 3520 2752 lineto 3520 1920 lineto 1728 1920 lineto 1728 0 lineto 576 0 lineto 576 4416 lineto end_ol grestore gsave 9.586985 12.360000 translate 0.035278 -0.035278 scale start_ol 704 832 moveto 1728 832 lineto 1728 3584 lineto 704 3392 lineto 704 4224 lineto 1728 4416 lineto 2816 4416 lineto 2816 832 lineto 3840 832 lineto 3840 0 lineto 704 0 lineto 704 832 lineto end_ol grestore 1.000000 1.000000 1.000000 srgb n 8.790000 12.810000 m 8.790000 13.210000 l 10.395000 13.210000 l 10.395000 12.810000 l f 0.000000 0.000000 0.000000 srgb n 8.790000 12.810000 m 8.790000 13.210000 l 10.395000 13.210000 l 10.395000 12.810000 l cp s 1.000000 1.000000 1.000000 srgb n 8.790000 13.210000 m 8.790000 13.610000 l 10.395000 13.610000 l 10.395000 13.210000 l f 0.000000 0.000000 0.000000 srgb n 8.790000 13.210000 m 8.790000 13.610000 l 10.395000 13.610000 l 10.395000 13.210000 l cp s 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb n 10.915000 11.450000 m 10.915000 12.850000 l 15.667500 12.850000 l 15.667500 11.450000 l f 0.000000 0.000000 0.000000 srgb n 10.915000 11.450000 m 10.915000 12.850000 l 15.667500 12.850000 l 15.667500 11.450000 l cp s gsave 11.165000 12.400000 translate 0.035278 -0.035278 scale start_ol 4032 267 moveto 3722 103 3386 19 conicto 3050 -64 2685 -64 conicto 1594 -64 957 556 conicto 320 1177 320 2239 conicto 320 3303 957 3923 conicto 1594 4544 2685 4544 conicto 3050 4544 3386 4460 conicto 3722 4377 4032 4213 conicto 4032 3328 lineto 3718 3527 3412 3619 conicto 3107 3712 2770 3712 conicto 2165 3712 1818 3320 conicto 1472 2928 1472 2239 conicto 1472 1552 1818 1160 conicto 2165 768 2770 768 conicto 3107 768 3412 860 conicto 3718 953 4032 1152 conicto 4032 267 lineto end_ol grestore gsave 11.751945 12.400000 translate 0.035278 -0.035278 scale start_ol 2085 2624 moveto 1723 2624 1533 2377 conicto 1344 2130 1344 1664 conicto 1344 1198 1533 951 conicto 1723 704 2085 704 conicto 2440 704 2628 951 conicto 2816 1198 2816 1664 conicto 2816 2130 2628 2377 conicto 2440 2624 2085 2624 conicto 2084 3392 moveto 2941 3392 3422 2933 conicto 3904 2475 3904 1664 conicto 3904 853 3422 394 conicto 2941 -64 2084 -64 conicto 1225 -64 740 394 conicto 256 853 256 1664 conicto 256 2475 740 2933 conicto 1225 3392 2084 3392 conicto end_ol grestore gsave 12.301427 12.400000 translate 0.035278 -0.035278 scale start_ol 64 3264 moveto 1107 3264 lineto 1920 1008 lineto 2730 3264 lineto 3776 3264 lineto 2491 0 lineto 1346 0 lineto 64 3264 lineto end_ol grestore gsave 12.823433 12.400000 translate 0.035278 -0.035278 scale start_ol 3776 1703 moveto 3776 1408 lineto 1280 1408 lineto 1319 1024 1554 832 conicto 1790 640 2213 640 conicto 2555 640 2912 735 conicto 3270 831 3648 1024 conicto 3648 192 lineto 3273 65 2898 0 conicto 2523 -64 2148 -64 conicto 1251 -64 753 390 conicto 256 844 256 1664 conicto 256 2469 740 2930 conicto 1225 3392 2075 3392 conicto 2848 3392 3312 2932 conicto 3776 2472 3776 1703 conicto 2752 2048 moveto 2752 2336 2565 2512 conicto 2379 2688 2077 2688 conicto 1751 2688 1547 2523 conicto 1343 2358 1293 2048 conicto 2752 2048 lineto end_ol grestore gsave 13.365424 12.400000 translate 0.035278 -0.035278 scale start_ol 2944 2432 moveto 2804 2497 2666 2528 conicto 2528 2560 2389 2560 conicto 1979 2560 1757 2296 conicto 1536 2032 1536 1540 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2752 lineto 1741 3086 2007 3239 conicto 2273 3392 2644 3392 conicto 2697 3392 2759 3385 conicto 2822 3378 2941 3354 conicto 2944 2432 lineto end_ol grestore gsave 13.760050 12.400000 translate 0.035278 -0.035278 scale start_ol 1981 1472 moveto 1632 1472 1456 1365 conicto 1280 1258 1280 1049 conicto 1280 857 1421 748 conicto 1563 640 1816 640 conicto 2130 640 2345 844 conicto 2560 1049 2560 1356 conicto 2560 1472 lineto 1981 1472 lineto 3584 1878 moveto 3584 0 lineto 2560 0 lineto 2560 512 lineto 2345 211 2076 73 conicto 1808 -64 1423 -64 conicto 904 -64 580 232 conicto 256 528 256 1001 conicto 256 1575 654 1843 conicto 1052 2112 1903 2112 conicto 2560 2112 lineto 2560 2202 lineto 2560 2454 2363 2571 conicto 2166 2688 1748 2688 conicto 1409 2688 1117 2624 conicto 826 2560 576 2432 conicto 576 3264 lineto 906 3327 1238 3359 conicto 1571 3392 1903 3392 conicto 2793 3392 3188 3036 conicto 3584 2680 3584 1878 conicto end_ol grestore gsave 14.299544 12.400000 translate 0.035278 -0.035278 scale start_ol 2752 576 moveto 2533 279 2269 139 conicto 2005 0 1658 0 conicto 1050 0 653 478 conicto 256 957 256 1697 conicto 256 2441 653 2916 conicto 1050 3392 1658 3392 conicto 2005 3392 2269 3253 conicto 2533 3115 2752 2816 conicto 2752 3264 lineto 3776 3264 lineto 3776 343 lineto 3776 -447 3274 -863 conicto 2772 -1280 1818 -1280 conicto 1509 -1280 1220 -1232 conicto 932 -1185 640 -1088 conicto 640 -256 lineto 922 -417 1191 -496 conicto 1461 -576 1733 -576 conicto 2261 -576 2506 -353 conicto 2752 -131 2752 343 conicto 2752 576 lineto 2047 2624 moveto 1715 2624 1529 2381 conicto 1344 2139 1344 1695 conicto 1344 1239 1523 1003 conicto 1703 768 2047 768 conicto 2381 768 2566 1010 conicto 2752 1253 2752 1695 conicto 2752 2139 2566 2381 conicto 2381 2624 2047 2624 conicto end_ol grestore gsave 14.871507 12.400000 translate 0.035278 -0.035278 scale start_ol 3776 1703 moveto 3776 1408 lineto 1280 1408 lineto 1319 1024 1554 832 conicto 1790 640 2213 640 conicto 2555 640 2912 735 conicto 3270 831 3648 1024 conicto 3648 192 lineto 3273 65 2898 0 conicto 2523 -64 2148 -64 conicto 1251 -64 753 390 conicto 256 844 256 1664 conicto 256 2469 740 2930 conicto 1225 3392 2075 3392 conicto 2848 3392 3312 2932 conicto 3776 2472 3776 1703 conicto 2752 2048 moveto 2752 2336 2565 2512 conicto 2379 2688 2077 2688 conicto 1751 2688 1547 2523 conicto 1343 2358 1293 2048 conicto 2752 2048 lineto end_ol grestore 1.000000 1.000000 1.000000 srgb n 10.915000 12.850000 m 10.915000 13.250000 l 15.667500 13.250000 l 15.667500 12.850000 l f 0.000000 0.000000 0.000000 srgb n 10.915000 12.850000 m 10.915000 13.250000 l 15.667500 13.250000 l 15.667500 12.850000 l cp s 1.000000 1.000000 1.000000 srgb n 10.915000 13.250000 m 10.915000 13.650000 l 15.667500 13.650000 l 15.667500 13.250000 l f 0.000000 0.000000 0.000000 srgb n 10.915000 13.250000 m 10.915000 13.650000 l 15.667500 13.650000 l 15.667500 13.250000 l cp s 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb n 16.020000 11.400000 m 16.020000 12.800000 l 18.482500 12.800000 l 18.482500 11.400000 l f 0.000000 0.000000 0.000000 srgb n 16.020000 11.400000 m 16.020000 12.800000 l 18.482500 12.800000 l 18.482500 11.400000 l cp s gsave 16.270000 12.350000 translate 0.035278 -0.035278 scale start_ol 576 4416 moveto 1978 4416 lineto 3005 2042 lineto 4038 4416 lineto 5440 4416 lineto 5440 0 lineto 4416 0 lineto 4416 3224 lineto 3377 832 lineto 2639 832 lineto 1600 3224 lineto 1600 0 lineto 576 0 lineto 576 4416 lineto end_ol grestore gsave 17.064254 12.350000 translate 0.035278 -0.035278 scale start_ol 3192 768 moveto 1419 768 lineto 1139 0 lineto 0 0 lineto 1628 4416 lineto 2980 4416 lineto 4608 0 lineto 3469 0 lineto 3192 768 lineto 1702 1600 moveto 2906 1600 lineto 2305 3372 lineto 1702 1600 lineto end_ol grestore gsave 17.683669 12.350000 translate 0.035278 -0.035278 scale start_ol 576 4416 moveto 3648 4416 lineto 3648 3584 lineto 1728 3584 lineto 1728 2752 lineto 3520 2752 lineto 3520 1920 lineto 1728 1920 lineto 1728 832 lineto 3712 832 lineto 3712 0 lineto 576 0 lineto 576 4416 lineto end_ol grestore 1.000000 1.000000 1.000000 srgb n 16.020000 12.800000 m 16.020000 13.200000 l 18.482500 13.200000 l 18.482500 12.800000 l f 0.000000 0.000000 0.000000 srgb n 16.020000 12.800000 m 16.020000 13.200000 l 18.482500 13.200000 l 18.482500 12.800000 l cp s 1.000000 1.000000 1.000000 srgb n 16.020000 13.200000 m 16.020000 13.600000 l 18.482500 13.600000 l 18.482500 13.200000 l f 0.000000 0.000000 0.000000 srgb n 16.020000 13.200000 m 16.020000 13.600000 l 18.482500 13.600000 l 18.482500 13.200000 l cp s 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb n 18.905000 11.400000 m 18.905000 12.800000 l 21.322500 12.800000 l 21.322500 11.400000 l f 0.000000 0.000000 0.000000 srgb n 18.905000 11.400000 m 18.905000 12.800000 l 21.322500 12.800000 l 21.322500 11.400000 l cp s gsave 19.155000 12.350000 translate 0.035278 -0.035278 scale start_ol 576 4416 moveto 1978 4416 lineto 3005 2042 lineto 4038 4416 lineto 5440 4416 lineto 5440 0 lineto 4416 0 lineto 4416 3224 lineto 3377 832 lineto 2639 832 lineto 1600 3224 lineto 1600 0 lineto 576 0 lineto 576 4416 lineto end_ol grestore gsave 19.949254 12.350000 translate 0.035278 -0.035278 scale start_ol 3584 4323 moveto 3584 3392 lineto 3229 3551 2891 3631 conicto 2553 3712 2252 3712 conicto 1853 3712 1662 3599 conicto 1472 3487 1472 3251 conicto 1472 3074 1602 2975 conicto 1733 2876 2077 2805 conicto 2558 2707 lineto 3288 2558 3596 2254 conicto 3904 1950 3904 1390 conicto 3904 654 3477 295 conicto 3051 -64 2175 -64 conicto 1761 -64 1344 16 conicto 928 97 512 255 conicto 512 1216 lineto 927 993 1314 880 conicto 1702 768 2062 768 conicto 2427 768 2621 892 conicto 2816 1017 2816 1248 conicto 2816 1456 2682 1568 conicto 2549 1681 2150 1770 conicto 1713 1869 lineto 1056 2012 752 2324 conicto 448 2637 448 3166 conicto 448 3830 866 4187 conicto 1284 4544 2068 4544 conicto 2425 4544 2802 4488 conicto 3180 4433 3584 4323 conicto end_ol grestore gsave 20.523714 12.350000 translate 0.035278 -0.035278 scale start_ol 576 4416 moveto 3648 4416 lineto 3648 3584 lineto 1728 3584 lineto 1728 2752 lineto 3520 2752 lineto 3520 1920 lineto 1728 1920 lineto 1728 832 lineto 3712 832 lineto 3712 0 lineto 576 0 lineto 576 4416 lineto end_ol grestore 1.000000 1.000000 1.000000 srgb n 18.905000 12.800000 m 18.905000 13.200000 l 21.322500 13.200000 l 21.322500 12.800000 l f 0.000000 0.000000 0.000000 srgb n 18.905000 12.800000 m 18.905000 13.200000 l 21.322500 13.200000 l 21.322500 12.800000 l cp s 1.000000 1.000000 1.000000 srgb n 18.905000 13.200000 m 18.905000 13.600000 l 21.322500 13.600000 l 21.322500 13.200000 l f 0.000000 0.000000 0.000000 srgb n 18.905000 13.200000 m 18.905000 13.600000 l 21.322500 13.600000 l 21.322500 13.200000 l cp s 0.100000 slw [] 0 sd 0 slj 0 slc n 10.780000 9.261803 m 10.780000 10.250000 l 5.672500 10.250000 l 5.672500 11.350000 l s 0 slj 1.000000 1.000000 1.000000 srgb n 11.180000 9.261803 m 10.780000 8.461803 l 10.380000 9.261803 l ef 0.100000 slw [] 0 sd 0 slj 0.000000 0.000000 0.000000 srgb n 11.180000 9.261803 m 10.780000 8.461803 l 10.380000 9.261803 l cp s 0.100000 slw [] 0 sd 0 slj 0 slc n 10.780000 9.261803 m 10.780000 10.250000 l 9.592500 10.250000 l 9.592500 11.410000 l s 0 slj 1.000000 1.000000 1.000000 srgb n 11.180000 9.261803 m 10.780000 8.461803 l 10.380000 9.261803 l ef 0.100000 slw [] 0 sd 0 slj 0.000000 0.000000 0.000000 srgb n 11.180000 9.261803 m 10.780000 8.461803 l 10.380000 9.261803 l cp s 0.100000 slw [] 0 sd 0 slj 0 slc n 10.780000 9.261803 m 10.780000 10.250000 l 0.981250 10.250000 l 0.981250 11.255000 l s 0 slj 1.000000 1.000000 1.000000 srgb n 11.180000 9.261803 m 10.780000 8.461803 l 10.380000 9.261803 l ef 0.100000 slw [] 0 sd 0 slj 0.000000 0.000000 0.000000 srgb n 11.180000 9.261803 m 10.780000 8.461803 l 10.380000 9.261803 l cp s 0.100000 slw [] 0 sd 0 slj 0 slc n 10.780000 9.261803 m 10.780000 10.250000 l 13.291250 10.250000 l 13.291250 11.399719 l s 0 slj 1.000000 1.000000 1.000000 srgb n 11.180000 9.261803 m 10.780000 8.461803 l 10.380000 9.261803 l ef 0.100000 slw [] 0 sd 0 slj 0.000000 0.000000 0.000000 srgb n 11.180000 9.261803 m 10.780000 8.461803 l 10.380000 9.261803 l cp s 0.100000 slw [] 0 sd 0 slj 0 slc n 10.780000 9.261803 m 10.780000 10.250000 l 17.251250 10.250000 l 17.251250 11.400000 l s 0 slj 1.000000 1.000000 1.000000 srgb n 11.180000 9.261803 m 10.780000 8.461803 l 10.380000 9.261803 l ef 0.100000 slw [] 0 sd 0 slj 0.000000 0.000000 0.000000 srgb n 11.180000 9.261803 m 10.780000 8.461803 l 10.380000 9.261803 l cp s 0.100000 slw [] 0 sd 0 slj 0 slc n 10.780000 9.261803 m 10.780000 10.250000 l 20.113750 10.250000 l 20.113750 11.400000 l s 0 slj 1.000000 1.000000 1.000000 srgb n 11.180000 9.261803 m 10.780000 8.461803 l 10.380000 9.261803 l ef 0.100000 slw [] 0 sd 0 slj 0.000000 0.000000 0.000000 srgb n 11.180000 9.261803 m 10.780000 8.461803 l 10.380000 9.261803 l cp s 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb n 65.666612 -1.508383 m 65.666612 -0.108383 l 74.191612 -0.108383 l 74.191612 -1.508383 l f 0.000000 0.000000 0.000000 srgb n 65.666612 -1.508383 m 65.666612 -0.108383 l 74.191612 -0.108383 l 74.191612 -1.508383 l cp s gsave 65.916612 -0.558383 translate 0.035278 -0.035278 scale start_ol 576 4416 moveto 3648 4416 lineto 3648 3584 lineto 1728 3584 lineto 1728 2752 lineto 3520 2752 lineto 3520 1920 lineto 1728 1920 lineto 1728 832 lineto 3712 832 lineto 3712 0 lineto 576 0 lineto 576 4416 lineto end_ol grestore gsave 66.463597 -0.558383 translate 0.035278 -0.035278 scale start_ol 512 1320 moveto 512 3264 lineto 1536 3264 lineto 1536 2946 lineto 1536 2687 1533 2296 conicto 1530 1905 1530 1775 conicto 1530 1391 1552 1221 conicto 1574 1052 1627 976 conicto 1696 876 1807 822 conicto 1919 768 2063 768 conicto 2415 768 2615 1012 conicto 2816 1257 2816 1692 conicto 2816 3264 lineto 3840 3264 lineto 3840 0 lineto 2816 0 lineto 2816 512 lineto 2573 216 2301 76 conicto 2030 -64 1703 -64 conicto 1121 -64 816 290 conicto 512 644 512 1320 conicto end_ol grestore gsave 67.033063 -0.558383 translate 0.035278 -0.035278 scale start_ol 3136 3136 moveto 3136 2304 lineto 2924 2467 2710 2545 conicto 2496 2624 2266 2624 conicto 1830 2624 1587 2371 conicto 1344 2118 1344 1664 conicto 1344 1210 1587 957 conicto 1830 704 2266 704 conicto 2511 704 2730 785 conicto 2950 866 3136 1024 conicto 3136 192 lineto 2891 64 2639 0 conicto 2388 -64 2134 -64 conicto 1252 -64 754 393 conicto 256 850 256 1664 conicto 256 2478 754 2935 conicto 1252 3392 2134 3392 conicto 2391 3392 2639 3328 conicto 2888 3264 3136 3136 conicto end_ol grestore gsave 67.507618 -0.558383 translate 0.035278 -0.035278 scale start_ol 512 4544 moveto 1536 4544 lineto 1536 0 lineto 512 0 lineto 512 4544 lineto end_ol grestore gsave 67.782354 -0.558383 translate 0.035278 -0.035278 scale start_ol 512 3264 moveto 1536 3264 lineto 1536 0 lineto 512 0 lineto 512 3264 lineto 512 4544 moveto 1536 4544 lineto 1536 3648 lineto 512 3648 lineto 512 4544 lineto end_ol grestore gsave 68.057091 -0.558383 translate 0.035278 -0.035278 scale start_ol 2752 2816 moveto 2752 4544 lineto 3776 4544 lineto 3776 0 lineto 2752 0 lineto 2752 512 lineto 2533 213 2269 74 conicto 2005 -64 1658 -64 conicto 1045 -64 650 419 conicto 256 903 256 1664 conicto 256 2425 650 2908 conicto 1045 3392 1658 3392 conicto 2002 3392 2267 3252 conicto 2533 3112 2752 2816 conicto 2047 704 moveto 2390 704 2571 950 conicto 2752 1196 2752 1664 conicto 2752 2132 2571 2378 conicto 2390 2624 2047 2624 conicto 1706 2624 1525 2378 conicto 1344 2132 1344 1664 conicto 1344 1196 1525 950 conicto 1706 704 2047 704 conicto end_ol grestore gsave 68.629054 -0.558383 translate 0.035278 -0.035278 scale start_ol 512 3264 moveto 1536 3264 lineto 1536 0 lineto 512 0 lineto 512 3264 lineto 512 4544 moveto 1536 4544 lineto 1536 3648 lineto 512 3648 lineto 512 4544 lineto end_ol grestore gsave 68.903791 -0.558383 translate 0.035278 -0.035278 scale start_ol 1981 1472 moveto 1632 1472 1456 1365 conicto 1280 1258 1280 1049 conicto 1280 857 1421 748 conicto 1563 640 1816 640 conicto 2130 640 2345 844 conicto 2560 1049 2560 1356 conicto 2560 1472 lineto 1981 1472 lineto 3584 1878 moveto 3584 0 lineto 2560 0 lineto 2560 512 lineto 2345 211 2076 73 conicto 1808 -64 1423 -64 conicto 904 -64 580 232 conicto 256 528 256 1001 conicto 256 1575 654 1843 conicto 1052 2112 1903 2112 conicto 2560 2112 lineto 2560 2202 lineto 2560 2454 2363 2571 conicto 2166 2688 1748 2688 conicto 1409 2688 1117 2624 conicto 826 2560 576 2432 conicto 576 3264 lineto 906 3327 1238 3359 conicto 1571 3392 1903 3392 conicto 2793 3392 3188 3036 conicto 3584 2680 3584 1878 conicto end_ol grestore gsave 69.443284 -0.558383 translate 0.035278 -0.035278 scale start_ol 3840 1991 moveto 3840 0 lineto 2816 0 lineto 2816 324 lineto 2816 1524 lineto 2816 1947 2795 2107 conicto 2775 2268 2725 2344 conicto 2659 2446 2546 2503 conicto 2433 2560 2289 2560 conicto 1938 2560 1737 2307 conicto 1536 2055 1536 1608 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2816 lineto 1779 3112 2052 3252 conicto 2325 3392 2655 3392 conicto 3237 3392 3538 3033 conicto 3840 2675 3840 1991 conicto end_ol grestore gsave 70.012751 -0.558383 translate 0.035278 -0.035278 scale start_ol 1728 3584 moveto 1728 832 lineto 2125 832 lineto 2804 832 3162 1185 conicto 3520 1539 3520 2213 conicto 3520 2883 3163 3233 conicto 2807 3584 2125 3584 conicto 1728 3584 lineto 576 4416 moveto 1788 4416 lineto 2770 4416 3250 4272 conicto 3731 4129 4074 3786 conicto 4378 3487 4525 3096 conicto 4672 2706 4672 2212 conicto 4672 1713 4525 1321 conicto 4378 929 4074 630 conicto 3728 287 3243 143 conicto 2758 0 1788 0 conicto 576 0 lineto 576 4416 lineto end_ol grestore gsave 70.677128 -0.558383 translate 0.035278 -0.035278 scale start_ol 512 3264 moveto 1536 3264 lineto 1536 0 lineto 512 0 lineto 512 3264 lineto 512 4544 moveto 1536 4544 lineto 1536 3648 lineto 512 3648 lineto 512 4544 lineto end_ol grestore gsave 70.951864 -0.558383 translate 0.035278 -0.035278 scale start_ol 3136 3200 moveto 3136 2432 lineto 2794 2560 2476 2624 conicto 2159 2688 1877 2688 conicto 1574 2688 1427 2616 conicto 1280 2544 1280 2395 conicto 1280 2274 1393 2209 conicto 1507 2145 1800 2114 conicto 1990 2088 lineto 2781 1984 3054 1746 conicto 3328 1509 3328 1002 conicto 3328 470 2939 203 conicto 2550 -64 1778 -64 conicto 1451 -64 1101 0 conicto 752 64 384 192 conicto 384 960 lineto 706 800 1045 720 conicto 1384 640 1733 640 conicto 2049 640 2208 727 conicto 2368 814 2368 986 conicto 2368 1130 2257 1200 conicto 2147 1271 1818 1310 conicto 1628 1334 lineto 903 1421 611 1657 conicto 320 1893 320 2373 conicto 320 2891 685 3141 conicto 1050 3392 1804 3392 conicto 2101 3392 2427 3345 conicto 2753 3299 3136 3200 conicto end_ol grestore gsave 71.426419 -0.558383 translate 0.035278 -0.035278 scale start_ol 1600 4224 moveto 1600 3264 lineto 2688 3264 lineto 2688 2496 lineto 1600 2496 lineto 1600 1146 lineto 1600 924 1694 846 conicto 1788 768 2067 768 conicto 2624 768 lineto 2624 0 lineto 1694 0 lineto 1085 0 830 260 conicto 576 521 576 1146 conicto 576 2496 lineto 64 2496 lineto 64 3264 lineto 576 3264 lineto 576 4224 lineto 1600 4224 lineto end_ol grestore gsave 71.808560 -0.558383 translate 0.035278 -0.035278 scale start_ol 1981 1472 moveto 1632 1472 1456 1365 conicto 1280 1258 1280 1049 conicto 1280 857 1421 748 conicto 1563 640 1816 640 conicto 2130 640 2345 844 conicto 2560 1049 2560 1356 conicto 2560 1472 lineto 1981 1472 lineto 3584 1878 moveto 3584 0 lineto 2560 0 lineto 2560 512 lineto 2345 211 2076 73 conicto 1808 -64 1423 -64 conicto 904 -64 580 232 conicto 256 528 256 1001 conicto 256 1575 654 1843 conicto 1052 2112 1903 2112 conicto 2560 2112 lineto 2560 2202 lineto 2560 2454 2363 2571 conicto 2166 2688 1748 2688 conicto 1409 2688 1117 2624 conicto 826 2560 576 2432 conicto 576 3264 lineto 906 3327 1238 3359 conicto 1571 3392 1903 3392 conicto 2793 3392 3188 3036 conicto 3584 2680 3584 1878 conicto end_ol grestore gsave 72.348054 -0.558383 translate 0.035278 -0.035278 scale start_ol 3840 1991 moveto 3840 0 lineto 2816 0 lineto 2816 324 lineto 2816 1524 lineto 2816 1947 2795 2107 conicto 2775 2268 2725 2344 conicto 2659 2446 2546 2503 conicto 2433 2560 2289 2560 conicto 1938 2560 1737 2307 conicto 1536 2055 1536 1608 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2816 lineto 1779 3112 2052 3252 conicto 2325 3392 2655 3392 conicto 3237 3392 3538 3033 conicto 3840 2675 3840 1991 conicto end_ol grestore gsave 72.917520 -0.558383 translate 0.035278 -0.035278 scale start_ol 3136 3136 moveto 3136 2304 lineto 2924 2467 2710 2545 conicto 2496 2624 2266 2624 conicto 1830 2624 1587 2371 conicto 1344 2118 1344 1664 conicto 1344 1210 1587 957 conicto 1830 704 2266 704 conicto 2511 704 2730 785 conicto 2950 866 3136 1024 conicto 3136 192 lineto 2891 64 2639 0 conicto 2388 -64 2134 -64 conicto 1252 -64 754 393 conicto 256 850 256 1664 conicto 256 2478 754 2935 conicto 1252 3392 2134 3392 conicto 2391 3392 2639 3328 conicto 2888 3264 3136 3136 conicto end_ol grestore gsave 73.392075 -0.558383 translate 0.035278 -0.035278 scale start_ol 3776 1703 moveto 3776 1408 lineto 1280 1408 lineto 1319 1024 1554 832 conicto 1790 640 2213 640 conicto 2555 640 2912 735 conicto 3270 831 3648 1024 conicto 3648 192 lineto 3273 65 2898 0 conicto 2523 -64 2148 -64 conicto 1251 -64 753 390 conicto 256 844 256 1664 conicto 256 2469 740 2930 conicto 1225 3392 2075 3392 conicto 2848 3392 3312 2932 conicto 3776 2472 3776 1703 conicto 2752 2048 moveto 2752 2336 2565 2512 conicto 2379 2688 2077 2688 conicto 1751 2688 1547 2523 conicto 1343 2358 1293 2048 conicto 2752 2048 lineto end_ol grestore 1.000000 1.000000 1.000000 srgb n 65.666612 -0.108383 m 65.666612 0.291617 l 74.191612 0.291617 l 74.191612 -0.108383 l f 0.000000 0.000000 0.000000 srgb n 65.666612 -0.108383 m 65.666612 0.291617 l 74.191612 0.291617 l 74.191612 -0.108383 l cp s 1.000000 1.000000 1.000000 srgb n 65.666612 0.291617 m 65.666612 0.691617 l 74.191612 0.691617 l 74.191612 0.291617 l f 0.000000 0.000000 0.000000 srgb n 65.666612 0.291617 m 65.666612 0.691617 l 74.191612 0.691617 l 74.191612 0.291617 l cp s 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb n 65.666612 3.977184 m 65.666612 5.377184 l 69.826612 5.377184 l 69.826612 3.977184 l f 0.000000 0.000000 0.000000 srgb n 65.666612 3.977184 m 65.666612 5.377184 l 69.826612 5.377184 l 69.826612 3.977184 l cp s gsave 65.916612 4.927184 translate 0.035278 -0.035278 scale start_ol 576 4416 moveto 2455 4416 lineto 3279 4416 3719 4042 conicto 4160 3669 4160 2977 conicto 4160 2283 3719 1909 conicto 3279 1536 2455 1536 conicto 1728 1536 lineto 1728 0 lineto 576 0 lineto 576 4416 lineto 1728 3584 moveto 1728 2368 lineto 2338 2368 lineto 2659 2368 2833 2527 conicto 3008 2686 3008 2977 conicto 3008 3269 2833 3426 conicto 2659 3584 2338 3584 conicto 1728 3584 lineto end_ol grestore gsave 66.503557 4.927184 translate 0.035278 -0.035278 scale start_ol 3776 1703 moveto 3776 1408 lineto 1280 1408 lineto 1319 1024 1554 832 conicto 1790 640 2213 640 conicto 2555 640 2912 735 conicto 3270 831 3648 1024 conicto 3648 192 lineto 3273 65 2898 0 conicto 2523 -64 2148 -64 conicto 1251 -64 753 390 conicto 256 844 256 1664 conicto 256 2469 740 2930 conicto 1225 3392 2075 3392 conicto 2848 3392 3312 2932 conicto 3776 2472 3776 1703 conicto 2752 2048 moveto 2752 2336 2565 2512 conicto 2379 2688 2077 2688 conicto 1751 2688 1547 2523 conicto 1343 2358 1293 2048 conicto 2752 2048 lineto end_ol grestore gsave 67.045548 4.927184 translate 0.035278 -0.035278 scale start_ol 1981 1472 moveto 1632 1472 1456 1365 conicto 1280 1258 1280 1049 conicto 1280 857 1421 748 conicto 1563 640 1816 640 conicto 2130 640 2345 844 conicto 2560 1049 2560 1356 conicto 2560 1472 lineto 1981 1472 lineto 3584 1878 moveto 3584 0 lineto 2560 0 lineto 2560 512 lineto 2345 211 2076 73 conicto 1808 -64 1423 -64 conicto 904 -64 580 232 conicto 256 528 256 1001 conicto 256 1575 654 1843 conicto 1052 2112 1903 2112 conicto 2560 2112 lineto 2560 2202 lineto 2560 2454 2363 2571 conicto 2166 2688 1748 2688 conicto 1409 2688 1117 2624 conicto 826 2560 576 2432 conicto 576 3264 lineto 906 3327 1238 3359 conicto 1571 3392 1903 3392 conicto 2793 3392 3188 3036 conicto 3584 2680 3584 1878 conicto end_ol grestore gsave 67.585041 4.927184 translate 0.035278 -0.035278 scale start_ol 2944 2432 moveto 2804 2497 2666 2528 conicto 2528 2560 2389 2560 conicto 1979 2560 1757 2296 conicto 1536 2032 1536 1540 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2752 lineto 1741 3086 2007 3239 conicto 2273 3392 2644 3392 conicto 2697 3392 2759 3385 conicto 2822 3378 2941 3354 conicto 2944 2432 lineto end_ol grestore gsave 67.979667 4.927184 translate 0.035278 -0.035278 scale start_ol 3136 3200 moveto 3136 2432 lineto 2794 2560 2476 2624 conicto 2159 2688 1877 2688 conicto 1574 2688 1427 2616 conicto 1280 2544 1280 2395 conicto 1280 2274 1393 2209 conicto 1507 2145 1800 2114 conicto 1990 2088 lineto 2781 1984 3054 1746 conicto 3328 1509 3328 1002 conicto 3328 470 2939 203 conicto 2550 -64 1778 -64 conicto 1451 -64 1101 0 conicto 752 64 384 192 conicto 384 960 lineto 706 800 1045 720 conicto 1384 640 1733 640 conicto 2049 640 2208 727 conicto 2368 814 2368 986 conicto 2368 1130 2257 1200 conicto 2147 1271 1818 1310 conicto 1628 1334 lineto 903 1421 611 1657 conicto 320 1893 320 2373 conicto 320 2891 685 3141 conicto 1050 3392 1804 3392 conicto 2101 3392 2427 3345 conicto 2753 3299 3136 3200 conicto end_ol grestore gsave 68.454222 4.927184 translate 0.035278 -0.035278 scale start_ol 2085 2624 moveto 1723 2624 1533 2377 conicto 1344 2130 1344 1664 conicto 1344 1198 1533 951 conicto 1723 704 2085 704 conicto 2440 704 2628 951 conicto 2816 1198 2816 1664 conicto 2816 2130 2628 2377 conicto 2440 2624 2085 2624 conicto 2084 3392 moveto 2941 3392 3422 2933 conicto 3904 2475 3904 1664 conicto 3904 853 3422 394 conicto 2941 -64 2084 -64 conicto 1225 -64 740 394 conicto 256 853 256 1664 conicto 256 2475 740 2933 conicto 1225 3392 2084 3392 conicto end_ol grestore gsave 69.003704 4.927184 translate 0.035278 -0.035278 scale start_ol 3840 1991 moveto 3840 0 lineto 2816 0 lineto 2816 324 lineto 2816 1524 lineto 2816 1947 2795 2107 conicto 2775 2268 2725 2344 conicto 2659 2446 2546 2503 conicto 2433 2560 2289 2560 conicto 1938 2560 1737 2307 conicto 1536 2055 1536 1608 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2816 lineto 1779 3112 2052 3252 conicto 2325 3392 2655 3392 conicto 3237 3392 3538 3033 conicto 3840 2675 3840 1991 conicto end_ol grestore 1.000000 1.000000 1.000000 srgb n 65.666612 5.377184 m 65.666612 5.777184 l 69.826612 5.777184 l 69.826612 5.377184 l f 0.000000 0.000000 0.000000 srgb n 65.666612 5.377184 m 65.666612 5.777184 l 69.826612 5.777184 l 69.826612 5.377184 l cp s 1.000000 1.000000 1.000000 srgb n 65.666612 5.777184 m 65.666612 6.177184 l 69.826612 6.177184 l 69.826612 5.777184 l f 0.000000 0.000000 0.000000 srgb n 65.666612 5.777184 m 65.666612 6.177184 l 69.826612 6.177184 l 69.826612 5.777184 l cp s 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb n 59.408613 -6.397723 m 59.408613 -4.997723 l 68.116113 -4.997723 l 68.116113 -6.397723 l f 0.000000 0.000000 0.000000 srgb n 59.408613 -6.397723 m 59.408613 -4.997723 l 68.116113 -4.997723 l 68.116113 -6.397723 l cp s gsave 59.658613 -5.447723 translate 0.035278 -0.035278 scale start_ol 4017 4352 moveto 3835 3392 lineto 3505 3553 3183 3632 conicto 2862 3712 2555 3712 conicto 2134 3712 1899 3579 conicto 1664 3446 1664 3210 conicto 1664 3059 1765 2975 conicto 1866 2891 2181 2811 conicto 2630 2695 lineto 3222 2546 3499 2264 conicto 3776 1983 3776 1536 conicto 3776 812 3224 374 conicto 2672 -64 1758 -64 conicto 1332 -64 910 16 conicto 489 97 86 256 conicto 265 1216 lineto 656 991 1024 879 conicto 1393 768 1752 768 conicto 2139 768 2381 928 conicto 2624 1088 2624 1337 conicto 2624 1500 2519 1590 conicto 2414 1681 2059 1776 conicto 1610 1892 lineto 1087 2020 831 2297 conicto 576 2574 576 3014 conicto 576 3708 1102 4126 conicto 1629 4544 2519 4544 conicto 2876 4544 3252 4496 conicto 3628 4448 4017 4352 conicto end_ol grestore gsave 60.233073 -5.447723 translate 0.035278 -0.035278 scale start_ol 832 3264 moveto 1899 3264 lineto 1256 0 lineto 192 0 lineto 832 3264 lineto 1088 4544 moveto 2146 4544 lineto 1978 3648 lineto 896 3648 lineto 1088 4544 lineto end_ol grestore gsave 60.507810 -5.447723 translate 0.035278 -0.035278 scale start_ol 3776 2725 moveto 4023 3048 4337 3220 conicto 4651 3392 4991 3392 conicto 5437 3392 5694 3143 conicto 5952 2895 5952 2461 conicto 5952 2371 5938 2255 conicto 5925 2139 5899 1991 conicto 5504 0 lineto 4428 0 lineto 4765 1705 lineto 4774 1749 lineto 4852 2111 4852 2213 conicto 4852 2373 4759 2466 conicto 4666 2560 4506 2560 conicto 4201 2560 3989 2313 conicto 3778 2066 3686 1608 conicto 3392 0 lineto 2320 0 lineto 2661 1705 lineto 2706 1924 2724 2036 conicto 2742 2149 2742 2213 conicto 2742 2376 2650 2468 conicto 2558 2560 2394 2560 conicto 2100 2560 1878 2304 conicto 1657 2049 1571 1608 conicto 1251 0 lineto 192 0 lineto 832 3264 lineto 1901 3264 lineto 1803 2789 lineto 2048 3089 2325 3240 conicto 2603 3392 2903 3392 conicto 3242 3392 3484 3205 conicto 3726 3019 3776 2725 conicto end_ol grestore gsave 61.339528 -5.447723 translate 0.035278 -0.035278 scale start_ol 832 3264 moveto 1899 3264 lineto 1256 0 lineto 192 0 lineto 832 3264 lineto 1088 4544 moveto 2146 4544 lineto 1978 3648 lineto 896 3648 lineto 1088 4544 lineto end_ol grestore gsave 61.614264 -5.447723 translate 0.035278 -0.035278 scale start_ol 1088 4544 moveto 2146 4544 lineto 1256 0 lineto 192 0 lineto 1088 4544 lineto end_ol grestore gsave 61.889001 -5.447723 translate 0.035278 -0.035278 scale start_ol 2014 1472 moveto 1619 1472 1417 1355 conicto 1216 1238 1216 1009 conicto 1216 837 1335 738 conicto 1454 640 1663 640 conicto 1987 640 2204 827 conicto 2422 1015 2496 1356 conicto 2520 1472 lineto 2014 1472 lineto 3659 1878 moveto 3291 0 lineto 2237 0 lineto 2326 508 lineto 2066 215 1777 75 conicto 1488 -64 1149 -64 conicto 680 -64 404 176 conicto 128 417 128 826 conicto 128 1450 616 1781 conicto 1105 2112 2025 2112 conicto 2646 2112 lineto 2658 2202 lineto 2667 2243 2668 2261 conicto 2670 2279 2670 2294 conicto 2670 2489 2485 2588 conicto 2300 2688 1936 2688 conicto 1607 2688 1299 2624 conicto 991 2560 704 2432 conicto 867 3264 lineto 1198 3327 1544 3359 conicto 1891 3392 2263 3392 conicto 2998 3392 3355 3137 conicto 3712 2882 3712 2361 conicto 3712 2259 3698 2138 conicto 3685 2018 3659 1878 conicto end_ol grestore gsave 62.428495 -5.447723 translate 0.035278 -0.035278 scale start_ol 3081 2432 moveto 2973 2495 2842 2527 conicto 2711 2560 2560 2560 conicto 2160 2560 1896 2297 conicto 1633 2035 1540 1540 conicto 1243 0 lineto 192 0 lineto 832 3264 lineto 1881 3264 lineto 1767 2748 lineto 1974 3060 2284 3226 conicto 2594 3392 2973 3392 conicto 3028 3392 3098 3382 conicto 3168 3373 3264 3354 conicto 3081 2432 lineto end_ol grestore gsave 62.823121 -5.447723 translate 0.035278 -0.035278 scale start_ol 832 3264 moveto 1899 3264 lineto 1256 0 lineto 192 0 lineto 832 3264 lineto 1088 4544 moveto 2146 4544 lineto 1978 3648 lineto 896 3648 lineto 1088 4544 lineto end_ol grestore gsave 63.097857 -5.447723 translate 0.035278 -0.035278 scale start_ol 2143 4224 moveto 1964 3264 lineto 3039 3264 lineto 2889 2496 lineto 1814 2496 lineto 1544 1149 lineto 1532 1104 1527 1072 conicto 1523 1041 1523 1013 conicto 1523 882 1612 825 conicto 1702 768 1914 768 conicto 2457 768 lineto 2308 0 lineto 1423 0 lineto 947 0 697 200 conicto 448 401 448 778 conicto 448 860 457 954 conicto 466 1049 483 1146 conicto 754 2496 lineto 246 2496 lineto 384 3264 lineto 903 3264 lineto 1085 4224 lineto 2143 4224 lineto end_ol grestore gsave 63.479998 -5.447723 translate 0.035278 -0.035278 scale start_ol 399 3264 moveto 1398 3264 lineto 1854 1003 lineto 3028 3264 lineto 4160 3264 lineto 2064 -284 lineto 1712 -898 1413 -1089 conicto 1115 -1280 642 -1280 conicto 0 -1280 lineto 109 -576 lineto 443 -576 lineto 703 -576 847 -494 conicto 991 -412 1103 -206 conicto 1200 -32 lineto 399 3264 lineto end_ol grestore gsave 64.002005 -5.447723 translate 0.035278 -0.035278 scale start_ol 960 4416 moveto 2374 4416 lineto 2948 2070 lineto 4436 4416 lineto 5888 4416 lineto 5056 0 lineto 3965 0 lineto 4602 3259 lineto 3053 849 lineto 2434 849 lineto 1818 3259 lineto 1181 0 lineto 128 0 lineto 960 4416 lineto end_ol grestore gsave 64.796259 -5.447723 translate 0.035278 -0.035278 scale start_ol 3774 1573 moveto 3739 1408 lineto 1286 1408 lineto 1286 1390 1283 1355 conicto 1280 1320 1280 1301 conicto 1280 969 1472 804 conicto 1664 640 2048 640 conicto 2379 640 2747 736 conicto 3115 833 3520 1024 conicto 3361 192 lineto 2973 63 2590 0 conicto 2207 -64 1811 -64 conicto 1035 -64 613 291 conicto 192 647 192 1297 conicto 192 1673 326 2027 conicto 460 2381 717 2675 conicto 1021 3028 1444 3210 conicto 1867 3392 2383 3392 conicto 3053 3392 3446 3042 conicto 3840 2692 3840 2099 conicto 3840 1984 3824 1855 conicto 3808 1726 3774 1573 conicto 2798 2048 moveto 2807 2085 2811 2123 conicto 2816 2161 2816 2197 conicto 2816 2423 2674 2555 conicto 2533 2688 2290 2688 conicto 1980 2688 1763 2526 conicto 1546 2364 1431 2048 conicto 2798 2048 lineto end_ol grestore gsave 65.338250 -5.447723 translate 0.035278 -0.035278 scale start_ol 2014 1472 moveto 1619 1472 1417 1355 conicto 1216 1238 1216 1009 conicto 1216 837 1335 738 conicto 1454 640 1663 640 conicto 1987 640 2204 827 conicto 2422 1015 2496 1356 conicto 2520 1472 lineto 2014 1472 lineto 3659 1878 moveto 3291 0 lineto 2237 0 lineto 2326 508 lineto 2066 215 1777 75 conicto 1488 -64 1149 -64 conicto 680 -64 404 176 conicto 128 417 128 826 conicto 128 1450 616 1781 conicto 1105 2112 2025 2112 conicto 2646 2112 lineto 2658 2202 lineto 2667 2243 2668 2261 conicto 2670 2279 2670 2294 conicto 2670 2489 2485 2588 conicto 2300 2688 1936 2688 conicto 1607 2688 1299 2624 conicto 991 2560 704 2432 conicto 867 3264 lineto 1198 3327 1544 3359 conicto 1891 3392 2263 3392 conicto 2998 3392 3355 3137 conicto 3712 2882 3712 2361 conicto 3712 2259 3698 2138 conicto 3685 2018 3659 1878 conicto end_ol grestore gsave 65.877744 -5.447723 translate 0.035278 -0.035278 scale start_ol 3394 3200 moveto 3238 2368 lineto 2932 2525 2628 2606 conicto 2324 2688 2053 2688 conicto 1744 2688 1576 2604 conicto 1408 2521 1408 2367 conicto 1408 2276 1499 2221 conicto 1591 2167 1861 2106 conicto 2047 2071 lineto 2687 1937 2943 1726 conicto 3200 1515 3200 1140 conicto 3200 573 2747 254 conicto 2294 -64 1486 -64 conicto 1148 -64 795 -16 conicto 443 32 76 128 conicto 234 960 lineto 519 801 844 720 conicto 1169 640 1509 640 conicto 1841 640 2008 716 conicto 2176 793 2176 941 conicto 2176 1044 2084 1100 conicto 1993 1157 1706 1217 conicto 1520 1252 lineto 942 1370 695 1601 conicto 448 1832 448 2241 conicto 448 2794 866 3093 conicto 1284 3392 2061 3392 conicto 2401 3392 2730 3344 conicto 3060 3296 3394 3200 conicto end_ol grestore gsave 66.352299 -5.447723 translate 0.035278 -0.035278 scale start_ol 433 1315 moveto 832 3264 lineto 1869 3264 lineto 1543 1603 lineto 1509 1441 1491 1327 conicto 1474 1213 1474 1147 conicto 1474 967 1575 867 conicto 1676 768 1864 768 conicto 2185 768 2416 1013 conicto 2647 1258 2734 1694 conicto 3046 3264 lineto 4096 3264 lineto 3456 0 lineto 2413 0 lineto 2508 516 lineto 2239 224 1944 80 conicto 1649 -64 1322 -64 conicto 875 -64 629 176 conicto 384 416 384 855 conicto 384 959 396 1074 conicto 409 1190 433 1315 conicto end_ol grestore gsave 66.921765 -5.447723 translate 0.035278 -0.035278 scale start_ol 3081 2432 moveto 2973 2495 2842 2527 conicto 2711 2560 2560 2560 conicto 2160 2560 1896 2297 conicto 1633 2035 1540 1540 conicto 1243 0 lineto 192 0 lineto 832 3264 lineto 1881 3264 lineto 1767 2748 lineto 1974 3060 2284 3226 conicto 2594 3392 2973 3392 conicto 3028 3392 3098 3382 conicto 3168 3373 3264 3354 conicto 3081 2432 lineto end_ol grestore gsave 67.316391 -5.447723 translate 0.035278 -0.035278 scale start_ol 3774 1573 moveto 3739 1408 lineto 1286 1408 lineto 1286 1390 1283 1355 conicto 1280 1320 1280 1301 conicto 1280 969 1472 804 conicto 1664 640 2048 640 conicto 2379 640 2747 736 conicto 3115 833 3520 1024 conicto 3361 192 lineto 2973 63 2590 0 conicto 2207 -64 1811 -64 conicto 1035 -64 613 291 conicto 192 647 192 1297 conicto 192 1673 326 2027 conicto 460 2381 717 2675 conicto 1021 3028 1444 3210 conicto 1867 3392 2383 3392 conicto 3053 3392 3446 3042 conicto 3840 2692 3840 2099 conicto 3840 1984 3824 1855 conicto 3808 1726 3774 1573 conicto 2798 2048 moveto 2807 2085 2811 2123 conicto 2816 2161 2816 2197 conicto 2816 2423 2674 2555 conicto 2533 2688 2290 2688 conicto 1980 2688 1763 2526 conicto 1546 2364 1431 2048 conicto 2798 2048 lineto end_ol grestore 1.000000 1.000000 1.000000 srgb n 59.408613 -4.997723 m 59.408613 -4.597723 l 68.116113 -4.597723 l 68.116113 -4.997723 l f 0.000000 0.000000 0.000000 srgb n 59.408613 -4.997723 m 59.408613 -4.597723 l 68.116113 -4.597723 l 68.116113 -4.997723 l cp s 1.000000 1.000000 1.000000 srgb n 59.408613 -4.597723 m 59.408613 -4.197723 l 68.116113 -4.197723 l 68.116113 -4.597723 l f 0.000000 0.000000 0.000000 srgb n 59.408613 -4.597723 m 59.408613 -4.197723 l 68.116113 -4.197723 l 68.116113 -4.597723 l cp s 1.000000 1.000000 1.000000 srgb n 65.816113 -6.497723 m 65.816113 -6.097723 l 68.516113 -6.097723 l 68.516113 -6.497723 l f [0.300000] 0 sd [0.300000] 0 sd 0.000000 0.000000 0.000000 srgb n 65.816113 -6.497723 m 65.816113 -6.097723 l 68.516113 -6.097723 l 68.516113 -6.497723 l cp s 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb n 65.666612 1.234400 m 65.666612 2.634400 l 69.166612 2.634400 l 69.166612 1.234400 l f 0.000000 0.000000 0.000000 srgb n 65.666612 1.234400 m 65.666612 2.634400 l 69.166612 2.634400 l 69.166612 1.234400 l cp s gsave 65.916612 2.184400 translate 0.035278 -0.035278 scale start_ol 4032 267 moveto 3722 103 3386 19 conicto 3050 -64 2685 -64 conicto 1594 -64 957 556 conicto 320 1177 320 2239 conicto 320 3303 957 3923 conicto 1594 4544 2685 4544 conicto 3050 4544 3386 4460 conicto 3722 4377 4032 4213 conicto 4032 3328 lineto 3718 3527 3412 3619 conicto 3107 3712 2770 3712 conicto 2165 3712 1818 3320 conicto 1472 2928 1472 2239 conicto 1472 1552 1818 1160 conicto 2165 768 2770 768 conicto 3107 768 3412 860 conicto 3718 953 4032 1152 conicto 4032 267 lineto end_ol grestore gsave 66.503557 2.184400 translate 0.035278 -0.035278 scale start_ol 2085 2624 moveto 1723 2624 1533 2377 conicto 1344 2130 1344 1664 conicto 1344 1198 1533 951 conicto 1723 704 2085 704 conicto 2440 704 2628 951 conicto 2816 1198 2816 1664 conicto 2816 2130 2628 2377 conicto 2440 2624 2085 2624 conicto 2084 3392 moveto 2941 3392 3422 2933 conicto 3904 2475 3904 1664 conicto 3904 853 3422 394 conicto 2941 -64 2084 -64 conicto 1225 -64 740 394 conicto 256 853 256 1664 conicto 256 2475 740 2933 conicto 1225 3392 2084 3392 conicto end_ol grestore gsave 67.053039 2.184400 translate 0.035278 -0.035278 scale start_ol 3136 3200 moveto 3136 2432 lineto 2794 2560 2476 2624 conicto 2159 2688 1877 2688 conicto 1574 2688 1427 2616 conicto 1280 2544 1280 2395 conicto 1280 2274 1393 2209 conicto 1507 2145 1800 2114 conicto 1990 2088 lineto 2781 1984 3054 1746 conicto 3328 1509 3328 1002 conicto 3328 470 2939 203 conicto 2550 -64 1778 -64 conicto 1451 -64 1101 0 conicto 752 64 384 192 conicto 384 960 lineto 706 800 1045 720 conicto 1384 640 1733 640 conicto 2049 640 2208 727 conicto 2368 814 2368 986 conicto 2368 1130 2257 1200 conicto 2147 1271 1818 1310 conicto 1628 1334 lineto 903 1421 611 1657 conicto 320 1893 320 2373 conicto 320 2891 685 3141 conicto 1050 3392 1804 3392 conicto 2101 3392 2427 3345 conicto 2753 3299 3136 3200 conicto end_ol grestore gsave 67.527594 2.184400 translate 0.035278 -0.035278 scale start_ol 512 3264 moveto 1536 3264 lineto 1536 0 lineto 512 0 lineto 512 3264 lineto 512 4544 moveto 1536 4544 lineto 1536 3648 lineto 512 3648 lineto 512 4544 lineto end_ol grestore gsave 67.802330 2.184400 translate 0.035278 -0.035278 scale start_ol 3840 1991 moveto 3840 0 lineto 2816 0 lineto 2816 324 lineto 2816 1524 lineto 2816 1947 2795 2107 conicto 2775 2268 2725 2344 conicto 2659 2446 2546 2503 conicto 2433 2560 2289 2560 conicto 1938 2560 1737 2307 conicto 1536 2055 1536 1608 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2816 lineto 1779 3112 2052 3252 conicto 2325 3392 2655 3392 conicto 3237 3392 3538 3033 conicto 3840 2675 3840 1991 conicto end_ol grestore gsave 68.371796 2.184400 translate 0.035278 -0.035278 scale start_ol 3776 1703 moveto 3776 1408 lineto 1280 1408 lineto 1319 1024 1554 832 conicto 1790 640 2213 640 conicto 2555 640 2912 735 conicto 3270 831 3648 1024 conicto 3648 192 lineto 3273 65 2898 0 conicto 2523 -64 2148 -64 conicto 1251 -64 753 390 conicto 256 844 256 1664 conicto 256 2469 740 2930 conicto 1225 3392 2075 3392 conicto 2848 3392 3312 2932 conicto 3776 2472 3776 1703 conicto 2752 2048 moveto 2752 2336 2565 2512 conicto 2379 2688 2077 2688 conicto 1751 2688 1547 2523 conicto 1343 2358 1293 2048 conicto 2752 2048 lineto end_ol grestore 1.000000 1.000000 1.000000 srgb n 65.666612 2.634400 m 65.666612 3.034400 l 69.166612 3.034400 l 69.166612 2.634400 l f 0.000000 0.000000 0.000000 srgb n 65.666612 2.634400 m 65.666612 3.034400 l 69.166612 3.034400 l 69.166612 2.634400 l cp s 1.000000 1.000000 1.000000 srgb n 65.666612 3.034400 m 65.666612 3.434400 l 69.166612 3.434400 l 69.166612 3.034400 l f 0.000000 0.000000 0.000000 srgb n 65.666612 3.034400 m 65.666612 3.434400 l 69.166612 3.434400 l 69.166612 3.034400 l cp s 0.100000 slw [] 0 sd 0 slj 0 slc n 63.762363 -3.285919 m 63.762363 4.677184 l 65.666612 4.677184 l s 0 slj 1.000000 1.000000 1.000000 srgb n 64.162363 -3.285919 m 63.762363 -4.085919 l 63.362363 -3.285919 l ef 0.100000 slw [] 0 sd 0 slj 0.000000 0.000000 0.000000 srgb n 64.162363 -3.285919 m 63.762363 -4.085919 l 63.362363 -3.285919 l cp s 0.100000 slw [] 0 sd 0 slj 0 slc n 63.762363 -3.285919 m 63.762363 10.826964 l 65.666612 10.826964 l 65.666612 10.162751 l s 0 slj 1.000000 1.000000 1.000000 srgb n 64.162363 -3.285919 m 63.762363 -4.085919 l 63.362363 -3.285919 l ef 0.100000 slw [] 0 sd 0 slj 0.000000 0.000000 0.000000 srgb n 64.162363 -3.285919 m 63.762363 -4.085919 l 63.362363 -3.285919 l cp s 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb n 65.666612 9.462751 m 65.666612 10.862751 l 70.734112 10.862751 l 70.734112 9.462751 l f 0.000000 0.000000 0.000000 srgb n 65.666612 9.462751 m 65.666612 10.862751 l 70.734112 10.862751 l 70.734112 9.462751 l cp s gsave 65.916612 10.412751 translate 0.035278 -0.035278 scale start_ol 3584 4323 moveto 3584 3392 lineto 3229 3551 2891 3631 conicto 2553 3712 2252 3712 conicto 1853 3712 1662 3599 conicto 1472 3487 1472 3251 conicto 1472 3074 1602 2975 conicto 1733 2876 2077 2805 conicto 2558 2707 lineto 3288 2558 3596 2254 conicto 3904 1950 3904 1390 conicto 3904 654 3477 295 conicto 3051 -64 2175 -64 conicto 1761 -64 1344 16 conicto 928 97 512 255 conicto 512 1216 lineto 927 993 1314 880 conicto 1702 768 2062 768 conicto 2427 768 2621 892 conicto 2816 1017 2816 1248 conicto 2816 1456 2682 1568 conicto 2549 1681 2150 1770 conicto 1713 1869 lineto 1056 2012 752 2324 conicto 448 2637 448 3166 conicto 448 3830 866 4187 conicto 1284 4544 2068 4544 conicto 2425 4544 2802 4488 conicto 3180 4433 3584 4323 conicto end_ol grestore gsave 66.491072 10.412751 translate 0.035278 -0.035278 scale start_ol 1536 512 moveto 1536 -1280 lineto 512 -1280 lineto 512 3264 lineto 1536 3264 lineto 1536 2816 lineto 1755 3112 2021 3252 conicto 2287 3392 2633 3392 conicto 3245 3392 3638 2908 conicto 4032 2425 4032 1664 conicto 4032 903 3638 419 conicto 3245 -64 2633 -64 conicto 2287 -64 2021 76 conicto 1755 216 1536 512 conicto 2243 2624 moveto 1901 2624 1718 2376 conicto 1536 2129 1536 1664 conicto 1536 1199 1718 951 conicto 1901 704 2243 704 conicto 2585 704 2764 950 conicto 2944 1196 2944 1664 conicto 2944 2132 2764 2378 conicto 2585 2624 2243 2624 conicto end_ol grestore gsave 67.063035 10.412751 translate 0.035278 -0.035278 scale start_ol 3776 1703 moveto 3776 1408 lineto 1280 1408 lineto 1319 1024 1554 832 conicto 1790 640 2213 640 conicto 2555 640 2912 735 conicto 3270 831 3648 1024 conicto 3648 192 lineto 3273 65 2898 0 conicto 2523 -64 2148 -64 conicto 1251 -64 753 390 conicto 256 844 256 1664 conicto 256 2469 740 2930 conicto 1225 3392 2075 3392 conicto 2848 3392 3312 2932 conicto 3776 2472 3776 1703 conicto 2752 2048 moveto 2752 2336 2565 2512 conicto 2379 2688 2077 2688 conicto 1751 2688 1547 2523 conicto 1343 2358 1293 2048 conicto 2752 2048 lineto end_ol grestore gsave 67.605026 10.412751 translate 0.035278 -0.035278 scale start_ol 1981 1472 moveto 1632 1472 1456 1365 conicto 1280 1258 1280 1049 conicto 1280 857 1421 748 conicto 1563 640 1816 640 conicto 2130 640 2345 844 conicto 2560 1049 2560 1356 conicto 2560 1472 lineto 1981 1472 lineto 3584 1878 moveto 3584 0 lineto 2560 0 lineto 2560 512 lineto 2345 211 2076 73 conicto 1808 -64 1423 -64 conicto 904 -64 580 232 conicto 256 528 256 1001 conicto 256 1575 654 1843 conicto 1052 2112 1903 2112 conicto 2560 2112 lineto 2560 2202 lineto 2560 2454 2363 2571 conicto 2166 2688 1748 2688 conicto 1409 2688 1117 2624 conicto 826 2560 576 2432 conicto 576 3264 lineto 906 3327 1238 3359 conicto 1571 3392 1903 3392 conicto 2793 3392 3188 3036 conicto 3584 2680 3584 1878 conicto end_ol grestore gsave 68.144519 10.412751 translate 0.035278 -0.035278 scale start_ol 2944 2432 moveto 2804 2497 2666 2528 conicto 2528 2560 2389 2560 conicto 1979 2560 1757 2296 conicto 1536 2032 1536 1540 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2752 lineto 1741 3086 2007 3239 conicto 2273 3392 2644 3392 conicto 2697 3392 2759 3385 conicto 2822 3378 2941 3354 conicto 2944 2432 lineto end_ol grestore gsave 68.539145 10.412751 translate 0.035278 -0.035278 scale start_ol 3531 2745 moveto 3730 3061 4003 3226 conicto 4277 3392 4605 3392 conicto 5169 3392 5464 3033 conicto 5760 2675 5760 1991 conicto 5760 0 lineto 4736 0 lineto 4736 1705 lineto 4739 1743 4740 1784 conicto 4742 1825 4742 1901 conicto 4742 2248 4636 2404 conicto 4531 2560 4296 2560 conicto 3989 2560 3821 2314 conicto 3654 2069 3648 1605 conicto 3648 0 lineto 2624 0 lineto 2624 1705 lineto 2624 2248 2527 2404 conicto 2431 2560 2184 2560 conicto 1874 2560 1705 2313 conicto 1536 2066 1536 1608 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2816 lineto 1730 3102 1980 3247 conicto 2231 3392 2533 3392 conicto 2874 3392 3135 3222 conicto 3396 3052 3531 2745 conicto end_ol grestore gsave 69.370863 10.412751 translate 0.035278 -0.035278 scale start_ol 1981 1472 moveto 1632 1472 1456 1365 conicto 1280 1258 1280 1049 conicto 1280 857 1421 748 conicto 1563 640 1816 640 conicto 2130 640 2345 844 conicto 2560 1049 2560 1356 conicto 2560 1472 lineto 1981 1472 lineto 3584 1878 moveto 3584 0 lineto 2560 0 lineto 2560 512 lineto 2345 211 2076 73 conicto 1808 -64 1423 -64 conicto 904 -64 580 232 conicto 256 528 256 1001 conicto 256 1575 654 1843 conicto 1052 2112 1903 2112 conicto 2560 2112 lineto 2560 2202 lineto 2560 2454 2363 2571 conicto 2166 2688 1748 2688 conicto 1409 2688 1117 2624 conicto 826 2560 576 2432 conicto 576 3264 lineto 906 3327 1238 3359 conicto 1571 3392 1903 3392 conicto 2793 3392 3188 3036 conicto 3584 2680 3584 1878 conicto end_ol grestore gsave 69.910357 10.412751 translate 0.035278 -0.035278 scale start_ol 3840 1991 moveto 3840 0 lineto 2816 0 lineto 2816 324 lineto 2816 1524 lineto 2816 1947 2795 2107 conicto 2775 2268 2725 2344 conicto 2659 2446 2546 2503 conicto 2433 2560 2289 2560 conicto 1938 2560 1737 2307 conicto 1536 2055 1536 1608 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2816 lineto 1779 3112 2052 3252 conicto 2325 3392 2655 3392 conicto 3237 3392 3538 3033 conicto 3840 2675 3840 1991 conicto end_ol grestore 1.000000 1.000000 1.000000 srgb n 65.666612 10.862751 m 65.666612 11.262751 l 70.734112 11.262751 l 70.734112 10.862751 l f 0.000000 0.000000 0.000000 srgb n 65.666612 10.862751 m 65.666612 11.262751 l 70.734112 11.262751 l 70.734112 10.862751 l cp s 1.000000 1.000000 1.000000 srgb n 65.666612 11.262751 m 65.666612 11.662751 l 70.734112 11.662751 l 70.734112 11.262751 l f 0.000000 0.000000 0.000000 srgb n 65.666612 11.262751 m 65.666612 11.662751 l 70.734112 11.662751 l 70.734112 11.262751 l cp s 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb n 65.666612 6.719967 m 65.666612 8.119967 l 70.309112 8.119967 l 70.309112 6.719967 l f 0.000000 0.000000 0.000000 srgb n 65.666612 6.719967 m 65.666612 8.119967 l 70.309112 8.119967 l 70.309112 6.719967 l cp s gsave 65.916612 7.669967 translate 0.035278 -0.035278 scale start_ol 0 4416 moveto 4096 4416 lineto 4096 3584 lineto 2624 3584 lineto 2624 0 lineto 1472 0 lineto 1472 3584 lineto 0 3584 lineto 0 4416 lineto end_ol grestore gsave 66.358698 7.669967 translate 0.035278 -0.035278 scale start_ol 1981 1472 moveto 1632 1472 1456 1365 conicto 1280 1258 1280 1049 conicto 1280 857 1421 748 conicto 1563 640 1816 640 conicto 2130 640 2345 844 conicto 2560 1049 2560 1356 conicto 2560 1472 lineto 1981 1472 lineto 3584 1878 moveto 3584 0 lineto 2560 0 lineto 2560 512 lineto 2345 211 2076 73 conicto 1808 -64 1423 -64 conicto 904 -64 580 232 conicto 256 528 256 1001 conicto 256 1575 654 1843 conicto 1052 2112 1903 2112 conicto 2560 2112 lineto 2560 2202 lineto 2560 2454 2363 2571 conicto 2166 2688 1748 2688 conicto 1409 2688 1117 2624 conicto 826 2560 576 2432 conicto 576 3264 lineto 906 3327 1238 3359 conicto 1571 3392 1903 3392 conicto 2793 3392 3188 3036 conicto 3584 2680 3584 1878 conicto end_ol grestore gsave 66.898191 7.669967 translate 0.035278 -0.035278 scale start_ol 3840 1991 moveto 3840 0 lineto 2816 0 lineto 2816 324 lineto 2816 1524 lineto 2816 1947 2795 2107 conicto 2775 2268 2725 2344 conicto 2659 2446 2546 2503 conicto 2433 2560 2289 2560 conicto 1938 2560 1737 2307 conicto 1536 2055 1536 1608 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2816 lineto 1779 3112 2052 3252 conicto 2325 3392 2655 3392 conicto 3237 3392 3538 3033 conicto 3840 2675 3840 1991 conicto end_ol grestore gsave 67.467657 7.669967 translate 0.035278 -0.035278 scale start_ol 512 3264 moveto 1536 3264 lineto 1536 0 lineto 512 0 lineto 512 3264 lineto 512 4544 moveto 1536 4544 lineto 1536 3648 lineto 512 3648 lineto 512 4544 lineto end_ol grestore gsave 67.742394 7.669967 translate 0.035278 -0.035278 scale start_ol 3531 2745 moveto 3730 3061 4003 3226 conicto 4277 3392 4605 3392 conicto 5169 3392 5464 3033 conicto 5760 2675 5760 1991 conicto 5760 0 lineto 4736 0 lineto 4736 1705 lineto 4739 1743 4740 1784 conicto 4742 1825 4742 1901 conicto 4742 2248 4636 2404 conicto 4531 2560 4296 2560 conicto 3989 2560 3821 2314 conicto 3654 2069 3648 1605 conicto 3648 0 lineto 2624 0 lineto 2624 1705 lineto 2624 2248 2527 2404 conicto 2431 2560 2184 2560 conicto 1874 2560 1705 2313 conicto 1536 2066 1536 1608 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2816 lineto 1730 3102 1980 3247 conicto 2231 3392 2533 3392 conicto 2874 3392 3135 3222 conicto 3396 3052 3531 2745 conicto end_ol grestore gsave 68.574112 7.669967 translate 0.035278 -0.035278 scale start_ol 2085 2624 moveto 1723 2624 1533 2377 conicto 1344 2130 1344 1664 conicto 1344 1198 1533 951 conicto 1723 704 2085 704 conicto 2440 704 2628 951 conicto 2816 1198 2816 1664 conicto 2816 2130 2628 2377 conicto 2440 2624 2085 2624 conicto 2084 3392 moveto 2941 3392 3422 2933 conicto 3904 2475 3904 1664 conicto 3904 853 3422 394 conicto 2941 -64 2084 -64 conicto 1225 -64 740 394 conicto 256 853 256 1664 conicto 256 2475 740 2933 conicto 1225 3392 2084 3392 conicto end_ol grestore gsave 69.123593 7.669967 translate 0.035278 -0.035278 scale start_ol 1600 4224 moveto 1600 3264 lineto 2688 3264 lineto 2688 2496 lineto 1600 2496 lineto 1600 1146 lineto 1600 924 1694 846 conicto 1788 768 2067 768 conicto 2624 768 lineto 2624 0 lineto 1694 0 lineto 1085 0 830 260 conicto 576 521 576 1146 conicto 576 2496 lineto 64 2496 lineto 64 3264 lineto 576 3264 lineto 576 4224 lineto 1600 4224 lineto end_ol grestore gsave 69.505734 7.669967 translate 0.035278 -0.035278 scale start_ol 2085 2624 moveto 1723 2624 1533 2377 conicto 1344 2130 1344 1664 conicto 1344 1198 1533 951 conicto 1723 704 2085 704 conicto 2440 704 2628 951 conicto 2816 1198 2816 1664 conicto 2816 2130 2628 2377 conicto 2440 2624 2085 2624 conicto 2084 3392 moveto 2941 3392 3422 2933 conicto 3904 2475 3904 1664 conicto 3904 853 3422 394 conicto 2941 -64 2084 -64 conicto 1225 -64 740 394 conicto 256 853 256 1664 conicto 256 2475 740 2933 conicto 1225 3392 2084 3392 conicto end_ol grestore 1.000000 1.000000 1.000000 srgb n 65.666612 8.119967 m 65.666612 8.519967 l 70.309112 8.519967 l 70.309112 8.119967 l f 0.000000 0.000000 0.000000 srgb n 65.666612 8.119967 m 65.666612 8.519967 l 70.309112 8.519967 l 70.309112 8.119967 l cp s 1.000000 1.000000 1.000000 srgb n 65.666612 8.519967 m 65.666612 8.919967 l 70.309112 8.919967 l 70.309112 8.519967 l f 0.000000 0.000000 0.000000 srgb n 65.666612 8.519967 m 65.666612 8.919967 l 70.309112 8.919967 l 70.309112 8.519967 l cp s 0.100000 slw [] 0 sd 0 slj 0 slc n 63.762363 -3.285919 m 63.762363 1.934400 l 65.666612 1.934400 l s 0 slj 1.000000 1.000000 1.000000 srgb n 64.162363 -3.285919 m 63.762363 -4.085919 l 63.362363 -3.285919 l ef 0.100000 slw [] 0 sd 0 slj 0.000000 0.000000 0.000000 srgb n 64.162363 -3.285919 m 63.762363 -4.085919 l 63.362363 -3.285919 l cp s 0.100000 slw [] 0 sd 0 slj 0 slc n 63.762363 -3.285919 m 63.762363 -0.808383 l 65.666612 -0.808383 l s 0 slj 1.000000 1.000000 1.000000 srgb n 64.162363 -3.285919 m 63.762363 -4.085919 l 63.362363 -3.285919 l ef 0.100000 slw [] 0 sd 0 slj 0.000000 0.000000 0.000000 srgb n 64.162363 -3.285919 m 63.762363 -4.085919 l 63.362363 -3.285919 l cp s 0.100000 slw [] 0 sd 0 slj 0 slc n 63.762363 -3.285919 m 63.762363 7.419967 l 65.666612 7.419967 l s 0 slj 1.000000 1.000000 1.000000 srgb n 64.162363 -3.285919 m 63.762363 -4.085919 l 63.362363 -3.285919 l ef 0.100000 slw [] 0 sd 0 slj 0.000000 0.000000 0.000000 srgb n 64.162363 -3.285919 m 63.762363 -4.085919 l 63.362363 -3.285919 l cp s 0.100000 slw [] 0 sd 0 slj 0 slc n 55.070379 -11.470711 m 57.239496 -11.470711 l 57.239496 -5.697723 l 59.408613 -5.697723 l s n 57.439496 -8.584217 m 57.439496 -8.984217 l 57.839496 -8.784217 l ef 0.100000 slw [] 0 sd 0 slj 0 slc n 48.187600 -19.270711 m 52.335100 -19.270711 l 52.335100 -20.864823 l 57.301607 -20.864823 l s n 52.535100 -20.067767 m 52.535100 -20.467767 l 52.935100 -20.267767 l ef 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb n 63.256219 -17.570458 m 63.256219 -16.170458 l 70.043719 -16.170458 l 70.043719 -17.570458 l f 0.000000 0.000000 0.000000 srgb n 63.256219 -17.570458 m 63.256219 -16.170458 l 70.043719 -16.170458 l 70.043719 -17.570458 l cp s gsave 63.506219 -16.620458 translate 0.035278 -0.035278 scale start_ol 2310 2688 moveto 2559 2688 2687 2809 conicto 2816 2931 2816 3168 conicto 2816 3402 2687 3525 conicto 2559 3648 2310 3648 conicto 1728 3648 lineto 1728 2688 lineto 2310 2688 lineto 2346 768 moveto 2676 768 2842 912 conicto 3008 1057 3008 1348 conicto 3008 1634 2843 1777 conicto 2678 1920 2346 1920 conicto 1728 1920 lineto 1728 768 lineto 2346 768 lineto 3378 2348 moveto 3751 2242 3955 1957 conicto 4160 1672 4160 1258 conicto 4160 623 3730 311 conicto 3300 0 2422 0 conicto 576 0 lineto 576 4416 lineto 2256 4416 lineto 3158 4416 3563 4136 conicto 3968 3856 3968 3239 conicto 3968 2914 3817 2686 conicto 3666 2458 3378 2348 conicto end_ol grestore gsave 64.115646 -16.620458 translate 0.035278 -0.035278 scale start_ol 512 1320 moveto 512 3264 lineto 1536 3264 lineto 1536 2946 lineto 1536 2687 1533 2296 conicto 1530 1905 1530 1775 conicto 1530 1391 1552 1221 conicto 1574 1052 1627 976 conicto 1696 876 1807 822 conicto 1919 768 2063 768 conicto 2415 768 2615 1012 conicto 2816 1257 2816 1692 conicto 2816 3264 lineto 3840 3264 lineto 3840 0 lineto 2816 0 lineto 2816 512 lineto 2573 216 2301 76 conicto 2030 -64 1703 -64 conicto 1121 -64 816 290 conicto 512 644 512 1320 conicto end_ol grestore gsave 64.685112 -16.620458 translate 0.035278 -0.035278 scale start_ol 2752 576 moveto 2533 279 2269 139 conicto 2005 0 1658 0 conicto 1050 0 653 478 conicto 256 957 256 1697 conicto 256 2441 653 2916 conicto 1050 3392 1658 3392 conicto 2005 3392 2269 3253 conicto 2533 3115 2752 2816 conicto 2752 3264 lineto 3776 3264 lineto 3776 343 lineto 3776 -447 3274 -863 conicto 2772 -1280 1818 -1280 conicto 1509 -1280 1220 -1232 conicto 932 -1185 640 -1088 conicto 640 -256 lineto 922 -417 1191 -496 conicto 1461 -576 1733 -576 conicto 2261 -576 2506 -353 conicto 2752 -131 2752 343 conicto 2752 576 lineto 2047 2624 moveto 1715 2624 1529 2381 conicto 1344 2139 1344 1695 conicto 1344 1239 1523 1003 conicto 1703 768 2047 768 conicto 2381 768 2566 1010 conicto 2752 1253 2752 1695 conicto 2752 2139 2566 2381 conicto 2381 2624 2047 2624 conicto end_ol grestore gsave 65.257075 -16.620458 translate 0.035278 -0.035278 scale start_ol 3136 3200 moveto 3136 2432 lineto 2794 2560 2476 2624 conicto 2159 2688 1877 2688 conicto 1574 2688 1427 2616 conicto 1280 2544 1280 2395 conicto 1280 2274 1393 2209 conicto 1507 2145 1800 2114 conicto 1990 2088 lineto 2781 1984 3054 1746 conicto 3328 1509 3328 1002 conicto 3328 470 2939 203 conicto 2550 -64 1778 -64 conicto 1451 -64 1101 0 conicto 752 64 384 192 conicto 384 960 lineto 706 800 1045 720 conicto 1384 640 1733 640 conicto 2049 640 2208 727 conicto 2368 814 2368 986 conicto 2368 1130 2257 1200 conicto 2147 1271 1818 1310 conicto 1628 1334 lineto 903 1421 611 1657 conicto 320 1893 320 2373 conicto 320 2891 685 3141 conicto 1050 3392 1804 3392 conicto 2101 3392 2427 3345 conicto 2753 3299 3136 3200 conicto end_ol grestore gsave 65.731630 -16.620458 translate 0.035278 -0.035278 scale start_ol 576 4416 moveto 1728 4416 lineto 1728 2752 lineto 3328 2752 lineto 3328 4416 lineto 4480 4416 lineto 4480 0 lineto 3328 0 lineto 3328 1920 lineto 1728 1920 lineto 1728 0 lineto 576 0 lineto 576 4416 lineto end_ol grestore gsave 66.401001 -16.620458 translate 0.035278 -0.035278 scale start_ol 3776 1703 moveto 3776 1408 lineto 1280 1408 lineto 1319 1024 1554 832 conicto 1790 640 2213 640 conicto 2555 640 2912 735 conicto 3270 831 3648 1024 conicto 3648 192 lineto 3273 65 2898 0 conicto 2523 -64 2148 -64 conicto 1251 -64 753 390 conicto 256 844 256 1664 conicto 256 2469 740 2930 conicto 1225 3392 2075 3392 conicto 2848 3392 3312 2932 conicto 3776 2472 3776 1703 conicto 2752 2048 moveto 2752 2336 2565 2512 conicto 2379 2688 2077 2688 conicto 1751 2688 1547 2523 conicto 1343 2358 1293 2048 conicto 2752 2048 lineto end_ol grestore gsave 66.942991 -16.620458 translate 0.035278 -0.035278 scale start_ol 512 1320 moveto 512 3264 lineto 1536 3264 lineto 1536 2946 lineto 1536 2687 1533 2296 conicto 1530 1905 1530 1775 conicto 1530 1391 1552 1221 conicto 1574 1052 1627 976 conicto 1696 876 1807 822 conicto 1919 768 2063 768 conicto 2415 768 2615 1012 conicto 2816 1257 2816 1692 conicto 2816 3264 lineto 3840 3264 lineto 3840 0 lineto 2816 0 lineto 2816 512 lineto 2573 216 2301 76 conicto 2030 -64 1703 -64 conicto 1121 -64 816 290 conicto 512 644 512 1320 conicto end_ol grestore gsave 67.512457 -16.620458 translate 0.035278 -0.035278 scale start_ol 2944 2432 moveto 2804 2497 2666 2528 conicto 2528 2560 2389 2560 conicto 1979 2560 1757 2296 conicto 1536 2032 1536 1540 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2752 lineto 1741 3086 2007 3239 conicto 2273 3392 2644 3392 conicto 2697 3392 2759 3385 conicto 2822 3378 2941 3354 conicto 2944 2432 lineto end_ol grestore gsave 67.907084 -16.620458 translate 0.035278 -0.035278 scale start_ol 512 3264 moveto 1536 3264 lineto 1536 0 lineto 512 0 lineto 512 3264 lineto 512 4544 moveto 1536 4544 lineto 1536 3648 lineto 512 3648 lineto 512 4544 lineto end_ol grestore gsave 68.181820 -16.620458 translate 0.035278 -0.035278 scale start_ol 3136 3200 moveto 3136 2432 lineto 2794 2560 2476 2624 conicto 2159 2688 1877 2688 conicto 1574 2688 1427 2616 conicto 1280 2544 1280 2395 conicto 1280 2274 1393 2209 conicto 1507 2145 1800 2114 conicto 1990 2088 lineto 2781 1984 3054 1746 conicto 3328 1509 3328 1002 conicto 3328 470 2939 203 conicto 2550 -64 1778 -64 conicto 1451 -64 1101 0 conicto 752 64 384 192 conicto 384 960 lineto 706 800 1045 720 conicto 1384 640 1733 640 conicto 2049 640 2208 727 conicto 2368 814 2368 986 conicto 2368 1130 2257 1200 conicto 2147 1271 1818 1310 conicto 1628 1334 lineto 903 1421 611 1657 conicto 320 1893 320 2373 conicto 320 2891 685 3141 conicto 1050 3392 1804 3392 conicto 2101 3392 2427 3345 conicto 2753 3299 3136 3200 conicto end_ol grestore gsave 68.656375 -16.620458 translate 0.035278 -0.035278 scale start_ol 1600 4224 moveto 1600 3264 lineto 2688 3264 lineto 2688 2496 lineto 1600 2496 lineto 1600 1146 lineto 1600 924 1694 846 conicto 1788 768 2067 768 conicto 2624 768 lineto 2624 0 lineto 1694 0 lineto 1085 0 830 260 conicto 576 521 576 1146 conicto 576 2496 lineto 64 2496 lineto 64 3264 lineto 576 3264 lineto 576 4224 lineto 1600 4224 lineto end_ol grestore gsave 69.038516 -16.620458 translate 0.035278 -0.035278 scale start_ol 512 3264 moveto 1536 3264 lineto 1536 0 lineto 512 0 lineto 512 3264 lineto 512 4544 moveto 1536 4544 lineto 1536 3648 lineto 512 3648 lineto 512 4544 lineto end_ol grestore gsave 69.313253 -16.620458 translate 0.035278 -0.035278 scale start_ol 3136 3136 moveto 3136 2304 lineto 2924 2467 2710 2545 conicto 2496 2624 2266 2624 conicto 1830 2624 1587 2371 conicto 1344 2118 1344 1664 conicto 1344 1210 1587 957 conicto 1830 704 2266 704 conicto 2511 704 2730 785 conicto 2950 866 3136 1024 conicto 3136 192 lineto 2891 64 2639 0 conicto 2388 -64 2134 -64 conicto 1252 -64 754 393 conicto 256 850 256 1664 conicto 256 2478 754 2935 conicto 1252 3392 2134 3392 conicto 2391 3392 2639 3328 conicto 2888 3264 3136 3136 conicto end_ol grestore 1.000000 1.000000 1.000000 srgb n 63.256219 -16.170458 m 63.256219 -15.770458 l 70.043719 -15.770458 l 70.043719 -16.170458 l f 0.000000 0.000000 0.000000 srgb n 63.256219 -16.170458 m 63.256219 -15.770458 l 70.043719 -15.770458 l 70.043719 -16.170458 l cp s 1.000000 1.000000 1.000000 srgb n 63.256219 -15.770458 m 63.256219 -15.370458 l 70.043719 -15.370458 l 70.043719 -15.770458 l f 0.000000 0.000000 0.000000 srgb n 63.256219 -15.770458 m 63.256219 -15.370458 l 70.043719 -15.370458 l 70.043719 -15.770458 l cp s 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb n 63.396649 -14.954163 m 63.396649 -13.554163 l 71.386649 -13.554163 l 71.386649 -14.954163 l f 0.000000 0.000000 0.000000 srgb n 63.396649 -14.954163 m 63.396649 -13.554163 l 71.386649 -13.554163 l 71.386649 -14.954163 l cp s gsave 63.646649 -14.004163 translate 0.035278 -0.035278 scale start_ol 2310 2688 moveto 2559 2688 2687 2809 conicto 2816 2931 2816 3168 conicto 2816 3402 2687 3525 conicto 2559 3648 2310 3648 conicto 1728 3648 lineto 1728 2688 lineto 2310 2688 lineto 2346 768 moveto 2676 768 2842 912 conicto 3008 1057 3008 1348 conicto 3008 1634 2843 1777 conicto 2678 1920 2346 1920 conicto 1728 1920 lineto 1728 768 lineto 2346 768 lineto 3378 2348 moveto 3751 2242 3955 1957 conicto 4160 1672 4160 1258 conicto 4160 623 3730 311 conicto 3300 0 2422 0 conicto 576 0 lineto 576 4416 lineto 2256 4416 lineto 3158 4416 3563 4136 conicto 3968 3856 3968 3239 conicto 3968 2914 3817 2686 conicto 3666 2458 3378 2348 conicto end_ol grestore gsave 64.256075 -14.004163 translate 0.035278 -0.035278 scale start_ol 512 1320 moveto 512 3264 lineto 1536 3264 lineto 1536 2946 lineto 1536 2687 1533 2296 conicto 1530 1905 1530 1775 conicto 1530 1391 1552 1221 conicto 1574 1052 1627 976 conicto 1696 876 1807 822 conicto 1919 768 2063 768 conicto 2415 768 2615 1012 conicto 2816 1257 2816 1692 conicto 2816 3264 lineto 3840 3264 lineto 3840 0 lineto 2816 0 lineto 2816 512 lineto 2573 216 2301 76 conicto 2030 -64 1703 -64 conicto 1121 -64 816 290 conicto 512 644 512 1320 conicto end_ol grestore gsave 64.825541 -14.004163 translate 0.035278 -0.035278 scale start_ol 2752 576 moveto 2533 279 2269 139 conicto 2005 0 1658 0 conicto 1050 0 653 478 conicto 256 957 256 1697 conicto 256 2441 653 2916 conicto 1050 3392 1658 3392 conicto 2005 3392 2269 3253 conicto 2533 3115 2752 2816 conicto 2752 3264 lineto 3776 3264 lineto 3776 343 lineto 3776 -447 3274 -863 conicto 2772 -1280 1818 -1280 conicto 1509 -1280 1220 -1232 conicto 932 -1185 640 -1088 conicto 640 -256 lineto 922 -417 1191 -496 conicto 1461 -576 1733 -576 conicto 2261 -576 2506 -353 conicto 2752 -131 2752 343 conicto 2752 576 lineto 2047 2624 moveto 1715 2624 1529 2381 conicto 1344 2139 1344 1695 conicto 1344 1239 1523 1003 conicto 1703 768 2047 768 conicto 2381 768 2566 1010 conicto 2752 1253 2752 1695 conicto 2752 2139 2566 2381 conicto 2381 2624 2047 2624 conicto end_ol grestore gsave 65.397504 -14.004163 translate 0.035278 -0.035278 scale start_ol 3136 3200 moveto 3136 2432 lineto 2794 2560 2476 2624 conicto 2159 2688 1877 2688 conicto 1574 2688 1427 2616 conicto 1280 2544 1280 2395 conicto 1280 2274 1393 2209 conicto 1507 2145 1800 2114 conicto 1990 2088 lineto 2781 1984 3054 1746 conicto 3328 1509 3328 1002 conicto 3328 470 2939 203 conicto 2550 -64 1778 -64 conicto 1451 -64 1101 0 conicto 752 64 384 192 conicto 384 960 lineto 706 800 1045 720 conicto 1384 640 1733 640 conicto 2049 640 2208 727 conicto 2368 814 2368 986 conicto 2368 1130 2257 1200 conicto 2147 1271 1818 1310 conicto 1628 1334 lineto 903 1421 611 1657 conicto 320 1893 320 2373 conicto 320 2891 685 3141 conicto 1050 3392 1804 3392 conicto 2101 3392 2427 3345 conicto 2753 3299 3136 3200 conicto end_ol grestore gsave 65.872059 -14.004163 translate 0.035278 -0.035278 scale start_ol 2182 2496 moveto 2521 2496 2668 2624 conicto 2816 2752 2816 3044 conicto 2816 3334 2668 3459 conicto 2521 3584 2182 3584 conicto 1728 3584 lineto 1728 2496 lineto 2182 2496 lineto 1728 1664 moveto 1728 0 lineto 576 0 lineto 576 4416 lineto 2297 4416 lineto 3162 4416 3565 4125 conicto 3968 3834 3968 3205 conicto 3968 2771 3754 2491 conicto 3540 2212 3109 2080 conicto 3345 2025 3532 1832 conicto 3719 1640 3911 1249 conicto 4544 0 lineto 3310 0 lineto 2768 1093 lineto 2614 1423 2455 1543 conicto 2297 1664 2034 1664 conicto 1728 1664 lineto end_ol grestore gsave 66.486479 -14.004163 translate 0.035278 -0.035278 scale start_ol 4032 267 moveto 3722 103 3386 19 conicto 3050 -64 2685 -64 conicto 1594 -64 957 556 conicto 320 1177 320 2239 conicto 320 3303 957 3923 conicto 1594 4544 2685 4544 conicto 3050 4544 3386 4460 conicto 3722 4377 4032 4213 conicto 4032 3328 lineto 3718 3527 3412 3619 conicto 3107 3712 2770 3712 conicto 2165 3712 1818 3320 conicto 1472 2928 1472 2239 conicto 1472 1552 1818 1160 conicto 2165 768 2770 768 conicto 3107 768 3412 860 conicto 3718 953 4032 1152 conicto 4032 267 lineto end_ol grestore gsave 67.073424 -14.004163 translate 0.035278 -0.035278 scale start_ol 576 4416 moveto 1728 4416 lineto 1728 2752 lineto 3328 2752 lineto 3328 4416 lineto 4480 4416 lineto 4480 0 lineto 3328 0 lineto 3328 1920 lineto 1728 1920 lineto 1728 0 lineto 576 0 lineto 576 4416 lineto end_ol grestore gsave 67.742796 -14.004163 translate 0.035278 -0.035278 scale start_ol 3776 1703 moveto 3776 1408 lineto 1280 1408 lineto 1319 1024 1554 832 conicto 1790 640 2213 640 conicto 2555 640 2912 735 conicto 3270 831 3648 1024 conicto 3648 192 lineto 3273 65 2898 0 conicto 2523 -64 2148 -64 conicto 1251 -64 753 390 conicto 256 844 256 1664 conicto 256 2469 740 2930 conicto 1225 3392 2075 3392 conicto 2848 3392 3312 2932 conicto 3776 2472 3776 1703 conicto 2752 2048 moveto 2752 2336 2565 2512 conicto 2379 2688 2077 2688 conicto 1751 2688 1547 2523 conicto 1343 2358 1293 2048 conicto 2752 2048 lineto end_ol grestore gsave 68.284786 -14.004163 translate 0.035278 -0.035278 scale start_ol 512 1320 moveto 512 3264 lineto 1536 3264 lineto 1536 2946 lineto 1536 2687 1533 2296 conicto 1530 1905 1530 1775 conicto 1530 1391 1552 1221 conicto 1574 1052 1627 976 conicto 1696 876 1807 822 conicto 1919 768 2063 768 conicto 2415 768 2615 1012 conicto 2816 1257 2816 1692 conicto 2816 3264 lineto 3840 3264 lineto 3840 0 lineto 2816 0 lineto 2816 512 lineto 2573 216 2301 76 conicto 2030 -64 1703 -64 conicto 1121 -64 816 290 conicto 512 644 512 1320 conicto end_ol grestore gsave 68.854252 -14.004163 translate 0.035278 -0.035278 scale start_ol 2944 2432 moveto 2804 2497 2666 2528 conicto 2528 2560 2389 2560 conicto 1979 2560 1757 2296 conicto 1536 2032 1536 1540 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2752 lineto 1741 3086 2007 3239 conicto 2273 3392 2644 3392 conicto 2697 3392 2759 3385 conicto 2822 3378 2941 3354 conicto 2944 2432 lineto end_ol grestore gsave 69.248878 -14.004163 translate 0.035278 -0.035278 scale start_ol 512 3264 moveto 1536 3264 lineto 1536 0 lineto 512 0 lineto 512 3264 lineto 512 4544 moveto 1536 4544 lineto 1536 3648 lineto 512 3648 lineto 512 4544 lineto end_ol grestore gsave 69.523615 -14.004163 translate 0.035278 -0.035278 scale start_ol 3136 3200 moveto 3136 2432 lineto 2794 2560 2476 2624 conicto 2159 2688 1877 2688 conicto 1574 2688 1427 2616 conicto 1280 2544 1280 2395 conicto 1280 2274 1393 2209 conicto 1507 2145 1800 2114 conicto 1990 2088 lineto 2781 1984 3054 1746 conicto 3328 1509 3328 1002 conicto 3328 470 2939 203 conicto 2550 -64 1778 -64 conicto 1451 -64 1101 0 conicto 752 64 384 192 conicto 384 960 lineto 706 800 1045 720 conicto 1384 640 1733 640 conicto 2049 640 2208 727 conicto 2368 814 2368 986 conicto 2368 1130 2257 1200 conicto 2147 1271 1818 1310 conicto 1628 1334 lineto 903 1421 611 1657 conicto 320 1893 320 2373 conicto 320 2891 685 3141 conicto 1050 3392 1804 3392 conicto 2101 3392 2427 3345 conicto 2753 3299 3136 3200 conicto end_ol grestore gsave 69.998170 -14.004163 translate 0.035278 -0.035278 scale start_ol 1600 4224 moveto 1600 3264 lineto 2688 3264 lineto 2688 2496 lineto 1600 2496 lineto 1600 1146 lineto 1600 924 1694 846 conicto 1788 768 2067 768 conicto 2624 768 lineto 2624 0 lineto 1694 0 lineto 1085 0 830 260 conicto 576 521 576 1146 conicto 576 2496 lineto 64 2496 lineto 64 3264 lineto 576 3264 lineto 576 4224 lineto 1600 4224 lineto end_ol grestore gsave 70.380311 -14.004163 translate 0.035278 -0.035278 scale start_ol 512 3264 moveto 1536 3264 lineto 1536 0 lineto 512 0 lineto 512 3264 lineto 512 4544 moveto 1536 4544 lineto 1536 3648 lineto 512 3648 lineto 512 4544 lineto end_ol grestore gsave 70.655048 -14.004163 translate 0.035278 -0.035278 scale start_ol 3136 3136 moveto 3136 2304 lineto 2924 2467 2710 2545 conicto 2496 2624 2266 2624 conicto 1830 2624 1587 2371 conicto 1344 2118 1344 1664 conicto 1344 1210 1587 957 conicto 1830 704 2266 704 conicto 2511 704 2730 785 conicto 2950 866 3136 1024 conicto 3136 192 lineto 2891 64 2639 0 conicto 2388 -64 2134 -64 conicto 1252 -64 754 393 conicto 256 850 256 1664 conicto 256 2478 754 2935 conicto 1252 3392 2134 3392 conicto 2391 3392 2639 3328 conicto 2888 3264 3136 3136 conicto end_ol grestore 1.000000 1.000000 1.000000 srgb n 63.396649 -13.554163 m 63.396649 -13.154163 l 71.386649 -13.154163 l 71.386649 -13.554163 l f 0.000000 0.000000 0.000000 srgb n 63.396649 -13.554163 m 63.396649 -13.154163 l 71.386649 -13.154163 l 71.386649 -13.554163 l cp s 1.000000 1.000000 1.000000 srgb n 63.396649 -13.154163 m 63.396649 -12.754163 l 71.386649 -12.754163 l 71.386649 -13.154163 l f 0.000000 0.000000 0.000000 srgb n 63.396649 -13.154163 m 63.396649 -12.754163 l 71.386649 -12.754163 l 71.386649 -13.154163 l cp s 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb n 57.351774 -21.964823 m 57.351774 -20.564823 l 66.871774 -20.564823 l 66.871774 -21.964823 l f 0.000000 0.000000 0.000000 srgb n 57.351774 -21.964823 m 57.351774 -20.564823 l 66.871774 -20.564823 l 66.871774 -21.964823 l cp s gsave 57.601774 -21.014823 translate 0.035278 -0.035278 scale start_ol 2172 2496 moveto 2552 2496 2748 2669 conicto 2944 2843 2944 3178 conicto 2944 3388 2809 3486 conicto 2674 3584 2384 3584 conicto 1923 3584 lineto 1703 2496 lineto 2172 2496 lineto 1555 1664 moveto 1233 0 lineto 128 0 lineto 960 4416 lineto 2610 4416 lineto 3341 4416 3718 4145 conicto 4096 3875 4096 3349 conicto 4096 2818 3797 2474 conicto 3498 2130 2986 2080 conicto 3220 2031 3376 1838 conicto 3533 1646 3650 1249 conicto 4032 0 lineto 2883 0 lineto 2558 1093 lineto 2459 1420 2318 1542 conicto 2178 1664 1911 1664 conicto 1555 1664 lineto end_ol grestore gsave 58.176234 -21.014823 translate 0.035278 -0.035278 scale start_ol 3774 1573 moveto 3739 1408 lineto 1286 1408 lineto 1286 1390 1283 1355 conicto 1280 1320 1280 1301 conicto 1280 969 1472 804 conicto 1664 640 2048 640 conicto 2379 640 2747 736 conicto 3115 833 3520 1024 conicto 3361 192 lineto 2973 63 2590 0 conicto 2207 -64 1811 -64 conicto 1035 -64 613 291 conicto 192 647 192 1297 conicto 192 1673 326 2027 conicto 460 2381 717 2675 conicto 1021 3028 1444 3210 conicto 1867 3392 2383 3392 conicto 3053 3392 3446 3042 conicto 3840 2692 3840 2099 conicto 3840 1984 3824 1855 conicto 3808 1726 3774 1573 conicto 2798 2048 moveto 2807 2085 2811 2123 conicto 2816 2161 2816 2197 conicto 2816 2423 2674 2555 conicto 2533 2688 2290 2688 conicto 1980 2688 1763 2526 conicto 1546 2364 1431 2048 conicto 2798 2048 lineto end_ol grestore gsave 58.718225 -21.014823 translate 0.035278 -0.035278 scale start_ol 1347 500 moveto 1007 -1280 lineto -64 -1280 lineto 832 3264 lineto 1898 3264 lineto 1800 2814 lineto 2042 3111 2307 3251 conicto 2573 3392 2889 3392 conicto 3447 3392 3771 3039 conicto 4096 2687 4096 2078 conicto 4096 1699 3982 1340 conicto 3869 982 3656 688 conicto 3387 318 3049 127 conicto 2711 -64 2324 -64 conicto 1985 -64 1747 73 conicto 1509 211 1347 500 conicto 2460 2624 moveto 2052 2624 1793 2251 conicto 1534 1878 1534 1281 conicto 1534 1011 1680 857 conicto 1827 704 2087 704 conicto 2487 704 2747 1071 conicto 3008 1439 3008 2012 conicto 3008 2311 2867 2467 conicto 2727 2624 2460 2624 conicto end_ol grestore gsave 59.290188 -21.014823 translate 0.035278 -0.035278 scale start_ol 433 1315 moveto 832 3264 lineto 1869 3264 lineto 1543 1603 lineto 1509 1441 1491 1327 conicto 1474 1213 1474 1147 conicto 1474 967 1575 867 conicto 1676 768 1864 768 conicto 2185 768 2416 1013 conicto 2647 1258 2734 1694 conicto 3046 3264 lineto 4096 3264 lineto 3456 0 lineto 2413 0 lineto 2508 516 lineto 2239 224 1944 80 conicto 1649 -64 1322 -64 conicto 875 -64 629 176 conicto 384 416 384 855 conicto 384 959 396 1074 conicto 409 1190 433 1315 conicto end_ol grestore gsave 59.859654 -21.014823 translate 0.035278 -0.035278 scale start_ol 2143 4224 moveto 1964 3264 lineto 3039 3264 lineto 2889 2496 lineto 1814 2496 lineto 1544 1149 lineto 1532 1104 1527 1072 conicto 1523 1041 1523 1013 conicto 1523 882 1612 825 conicto 1702 768 1914 768 conicto 2457 768 lineto 2308 0 lineto 1423 0 lineto 947 0 697 200 conicto 448 401 448 778 conicto 448 860 457 954 conicto 466 1049 483 1146 conicto 754 2496 lineto 246 2496 lineto 384 3264 lineto 903 3264 lineto 1085 4224 lineto 2143 4224 lineto end_ol grestore gsave 60.241795 -21.014823 translate 0.035278 -0.035278 scale start_ol 2014 1472 moveto 1619 1472 1417 1355 conicto 1216 1238 1216 1009 conicto 1216 837 1335 738 conicto 1454 640 1663 640 conicto 1987 640 2204 827 conicto 2422 1015 2496 1356 conicto 2520 1472 lineto 2014 1472 lineto 3659 1878 moveto 3291 0 lineto 2237 0 lineto 2326 508 lineto 2066 215 1777 75 conicto 1488 -64 1149 -64 conicto 680 -64 404 176 conicto 128 417 128 826 conicto 128 1450 616 1781 conicto 1105 2112 2025 2112 conicto 2646 2112 lineto 2658 2202 lineto 2667 2243 2668 2261 conicto 2670 2279 2670 2294 conicto 2670 2489 2485 2588 conicto 2300 2688 1936 2688 conicto 1607 2688 1299 2624 conicto 991 2560 704 2432 conicto 867 3264 lineto 1198 3327 1544 3359 conicto 1891 3392 2263 3392 conicto 2998 3392 3355 3137 conicto 3712 2882 3712 2361 conicto 3712 2259 3698 2138 conicto 3685 2018 3659 1878 conicto end_ol grestore gsave 60.781288 -21.014823 translate 0.035278 -0.035278 scale start_ol 2143 4224 moveto 1964 3264 lineto 3039 3264 lineto 2889 2496 lineto 1814 2496 lineto 1544 1149 lineto 1532 1104 1527 1072 conicto 1523 1041 1523 1013 conicto 1523 882 1612 825 conicto 1702 768 1914 768 conicto 2457 768 lineto 2308 0 lineto 1423 0 lineto 947 0 697 200 conicto 448 401 448 778 conicto 448 860 457 954 conicto 466 1049 483 1146 conicto 754 2496 lineto 246 2496 lineto 384 3264 lineto 903 3264 lineto 1085 4224 lineto 2143 4224 lineto end_ol grestore gsave 61.163429 -21.014823 translate 0.035278 -0.035278 scale start_ol 832 3264 moveto 1899 3264 lineto 1256 0 lineto 192 0 lineto 832 3264 lineto 1088 4544 moveto 2146 4544 lineto 1978 3648 lineto 896 3648 lineto 1088 4544 lineto end_ol grestore gsave 61.438166 -21.014823 translate 0.035278 -0.035278 scale start_ol 2243 2624 moveto 1823 2624 1551 2259 conicto 1280 1895 1280 1331 conicto 1280 1025 1426 864 conicto 1573 704 1853 704 conicto 2273 704 2544 1070 conicto 2816 1436 2816 2002 conicto 2816 2306 2669 2465 conicto 2523 2624 2243 2624 conicto 2324 3392 moveto 3061 3392 3482 3019 conicto 3904 2646 3904 2002 conicto 3904 1629 3771 1277 conicto 3639 926 3385 635 conicto 3084 289 2674 112 conicto 2265 -64 1761 -64 conicto 1032 -64 612 309 conicto 192 682 192 1326 conicto 192 1696 327 2050 conicto 463 2405 717 2698 conicto 1012 3039 1420 3215 conicto 1828 3392 2324 3392 conicto end_ol grestore gsave 61.987648 -21.014823 translate 0.035278 -0.035278 scale start_ol 3915 1991 moveto 3520 0 lineto 2456 0 lineto 2791 1705 lineto 2827 1871 2846 1986 conicto 2865 2102 2865 2169 conicto 2865 2356 2760 2458 conicto 2655 2560 2462 2560 conicto 2133 2560 1897 2307 conicto 1662 2055 1570 1608 conicto 1250 0 lineto 192 0 lineto 832 3264 lineto 1899 3264 lineto 1801 2789 lineto 2094 3095 2390 3243 conicto 2687 3392 3010 3392 conicto 3470 3392 3719 3148 conicto 3968 2904 3968 2461 conicto 3968 2365 3954 2247 conicto 3941 2130 3915 1991 conicto end_ol grestore gsave 62.557114 -21.014823 translate 0.035278 -0.035278 scale start_ol 960 4416 moveto 2114 4416 lineto 1781 2752 lineto 3484 2752 lineto 3814 4416 lineto 4928 4416 lineto 4096 0 lineto 2942 0 lineto 3311 1920 lineto 1611 1920 lineto 1242 0 lineto 128 0 lineto 960 4416 lineto end_ol grestore gsave 63.226485 -21.014823 translate 0.035278 -0.035278 scale start_ol 3774 1573 moveto 3739 1408 lineto 1286 1408 lineto 1286 1390 1283 1355 conicto 1280 1320 1280 1301 conicto 1280 969 1472 804 conicto 1664 640 2048 640 conicto 2379 640 2747 736 conicto 3115 833 3520 1024 conicto 3361 192 lineto 2973 63 2590 0 conicto 2207 -64 1811 -64 conicto 1035 -64 613 291 conicto 192 647 192 1297 conicto 192 1673 326 2027 conicto 460 2381 717 2675 conicto 1021 3028 1444 3210 conicto 1867 3392 2383 3392 conicto 3053 3392 3446 3042 conicto 3840 2692 3840 2099 conicto 3840 1984 3824 1855 conicto 3808 1726 3774 1573 conicto 2798 2048 moveto 2807 2085 2811 2123 conicto 2816 2161 2816 2197 conicto 2816 2423 2674 2555 conicto 2533 2688 2290 2688 conicto 1980 2688 1763 2526 conicto 1546 2364 1431 2048 conicto 2798 2048 lineto end_ol grestore gsave 63.768476 -21.014823 translate 0.035278 -0.035278 scale start_ol 433 1315 moveto 832 3264 lineto 1869 3264 lineto 1543 1603 lineto 1509 1441 1491 1327 conicto 1474 1213 1474 1147 conicto 1474 967 1575 867 conicto 1676 768 1864 768 conicto 2185 768 2416 1013 conicto 2647 1258 2734 1694 conicto 3046 3264 lineto 4096 3264 lineto 3456 0 lineto 2413 0 lineto 2508 516 lineto 2239 224 1944 80 conicto 1649 -64 1322 -64 conicto 875 -64 629 176 conicto 384 416 384 855 conicto 384 959 396 1074 conicto 409 1190 433 1315 conicto end_ol grestore gsave 64.337942 -21.014823 translate 0.035278 -0.035278 scale start_ol 3081 2432 moveto 2973 2495 2842 2527 conicto 2711 2560 2560 2560 conicto 2160 2560 1896 2297 conicto 1633 2035 1540 1540 conicto 1243 0 lineto 192 0 lineto 832 3264 lineto 1881 3264 lineto 1767 2748 lineto 1974 3060 2284 3226 conicto 2594 3392 2973 3392 conicto 3028 3392 3098 3382 conicto 3168 3373 3264 3354 conicto 3081 2432 lineto end_ol grestore gsave 64.732568 -21.014823 translate 0.035278 -0.035278 scale start_ol 832 3264 moveto 1899 3264 lineto 1256 0 lineto 192 0 lineto 832 3264 lineto 1088 4544 moveto 2146 4544 lineto 1978 3648 lineto 896 3648 lineto 1088 4544 lineto end_ol grestore gsave 65.007304 -21.014823 translate 0.035278 -0.035278 scale start_ol 3394 3200 moveto 3238 2368 lineto 2932 2525 2628 2606 conicto 2324 2688 2053 2688 conicto 1744 2688 1576 2604 conicto 1408 2521 1408 2367 conicto 1408 2276 1499 2221 conicto 1591 2167 1861 2106 conicto 2047 2071 lineto 2687 1937 2943 1726 conicto 3200 1515 3200 1140 conicto 3200 573 2747 254 conicto 2294 -64 1486 -64 conicto 1148 -64 795 -16 conicto 443 32 76 128 conicto 234 960 lineto 519 801 844 720 conicto 1169 640 1509 640 conicto 1841 640 2008 716 conicto 2176 793 2176 941 conicto 2176 1044 2084 1100 conicto 1993 1157 1706 1217 conicto 1520 1252 lineto 942 1370 695 1601 conicto 448 1832 448 2241 conicto 448 2794 866 3093 conicto 1284 3392 2061 3392 conicto 2401 3392 2730 3344 conicto 3060 3296 3394 3200 conicto end_ol grestore gsave 65.481859 -21.014823 translate 0.035278 -0.035278 scale start_ol 2143 4224 moveto 1964 3264 lineto 3039 3264 lineto 2889 2496 lineto 1814 2496 lineto 1544 1149 lineto 1532 1104 1527 1072 conicto 1523 1041 1523 1013 conicto 1523 882 1612 825 conicto 1702 768 1914 768 conicto 2457 768 lineto 2308 0 lineto 1423 0 lineto 947 0 697 200 conicto 448 401 448 778 conicto 448 860 457 954 conicto 466 1049 483 1146 conicto 754 2496 lineto 246 2496 lineto 384 3264 lineto 903 3264 lineto 1085 4224 lineto 2143 4224 lineto end_ol grestore gsave 65.864000 -21.014823 translate 0.035278 -0.035278 scale start_ol 832 3264 moveto 1899 3264 lineto 1256 0 lineto 192 0 lineto 832 3264 lineto 1088 4544 moveto 2146 4544 lineto 1978 3648 lineto 896 3648 lineto 1088 4544 lineto end_ol grestore gsave 66.138737 -21.014823 translate 0.035278 -0.035278 scale start_ol 3456 3136 moveto 3287 2304 lineto 3073 2461 2865 2542 conicto 2658 2624 2459 2624 conicto 1939 2624 1609 2284 conicto 1280 1944 1280 1415 conicto 1280 1077 1485 890 conicto 1690 704 2064 704 conicto 2313 704 2553 785 conicto 2794 866 3011 1024 conicto 2847 192 lineto 2587 64 2324 0 conicto 2061 -64 1796 -64 conicto 1024 -64 608 284 conicto 192 632 192 1273 conicto 192 1676 346 2055 conicto 500 2434 787 2737 conicto 1106 3069 1519 3230 conicto 1932 3392 2472 3392 conicto 2721 3392 2967 3328 conicto 3213 3264 3456 3136 conicto end_ol grestore 1.000000 1.000000 1.000000 srgb n 57.351774 -20.564823 m 57.351774 -20.164823 l 66.871774 -20.164823 l 66.871774 -20.564823 l f 0.000000 0.000000 0.000000 srgb n 57.351774 -20.564823 m 57.351774 -20.164823 l 66.871774 -20.164823 l 66.871774 -20.564823 l cp s 1.000000 1.000000 1.000000 srgb n 57.351774 -20.164823 m 57.351774 -19.764823 l 66.871774 -19.764823 l 66.871774 -20.164823 l f 0.000000 0.000000 0.000000 srgb n 57.351774 -20.164823 m 57.351774 -19.764823 l 66.871774 -19.764823 l 66.871774 -20.164823 l cp s 1.000000 1.000000 1.000000 srgb n 64.571774 -22.064823 m 64.571774 -21.664823 l 67.271774 -21.664823 l 67.271774 -22.064823 l f [0.300000] 0 sd [0.300000] 0 sd 0.000000 0.000000 0.000000 srgb n 64.571774 -22.064823 m 64.571774 -21.664823 l 67.271774 -21.664823 l 67.271774 -22.064823 l cp s 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb n 63.194339 -12.345584 m 63.194339 -10.945584 l 72.424339 -10.945584 l 72.424339 -12.345584 l f 0.000000 0.000000 0.000000 srgb n 63.194339 -12.345584 m 63.194339 -10.945584 l 72.424339 -10.945584 l 72.424339 -12.345584 l cp s gsave 63.444339 -11.395584 translate 0.035278 -0.035278 scale start_ol 576 4416 moveto 2455 4416 lineto 3279 4416 3719 4042 conicto 4160 3669 4160 2977 conicto 4160 2283 3719 1909 conicto 3279 1536 2455 1536 conicto 1728 1536 lineto 1728 0 lineto 576 0 lineto 576 4416 lineto 1728 3584 moveto 1728 2368 lineto 2338 2368 lineto 2659 2368 2833 2527 conicto 3008 2686 3008 2977 conicto 3008 3269 2833 3426 conicto 2659 3584 2338 3584 conicto 1728 3584 lineto end_ol grestore gsave 64.031284 -11.395584 translate 0.035278 -0.035278 scale start_ol 2085 2624 moveto 1723 2624 1533 2377 conicto 1344 2130 1344 1664 conicto 1344 1198 1533 951 conicto 1723 704 2085 704 conicto 2440 704 2628 951 conicto 2816 1198 2816 1664 conicto 2816 2130 2628 2377 conicto 2440 2624 2085 2624 conicto 2084 3392 moveto 2941 3392 3422 2933 conicto 3904 2475 3904 1664 conicto 3904 853 3422 394 conicto 2941 -64 2084 -64 conicto 1225 -64 740 394 conicto 256 853 256 1664 conicto 256 2475 740 2933 conicto 1225 3392 2084 3392 conicto end_ol grestore gsave 64.580766 -11.395584 translate 0.035278 -0.035278 scale start_ol 1536 512 moveto 1536 -1280 lineto 512 -1280 lineto 512 3264 lineto 1536 3264 lineto 1536 2816 lineto 1755 3112 2021 3252 conicto 2287 3392 2633 3392 conicto 3245 3392 3638 2908 conicto 4032 2425 4032 1664 conicto 4032 903 3638 419 conicto 3245 -64 2633 -64 conicto 2287 -64 2021 76 conicto 1755 216 1536 512 conicto 2243 2624 moveto 1901 2624 1718 2376 conicto 1536 2129 1536 1664 conicto 1536 1199 1718 951 conicto 1901 704 2243 704 conicto 2585 704 2764 950 conicto 2944 1196 2944 1664 conicto 2944 2132 2764 2378 conicto 2585 2624 2243 2624 conicto end_ol grestore gsave 65.152729 -11.395584 translate 0.035278 -0.035278 scale start_ol 512 1320 moveto 512 3264 lineto 1536 3264 lineto 1536 2946 lineto 1536 2687 1533 2296 conicto 1530 1905 1530 1775 conicto 1530 1391 1552 1221 conicto 1574 1052 1627 976 conicto 1696 876 1807 822 conicto 1919 768 2063 768 conicto 2415 768 2615 1012 conicto 2816 1257 2816 1692 conicto 2816 3264 lineto 3840 3264 lineto 3840 0 lineto 2816 0 lineto 2816 512 lineto 2573 216 2301 76 conicto 2030 -64 1703 -64 conicto 1121 -64 816 290 conicto 512 644 512 1320 conicto end_ol grestore gsave 65.722195 -11.395584 translate 0.035278 -0.035278 scale start_ol 512 4544 moveto 1536 4544 lineto 1536 0 lineto 512 0 lineto 512 4544 lineto end_ol grestore gsave 65.996931 -11.395584 translate 0.035278 -0.035278 scale start_ol 1981 1472 moveto 1632 1472 1456 1365 conicto 1280 1258 1280 1049 conicto 1280 857 1421 748 conicto 1563 640 1816 640 conicto 2130 640 2345 844 conicto 2560 1049 2560 1356 conicto 2560 1472 lineto 1981 1472 lineto 3584 1878 moveto 3584 0 lineto 2560 0 lineto 2560 512 lineto 2345 211 2076 73 conicto 1808 -64 1423 -64 conicto 904 -64 580 232 conicto 256 528 256 1001 conicto 256 1575 654 1843 conicto 1052 2112 1903 2112 conicto 2560 2112 lineto 2560 2202 lineto 2560 2454 2363 2571 conicto 2166 2688 1748 2688 conicto 1409 2688 1117 2624 conicto 826 2560 576 2432 conicto 576 3264 lineto 906 3327 1238 3359 conicto 1571 3392 1903 3392 conicto 2793 3392 3188 3036 conicto 3584 2680 3584 1878 conicto end_ol grestore gsave 66.536425 -11.395584 translate 0.035278 -0.035278 scale start_ol 2944 2432 moveto 2804 2497 2666 2528 conicto 2528 2560 2389 2560 conicto 1979 2560 1757 2296 conicto 1536 2032 1536 1540 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2752 lineto 1741 3086 2007 3239 conicto 2273 3392 2644 3392 conicto 2697 3392 2759 3385 conicto 2822 3378 2941 3354 conicto 2944 2432 lineto end_ol grestore gsave 66.931051 -11.395584 translate 0.035278 -0.035278 scale start_ol 512 3264 moveto 1536 3264 lineto 1536 0 lineto 512 0 lineto 512 3264 lineto 512 4544 moveto 1536 4544 lineto 1536 3648 lineto 512 3648 lineto 512 4544 lineto end_ol grestore gsave 67.205788 -11.395584 translate 0.035278 -0.035278 scale start_ol 1600 4224 moveto 1600 3264 lineto 2688 3264 lineto 2688 2496 lineto 1600 2496 lineto 1600 1146 lineto 1600 924 1694 846 conicto 1788 768 2067 768 conicto 2624 768 lineto 2624 0 lineto 1694 0 lineto 1085 0 830 260 conicto 576 521 576 1146 conicto 576 2496 lineto 64 2496 lineto 64 3264 lineto 576 3264 lineto 576 4224 lineto 1600 4224 lineto end_ol grestore gsave 67.587929 -11.395584 translate 0.035278 -0.035278 scale start_ol 64 3264 moveto 1108 3264 lineto 1986 1049 lineto 2732 3264 lineto 3776 3264 lineto 2403 -284 lineto 2196 -838 1920 -1059 conicto 1644 -1280 1192 -1280 conicto 589 -1280 lineto 589 -576 lineto 915 -576 lineto 1181 -576 1302 -495 conicto 1423 -415 1490 -206 conicto 1519 -116 lineto 64 3264 lineto end_ol grestore gsave 68.109935 -11.395584 translate 0.035278 -0.035278 scale start_ol 576 4416 moveto 1728 4416 lineto 1728 2752 lineto 3328 2752 lineto 3328 4416 lineto 4480 4416 lineto 4480 0 lineto 3328 0 lineto 3328 1920 lineto 1728 1920 lineto 1728 0 lineto 576 0 lineto 576 4416 lineto end_ol grestore gsave 68.779306 -11.395584 translate 0.035278 -0.035278 scale start_ol 3776 1703 moveto 3776 1408 lineto 1280 1408 lineto 1319 1024 1554 832 conicto 1790 640 2213 640 conicto 2555 640 2912 735 conicto 3270 831 3648 1024 conicto 3648 192 lineto 3273 65 2898 0 conicto 2523 -64 2148 -64 conicto 1251 -64 753 390 conicto 256 844 256 1664 conicto 256 2469 740 2930 conicto 1225 3392 2075 3392 conicto 2848 3392 3312 2932 conicto 3776 2472 3776 1703 conicto 2752 2048 moveto 2752 2336 2565 2512 conicto 2379 2688 2077 2688 conicto 1751 2688 1547 2523 conicto 1343 2358 1293 2048 conicto 2752 2048 lineto end_ol grestore gsave 69.321297 -11.395584 translate 0.035278 -0.035278 scale start_ol 512 1320 moveto 512 3264 lineto 1536 3264 lineto 1536 2946 lineto 1536 2687 1533 2296 conicto 1530 1905 1530 1775 conicto 1530 1391 1552 1221 conicto 1574 1052 1627 976 conicto 1696 876 1807 822 conicto 1919 768 2063 768 conicto 2415 768 2615 1012 conicto 2816 1257 2816 1692 conicto 2816 3264 lineto 3840 3264 lineto 3840 0 lineto 2816 0 lineto 2816 512 lineto 2573 216 2301 76 conicto 2030 -64 1703 -64 conicto 1121 -64 816 290 conicto 512 644 512 1320 conicto end_ol grestore gsave 69.890763 -11.395584 translate 0.035278 -0.035278 scale start_ol 2944 2432 moveto 2804 2497 2666 2528 conicto 2528 2560 2389 2560 conicto 1979 2560 1757 2296 conicto 1536 2032 1536 1540 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2752 lineto 1741 3086 2007 3239 conicto 2273 3392 2644 3392 conicto 2697 3392 2759 3385 conicto 2822 3378 2941 3354 conicto 2944 2432 lineto end_ol grestore gsave 70.285389 -11.395584 translate 0.035278 -0.035278 scale start_ol 512 3264 moveto 1536 3264 lineto 1536 0 lineto 512 0 lineto 512 3264 lineto 512 4544 moveto 1536 4544 lineto 1536 3648 lineto 512 3648 lineto 512 4544 lineto end_ol grestore gsave 70.560126 -11.395584 translate 0.035278 -0.035278 scale start_ol 3136 3200 moveto 3136 2432 lineto 2794 2560 2476 2624 conicto 2159 2688 1877 2688 conicto 1574 2688 1427 2616 conicto 1280 2544 1280 2395 conicto 1280 2274 1393 2209 conicto 1507 2145 1800 2114 conicto 1990 2088 lineto 2781 1984 3054 1746 conicto 3328 1509 3328 1002 conicto 3328 470 2939 203 conicto 2550 -64 1778 -64 conicto 1451 -64 1101 0 conicto 752 64 384 192 conicto 384 960 lineto 706 800 1045 720 conicto 1384 640 1733 640 conicto 2049 640 2208 727 conicto 2368 814 2368 986 conicto 2368 1130 2257 1200 conicto 2147 1271 1818 1310 conicto 1628 1334 lineto 903 1421 611 1657 conicto 320 1893 320 2373 conicto 320 2891 685 3141 conicto 1050 3392 1804 3392 conicto 2101 3392 2427 3345 conicto 2753 3299 3136 3200 conicto end_ol grestore gsave 71.034681 -11.395584 translate 0.035278 -0.035278 scale start_ol 1600 4224 moveto 1600 3264 lineto 2688 3264 lineto 2688 2496 lineto 1600 2496 lineto 1600 1146 lineto 1600 924 1694 846 conicto 1788 768 2067 768 conicto 2624 768 lineto 2624 0 lineto 1694 0 lineto 1085 0 830 260 conicto 576 521 576 1146 conicto 576 2496 lineto 64 2496 lineto 64 3264 lineto 576 3264 lineto 576 4224 lineto 1600 4224 lineto end_ol grestore gsave 71.416822 -11.395584 translate 0.035278 -0.035278 scale start_ol 512 3264 moveto 1536 3264 lineto 1536 0 lineto 512 0 lineto 512 3264 lineto 512 4544 moveto 1536 4544 lineto 1536 3648 lineto 512 3648 lineto 512 4544 lineto end_ol grestore gsave 71.691558 -11.395584 translate 0.035278 -0.035278 scale start_ol 3136 3136 moveto 3136 2304 lineto 2924 2467 2710 2545 conicto 2496 2624 2266 2624 conicto 1830 2624 1587 2371 conicto 1344 2118 1344 1664 conicto 1344 1210 1587 957 conicto 1830 704 2266 704 conicto 2511 704 2730 785 conicto 2950 866 3136 1024 conicto 3136 192 lineto 2891 64 2639 0 conicto 2388 -64 2134 -64 conicto 1252 -64 754 393 conicto 256 850 256 1664 conicto 256 2478 754 2935 conicto 1252 3392 2134 3392 conicto 2391 3392 2639 3328 conicto 2888 3264 3136 3136 conicto end_ol grestore 1.000000 1.000000 1.000000 srgb n 63.194339 -10.945584 m 63.194339 -10.545584 l 72.424339 -10.545584 l 72.424339 -10.945584 l f 0.000000 0.000000 0.000000 srgb n 63.194339 -10.945584 m 63.194339 -10.545584 l 72.424339 -10.545584 l 72.424339 -10.945584 l cp s 1.000000 1.000000 1.000000 srgb n 63.194339 -10.545584 m 63.194339 -10.145584 l 72.424339 -10.145584 l 72.424339 -10.545584 l f 0.000000 0.000000 0.000000 srgb n 63.194339 -10.545584 m 63.194339 -10.145584 l 72.424339 -10.145584 l 72.424339 -10.545584 l cp s 0.100000 slw [] 0 sd 0 slj 0 slc n 62.111774 -18.853020 m 62.111774 -10.865857 l 63.194339 -10.865857 l 63.194339 -11.645584 l s 0 slj 1.000000 1.000000 1.000000 srgb n 62.511774 -18.853020 m 62.111774 -19.653020 l 61.711774 -18.853020 l ef 0.100000 slw [] 0 sd 0 slj 0.000000 0.000000 0.000000 srgb n 62.511774 -18.853020 m 62.111774 -19.653020 l 61.711774 -18.853020 l cp s 0.100000 slw [] 0 sd 0 slj 0 slc n 62.111774 -18.853020 m 62.111774 -14.254163 l 63.396649 -14.254163 l s 0 slj 1.000000 1.000000 1.000000 srgb n 62.511774 -18.853020 m 62.111774 -19.653020 l 61.711774 -18.853020 l ef 0.100000 slw [] 0 sd 0 slj 0.000000 0.000000 0.000000 srgb n 62.511774 -18.853020 m 62.111774 -19.653020 l 61.711774 -18.853020 l cp s 0.100000 slw [] 0 sd 0 slj 0 slc n 62.111774 -18.853020 m 62.111774 -16.870458 l 63.256219 -16.870458 l s 0 slj 1.000000 1.000000 1.000000 srgb n 62.511774 -18.853020 m 62.111774 -19.653020 l 61.711774 -18.853020 l ef 0.100000 slw [] 0 sd 0 slj 0.000000 0.000000 0.000000 srgb n 62.511774 -18.853020 m 62.111774 -19.653020 l 61.711774 -18.853020 l cp s 0.100000 slw [] 0 sd 0 slj 0 slc n 23.605278 -22.661122 m 25.350216 -22.661122 l 25.350216 -22.570711 l 28.353734 -22.570711 l s [] 0 sd 0 slj 0 slc 1.000000 1.000000 1.000000 srgb n 22.346699 -22.661122 m 23.046699 -22.901122 l 23.746699 -22.661122 l 23.046699 -22.421122 l ef 0.100000 slw [] 0 sd 0 slj 0 slc 0.000000 0.000000 0.000000 srgb n 22.346699 -22.661122 m 23.046699 -22.901122 l 23.746699 -22.661122 l 23.046699 -22.421122 l cp s 0.100000 slw [] 0 sd 0 slj 0 slc n 16.321699 -19.510762 m 16.321699 -15.136584 l 25.275216 -15.136584 l 25.275216 -10.762407 l s n 20.898458 -15.136584 m 20.898458 -15.536584 l 21.298458 -15.336584 l ef 0.100000 slw [] 0 sd 0 slj 0 slc n 9.038120 -22.661122 m -1.381472 -22.661122 l -1.381472 -16.500000 l s [] 0 sd 0 slj 0 slc 1.000000 1.000000 1.000000 srgb n 10.296699 -22.661122 m 9.596699 -22.421122 l 8.896699 -22.661122 l 9.596699 -22.901122 l ef 0.100000 slw [] 0 sd 0 slj 0 slc 0.000000 0.000000 0.000000 srgb n 10.296699 -22.661122 m 9.596699 -22.421122 l 8.896699 -22.661122 l 9.596699 -22.901122 l cp s 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb n 36.810100 -12.870711 m 36.810100 -11.470711 l 55.020100 -11.470711 l 55.020100 -12.870711 l f 0.000000 0.000000 0.000000 srgb n 36.810100 -12.870711 m 36.810100 -11.470711 l 55.020100 -11.470711 l 55.020100 -12.870711 l cp s gsave 41.092600 -11.920711 translate 0.035278 -0.035278 scale start_ol 4032 267 moveto 3722 103 3386 19 conicto 3050 -64 2685 -64 conicto 1594 -64 957 556 conicto 320 1177 320 2239 conicto 320 3303 957 3923 conicto 1594 4544 2685 4544 conicto 3050 4544 3386 4460 conicto 3722 4377 4032 4213 conicto 4032 3328 lineto 3718 3527 3412 3619 conicto 3107 3712 2770 3712 conicto 2165 3712 1818 3320 conicto 1472 2928 1472 2239 conicto 1472 1552 1818 1160 conicto 2165 768 2770 768 conicto 3107 768 3412 860 conicto 3718 953 4032 1152 conicto 4032 267 lineto end_ol grestore gsave 41.679545 -11.920711 translate 0.035278 -0.035278 scale start_ol 2085 2624 moveto 1723 2624 1533 2377 conicto 1344 2130 1344 1664 conicto 1344 1198 1533 951 conicto 1723 704 2085 704 conicto 2440 704 2628 951 conicto 2816 1198 2816 1664 conicto 2816 2130 2628 2377 conicto 2440 2624 2085 2624 conicto 2084 3392 moveto 2941 3392 3422 2933 conicto 3904 2475 3904 1664 conicto 3904 853 3422 394 conicto 2941 -64 2084 -64 conicto 1225 -64 740 394 conicto 256 853 256 1664 conicto 256 2475 740 2933 conicto 1225 3392 2084 3392 conicto end_ol grestore gsave 42.229027 -11.920711 translate 0.035278 -0.035278 scale start_ol 512 4544 moveto 1536 4544 lineto 1536 0 lineto 512 0 lineto 512 4544 lineto end_ol grestore gsave 42.503763 -11.920711 translate 0.035278 -0.035278 scale start_ol 1981 1472 moveto 1632 1472 1456 1365 conicto 1280 1258 1280 1049 conicto 1280 857 1421 748 conicto 1563 640 1816 640 conicto 2130 640 2345 844 conicto 2560 1049 2560 1356 conicto 2560 1472 lineto 1981 1472 lineto 3584 1878 moveto 3584 0 lineto 2560 0 lineto 2560 512 lineto 2345 211 2076 73 conicto 1808 -64 1423 -64 conicto 904 -64 580 232 conicto 256 528 256 1001 conicto 256 1575 654 1843 conicto 1052 2112 1903 2112 conicto 2560 2112 lineto 2560 2202 lineto 2560 2454 2363 2571 conicto 2166 2688 1748 2688 conicto 1409 2688 1117 2624 conicto 826 2560 576 2432 conicto 576 3264 lineto 906 3327 1238 3359 conicto 1571 3392 1903 3392 conicto 2793 3392 3188 3036 conicto 3584 2680 3584 1878 conicto end_ol grestore gsave 43.043257 -11.920711 translate 0.035278 -0.035278 scale start_ol 2243 704 moveto 2585 704 2764 950 conicto 2944 1196 2944 1664 conicto 2944 2132 2764 2378 conicto 2585 2624 2243 2624 conicto 1901 2624 1718 2376 conicto 1536 2129 1536 1664 conicto 1536 1199 1718 951 conicto 1901 704 2243 704 conicto 1536 2816 moveto 1755 3112 2021 3252 conicto 2287 3392 2633 3392 conicto 3245 3392 3638 2908 conicto 4032 2425 4032 1664 conicto 4032 903 3638 419 conicto 3245 -64 2633 -64 conicto 2287 -64 2021 60 conicto 1755 185 1536 448 conicto 1536 0 lineto 512 0 lineto 512 4544 lineto 1536 4544 lineto 1536 2816 lineto end_ol grestore gsave 43.615220 -11.920711 translate 0.035278 -0.035278 scale start_ol 2085 2624 moveto 1723 2624 1533 2377 conicto 1344 2130 1344 1664 conicto 1344 1198 1533 951 conicto 1723 704 2085 704 conicto 2440 704 2628 951 conicto 2816 1198 2816 1664 conicto 2816 2130 2628 2377 conicto 2440 2624 2085 2624 conicto 2084 3392 moveto 2941 3392 3422 2933 conicto 3904 2475 3904 1664 conicto 3904 853 3422 394 conicto 2941 -64 2084 -64 conicto 1225 -64 740 394 conicto 256 853 256 1664 conicto 256 2475 740 2933 conicto 1225 3392 2084 3392 conicto end_ol grestore gsave 44.164702 -11.920711 translate 0.035278 -0.035278 scale start_ol 2944 2432 moveto 2804 2497 2666 2528 conicto 2528 2560 2389 2560 conicto 1979 2560 1757 2296 conicto 1536 2032 1536 1540 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2752 lineto 1741 3086 2007 3239 conicto 2273 3392 2644 3392 conicto 2697 3392 2759 3385 conicto 2822 3378 2941 3354 conicto 2944 2432 lineto end_ol grestore gsave 44.559328 -11.920711 translate 0.035278 -0.035278 scale start_ol 1981 1472 moveto 1632 1472 1456 1365 conicto 1280 1258 1280 1049 conicto 1280 857 1421 748 conicto 1563 640 1816 640 conicto 2130 640 2345 844 conicto 2560 1049 2560 1356 conicto 2560 1472 lineto 1981 1472 lineto 3584 1878 moveto 3584 0 lineto 2560 0 lineto 2560 512 lineto 2345 211 2076 73 conicto 1808 -64 1423 -64 conicto 904 -64 580 232 conicto 256 528 256 1001 conicto 256 1575 654 1843 conicto 1052 2112 1903 2112 conicto 2560 2112 lineto 2560 2202 lineto 2560 2454 2363 2571 conicto 2166 2688 1748 2688 conicto 1409 2688 1117 2624 conicto 826 2560 576 2432 conicto 576 3264 lineto 906 3327 1238 3359 conicto 1571 3392 1903 3392 conicto 2793 3392 3188 3036 conicto 3584 2680 3584 1878 conicto end_ol grestore gsave 45.098822 -11.920711 translate 0.035278 -0.035278 scale start_ol 1600 4224 moveto 1600 3264 lineto 2688 3264 lineto 2688 2496 lineto 1600 2496 lineto 1600 1146 lineto 1600 924 1694 846 conicto 1788 768 2067 768 conicto 2624 768 lineto 2624 0 lineto 1694 0 lineto 1085 0 830 260 conicto 576 521 576 1146 conicto 576 2496 lineto 64 2496 lineto 64 3264 lineto 576 3264 lineto 576 4224 lineto 1600 4224 lineto end_ol grestore gsave 45.480963 -11.920711 translate 0.035278 -0.035278 scale start_ol 512 3264 moveto 1536 3264 lineto 1536 0 lineto 512 0 lineto 512 3264 lineto 512 4544 moveto 1536 4544 lineto 1536 3648 lineto 512 3648 lineto 512 4544 lineto end_ol grestore gsave 45.755699 -11.920711 translate 0.035278 -0.035278 scale start_ol 64 3264 moveto 1107 3264 lineto 1920 1008 lineto 2730 3264 lineto 3776 3264 lineto 2491 0 lineto 1346 0 lineto 64 3264 lineto end_ol grestore gsave 46.277706 -11.920711 translate 0.035278 -0.035278 scale start_ol 3776 1703 moveto 3776 1408 lineto 1280 1408 lineto 1319 1024 1554 832 conicto 1790 640 2213 640 conicto 2555 640 2912 735 conicto 3270 831 3648 1024 conicto 3648 192 lineto 3273 65 2898 0 conicto 2523 -64 2148 -64 conicto 1251 -64 753 390 conicto 256 844 256 1664 conicto 256 2469 740 2930 conicto 1225 3392 2075 3392 conicto 2848 3392 3312 2932 conicto 3776 2472 3776 1703 conicto 2752 2048 moveto 2752 2336 2565 2512 conicto 2379 2688 2077 2688 conicto 1751 2688 1547 2523 conicto 1343 2358 1293 2048 conicto 2752 2048 lineto end_ol grestore gsave 46.819696 -11.920711 translate 0.035278 -0.035278 scale start_ol 3584 4323 moveto 3584 3392 lineto 3229 3551 2891 3631 conicto 2553 3712 2252 3712 conicto 1853 3712 1662 3599 conicto 1472 3487 1472 3251 conicto 1472 3074 1602 2975 conicto 1733 2876 2077 2805 conicto 2558 2707 lineto 3288 2558 3596 2254 conicto 3904 1950 3904 1390 conicto 3904 654 3477 295 conicto 3051 -64 2175 -64 conicto 1761 -64 1344 16 conicto 928 97 512 255 conicto 512 1216 lineto 927 993 1314 880 conicto 1702 768 2062 768 conicto 2427 768 2621 892 conicto 2816 1017 2816 1248 conicto 2816 1456 2682 1568 conicto 2549 1681 2150 1770 conicto 1713 1869 lineto 1056 2012 752 2324 conicto 448 2637 448 3166 conicto 448 3830 866 4187 conicto 1284 4544 2068 4544 conicto 2425 4544 2802 4488 conicto 3180 4433 3584 4323 conicto end_ol grestore gsave 47.394156 -11.920711 translate 0.035278 -0.035278 scale start_ol 1600 4224 moveto 1600 3264 lineto 2688 3264 lineto 2688 2496 lineto 1600 2496 lineto 1600 1146 lineto 1600 924 1694 846 conicto 1788 768 2067 768 conicto 2624 768 lineto 2624 0 lineto 1694 0 lineto 1085 0 830 260 conicto 576 521 576 1146 conicto 576 2496 lineto 64 2496 lineto 64 3264 lineto 576 3264 lineto 576 4224 lineto 1600 4224 lineto end_ol grestore gsave 47.776297 -11.920711 translate 0.035278 -0.035278 scale start_ol 2944 2432 moveto 2804 2497 2666 2528 conicto 2528 2560 2389 2560 conicto 1979 2560 1757 2296 conicto 1536 2032 1536 1540 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2752 lineto 1741 3086 2007 3239 conicto 2273 3392 2644 3392 conicto 2697 3392 2759 3385 conicto 2822 3378 2941 3354 conicto 2944 2432 lineto end_ol grestore gsave 48.170924 -11.920711 translate 0.035278 -0.035278 scale start_ol 1981 1472 moveto 1632 1472 1456 1365 conicto 1280 1258 1280 1049 conicto 1280 857 1421 748 conicto 1563 640 1816 640 conicto 2130 640 2345 844 conicto 2560 1049 2560 1356 conicto 2560 1472 lineto 1981 1472 lineto 3584 1878 moveto 3584 0 lineto 2560 0 lineto 2560 512 lineto 2345 211 2076 73 conicto 1808 -64 1423 -64 conicto 904 -64 580 232 conicto 256 528 256 1001 conicto 256 1575 654 1843 conicto 1052 2112 1903 2112 conicto 2560 2112 lineto 2560 2202 lineto 2560 2454 2363 2571 conicto 2166 2688 1748 2688 conicto 1409 2688 1117 2624 conicto 826 2560 576 2432 conicto 576 3264 lineto 906 3327 1238 3359 conicto 1571 3392 1903 3392 conicto 2793 3392 3188 3036 conicto 3584 2680 3584 1878 conicto end_ol grestore gsave 48.710417 -11.920711 translate 0.035278 -0.035278 scale start_ol 1600 4224 moveto 1600 3264 lineto 2688 3264 lineto 2688 2496 lineto 1600 2496 lineto 1600 1146 lineto 1600 924 1694 846 conicto 1788 768 2067 768 conicto 2624 768 lineto 2624 0 lineto 1694 0 lineto 1085 0 830 260 conicto 576 521 576 1146 conicto 576 2496 lineto 64 2496 lineto 64 3264 lineto 576 3264 lineto 576 4224 lineto 1600 4224 lineto end_ol grestore gsave 49.092558 -11.920711 translate 0.035278 -0.035278 scale start_ol 3776 1703 moveto 3776 1408 lineto 1280 1408 lineto 1319 1024 1554 832 conicto 1790 640 2213 640 conicto 2555 640 2912 735 conicto 3270 831 3648 1024 conicto 3648 192 lineto 3273 65 2898 0 conicto 2523 -64 2148 -64 conicto 1251 -64 753 390 conicto 256 844 256 1664 conicto 256 2469 740 2930 conicto 1225 3392 2075 3392 conicto 2848 3392 3312 2932 conicto 3776 2472 3776 1703 conicto 2752 2048 moveto 2752 2336 2565 2512 conicto 2379 2688 2077 2688 conicto 1751 2688 1547 2523 conicto 1343 2358 1293 2048 conicto 2752 2048 lineto end_ol grestore gsave 49.634549 -11.920711 translate 0.035278 -0.035278 scale start_ol 2752 576 moveto 2533 279 2269 139 conicto 2005 0 1658 0 conicto 1050 0 653 478 conicto 256 957 256 1697 conicto 256 2441 653 2916 conicto 1050 3392 1658 3392 conicto 2005 3392 2269 3253 conicto 2533 3115 2752 2816 conicto 2752 3264 lineto 3776 3264 lineto 3776 343 lineto 3776 -447 3274 -863 conicto 2772 -1280 1818 -1280 conicto 1509 -1280 1220 -1232 conicto 932 -1185 640 -1088 conicto 640 -256 lineto 922 -417 1191 -496 conicto 1461 -576 1733 -576 conicto 2261 -576 2506 -353 conicto 2752 -131 2752 343 conicto 2752 576 lineto 2047 2624 moveto 1715 2624 1529 2381 conicto 1344 2139 1344 1695 conicto 1344 1239 1523 1003 conicto 1703 768 2047 768 conicto 2381 768 2566 1010 conicto 2752 1253 2752 1695 conicto 2752 2139 2566 2381 conicto 2381 2624 2047 2624 conicto end_ol grestore gsave 50.206512 -11.920711 translate 0.035278 -0.035278 scale start_ol 64 3264 moveto 1108 3264 lineto 1986 1049 lineto 2732 3264 lineto 3776 3264 lineto 2403 -284 lineto 2196 -838 1920 -1059 conicto 1644 -1280 1192 -1280 conicto 589 -1280 lineto 589 -576 lineto 915 -576 lineto 1181 -576 1302 -495 conicto 1423 -415 1490 -206 conicto 1519 -116 lineto 64 3264 lineto end_ol grestore 1.000000 1.000000 1.000000 srgb n 36.810100 -11.470711 m 36.810100 -11.070711 l 55.020100 -11.070711 l 55.020100 -11.470711 l f 0.000000 0.000000 0.000000 srgb n 36.810100 -11.470711 m 36.810100 -11.070711 l 55.020100 -11.070711 l 55.020100 -11.470711 l cp s 1.000000 1.000000 1.000000 srgb n 36.810100 -11.070711 m 36.810100 -10.070711 l 55.020100 -10.070711 l 55.020100 -11.070711 l f 0.000000 0.000000 0.000000 srgb n 36.810100 -11.070711 m 36.810100 -10.070711 l 55.020100 -10.070711 l 55.020100 -11.070711 l cp s gsave 36.960100 -10.370711 translate 0.035278 -0.035278 scale start_ol 1664 2752 moveto 1664 1728 lineto 2688 1728 lineto 2688 1344 lineto 1664 1344 lineto 1664 320 lineto 1280 320 lineto 1280 1344 lineto 256 1344 lineto 256 1728 lineto 1280 1728 lineto 1280 2752 lineto 1664 2752 lineto end_ol grestore gsave 37.344738 -10.370711 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 37.729376 -10.370711 translate 0.035278 -0.035278 scale start_ol 448 1023 moveto 448 2688 lineto 896 2688 lineto 896 1023 lineto 896 661 1022 490 conicto 1149 320 1414 320 conicto 1722 320 1885 539 conicto 2048 759 2048 1169 conicto 2048 2688 lineto 2496 2688 lineto 2496 0 lineto 2048 0 lineto 2048 409 lineto 1931 176 1729 56 conicto 1528 -64 1259 -64 conicto 849 -64 648 206 conicto 448 476 448 1023 conicto end_ol grestore gsave 38.114014 -10.370711 translate 0.035278 -0.035278 scale start_ol 2496 1665 moveto 2496 0 lineto 2048 0 lineto 2048 1665 lineto 2048 2027 1922 2197 conicto 1797 2368 1530 2368 conicto 1225 2368 1060 2148 conicto 896 1929 896 1519 conicto 896 0 lineto 448 0 lineto 448 2688 lineto 896 2688 lineto 896 2284 lineto 1013 2514 1213 2633 conicto 1413 2752 1686 2752 conicto 2094 2752 2295 2482 conicto 2496 2212 2496 1665 conicto end_ol grestore gsave 38.498652 -10.370711 translate 0.035278 -0.035278 scale start_ol 2112 3712 moveto 1790 3168 1631 2627 conicto 1472 2087 1472 1538 conicto 1472 992 1631 450 conicto 1790 -91 2112 -640 conicto 1724 -640 lineto 1370 -72 1197 466 conicto 1024 1004 1024 1538 conicto 1024 2070 1197 2609 conicto 1370 3149 1724 3712 conicto 2112 3712 lineto end_ol grestore gsave 38.883290 -10.370711 translate 0.035278 -0.035278 scale start_ol 448 1023 moveto 448 2688 lineto 896 2688 lineto 896 1023 lineto 896 661 1022 490 conicto 1149 320 1414 320 conicto 1722 320 1885 539 conicto 2048 759 2048 1169 conicto 2048 2688 lineto 2496 2688 lineto 2496 0 lineto 2048 0 lineto 2048 409 lineto 1931 176 1729 56 conicto 1528 -64 1259 -64 conicto 849 -64 648 206 conicto 448 476 448 1023 conicto end_ol grestore gsave 39.267928 -10.370711 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave 39.652566 -10.370711 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 40.037204 -10.370711 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 40.421842 -10.370711 translate 0.035278 -0.035278 scale start_ol 1216 704 moveto 1792 704 lineto 1792 210 lineto 1344 -704 lineto 960 -704 lineto 1216 210 lineto 1216 704 lineto end_ol grestore gsave 40.806480 -10.370711 translate 0.035278 -0.035278 scale start_ol 448 1023 moveto 448 2688 lineto 896 2688 lineto 896 1023 lineto 896 661 1022 490 conicto 1149 320 1414 320 conicto 1722 320 1885 539 conicto 2048 759 2048 1169 conicto 2048 2688 lineto 2496 2688 lineto 2496 0 lineto 2048 0 lineto 2048 409 lineto 1931 176 1729 56 conicto 1528 -64 1259 -64 conicto 849 -64 648 206 conicto 448 476 448 1023 conicto end_ol grestore gsave 41.191118 -10.370711 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave 41.575756 -10.370711 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 41.960394 -10.370711 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 42.345032 -10.370711 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave 42.729670 -10.370711 translate 0.035278 -0.035278 scale start_ol 2944 -832 moveto 2944 -1152 lineto 0 -1152 lineto 0 -832 lineto 2944 -832 lineto end_ol grestore gsave 43.114308 -10.370711 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 43.498946 -10.370711 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 43.883584 -10.370711 translate 0.035278 -0.035278 scale start_ol 896 353 moveto 896 -1024 lineto 448 -1024 lineto 448 2688 lineto 896 2688 lineto 896 2335 lineto 1012 2539 1206 2645 conicto 1400 2752 1653 2752 conicto 2167 2752 2459 2376 conicto 2752 2000 2752 1334 conicto 2752 681 2458 308 conicto 2165 -64 1653 -64 conicto 1395 -64 1201 42 conicto 1007 149 896 353 conicto 2304 1344 moveto 2304 1851 2128 2109 conicto 1952 2368 1605 2368 conicto 1256 2368 1076 2108 conicto 896 1849 896 1344 conicto 896 841 1076 580 conicto 1256 320 1605 320 conicto 1952 320 2128 578 conicto 2304 837 2304 1344 conicto end_ol grestore gsave 44.268222 -10.370711 translate 0.035278 -0.035278 scale start_ol 1471 2368 moveto 1124 2368 946 2109 conicto 768 1851 768 1344 conicto 768 839 946 579 conicto 1124 320 1471 320 conicto 1820 320 1998 579 conicto 2176 839 2176 1344 conicto 2176 1851 1998 2109 conicto 1820 2368 1471 2368 conicto 1471 2752 moveto 2031 2752 2327 2390 conicto 2624 2029 2624 1344 conicto 2624 657 2328 296 conicto 2033 -64 1471 -64 conicto 911 -64 615 296 conicto 320 657 320 1344 conicto 320 2029 615 2390 conicto 911 2752 1471 2752 conicto end_ol grestore gsave 44.652860 -10.370711 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave 45.037498 -10.370711 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave 45.422136 -10.370711 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore gsave 45.806774 -10.370711 translate 0.035278 -0.035278 scale start_ol 1471 2368 moveto 1124 2368 946 2109 conicto 768 1851 768 1344 conicto 768 839 946 579 conicto 1124 320 1471 320 conicto 1820 320 1998 579 conicto 2176 839 2176 1344 conicto 2176 1851 1998 2109 conicto 1820 2368 1471 2368 conicto 1471 2752 moveto 2031 2752 2327 2390 conicto 2624 2029 2624 1344 conicto 2624 657 2328 296 conicto 2033 -64 1471 -64 conicto 911 -64 615 296 conicto 320 657 320 1344 conicto 320 2029 615 2390 conicto 911 2752 1471 2752 conicto end_ol grestore gsave 46.191412 -10.370711 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 46.576051 -10.370711 translate 0.035278 -0.035278 scale start_ol 2051 871 moveto 1942 589 1773 128 conicto 1537 -508 1456 -648 conicto 1347 -836 1183 -930 conicto 1019 -1024 800 -1024 conicto 448 -1024 lineto 448 -640 lineto 707 -640 lineto 900 -640 1009 -527 conicto 1118 -415 1287 53 conicto 256 2688 lineto 721 2688 lineto 1511 586 lineto 2288 2688 lineto 2752 2688 lineto 2051 871 lineto end_ol grestore gsave 46.960689 -10.370711 translate 0.035278 -0.035278 scale start_ol 1216 704 moveto 1792 704 lineto 1792 210 lineto 1344 -704 lineto 960 -704 lineto 1216 210 lineto 1216 704 lineto end_ol grestore gsave 47.345327 -10.370711 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave 47.729965 -10.370711 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave 48.114603 -10.370711 translate 0.035278 -0.035278 scale start_ol 1598 2401 moveto 1679 2580 1803 2666 conicto 1928 2752 2104 2752 conicto 2424 2752 2556 2499 conicto 2688 2247 2688 1548 conicto 2688 0 lineto 2304 0 lineto 2304 1529 lineto 2304 2094 2239 2231 conicto 2175 2368 2004 2368 conicto 1808 2368 1736 2221 conicto 1664 2075 1664 1529 conicto 1664 0 lineto 1280 0 lineto 1280 1529 lineto 1280 2101 1210 2234 conicto 1140 2368 959 2368 conicto 780 2368 710 2221 conicto 640 2075 640 1529 conicto 640 0 lineto 256 0 lineto 256 2688 lineto 640 2688 lineto 640 2446 lineto 719 2595 837 2673 conicto 956 2752 1107 2752 conicto 1289 2752 1410 2665 conicto 1531 2578 1598 2401 conicto end_ol grestore gsave 48.499241 -10.370711 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave 48.883879 -10.370711 translate 0.035278 -0.035278 scale start_ol 1536 926 moveto 1536 625 1646 472 conicto 1757 320 1973 320 conicto 2496 320 lineto 2496 0 lineto 1930 0 lineto 1528 0 1308 242 conicto 1088 484 1088 926 conicto 1088 3392 lineto 192 3392 lineto 192 3712 lineto 1536 3712 lineto 1536 926 lineto end_ol grestore gsave 49.268517 -10.370711 translate 0.035278 -0.035278 scale start_ol 1653 1344 moveto 1513 1344 lineto 1143 1344 955 1212 conicto 768 1080 768 818 conicto 768 582 908 451 conicto 1048 320 1297 320 conicto 1646 320 1846 566 conicto 2046 813 2048 1248 conicto 2048 1344 lineto 1653 1344 lineto 2496 1513 moveto 2496 0 lineto 2048 0 lineto 2048 416 lineto 1910 170 1701 53 conicto 1493 -64 1194 -64 conicto 796 -64 558 162 conicto 320 389 320 769 conicto 320 1209 614 1436 conicto 909 1664 1480 1664 conicto 2048 1664 lineto 2048 1737 lineto 2046 2069 1889 2218 conicto 1733 2368 1391 2368 conicto 1172 2368 948 2303 conicto 724 2238 512 2112 conicto 512 2560 lineto 752 2656 971 2704 conicto 1191 2752 1398 2752 conicto 1725 2752 1956 2652 conicto 2188 2552 2331 2352 conicto 2421 2230 2458 2051 conicto 2496 1872 2496 1513 conicto end_ol grestore gsave 49.653155 -10.370711 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 50.037793 -10.370711 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave 50.422431 -10.370711 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore gsave 50.807069 -10.370711 translate 0.035278 -0.035278 scale start_ol 2051 871 moveto 1942 589 1773 128 conicto 1537 -508 1456 -648 conicto 1347 -836 1183 -930 conicto 1019 -1024 800 -1024 conicto 448 -1024 lineto 448 -640 lineto 707 -640 lineto 900 -640 1009 -527 conicto 1118 -415 1287 53 conicto 256 2688 lineto 721 2688 lineto 1511 586 lineto 2288 2688 lineto 2752 2688 lineto 2051 871 lineto end_ol grestore gsave 51.191707 -10.370711 translate 0.035278 -0.035278 scale start_ol 2944 -832 moveto 2944 -1152 lineto 0 -1152 lineto 0 -832 lineto 2944 -832 lineto end_ol grestore gsave 51.576345 -10.370711 translate 0.035278 -0.035278 scale start_ol 1598 2401 moveto 1679 2580 1803 2666 conicto 1928 2752 2104 2752 conicto 2424 2752 2556 2499 conicto 2688 2247 2688 1548 conicto 2688 0 lineto 2304 0 lineto 2304 1529 lineto 2304 2094 2239 2231 conicto 2175 2368 2004 2368 conicto 1808 2368 1736 2221 conicto 1664 2075 1664 1529 conicto 1664 0 lineto 1280 0 lineto 1280 1529 lineto 1280 2101 1210 2234 conicto 1140 2368 959 2368 conicto 780 2368 710 2221 conicto 640 2075 640 1529 conicto 640 0 lineto 256 0 lineto 256 2688 lineto 640 2688 lineto 640 2446 lineto 719 2595 837 2673 conicto 956 2752 1107 2752 conicto 1289 2752 1410 2665 conicto 1531 2578 1598 2401 conicto end_ol grestore gsave 51.960983 -10.370711 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 52.345621 -10.370711 translate 0.035278 -0.035278 scale start_ol 1653 1344 moveto 1513 1344 lineto 1143 1344 955 1212 conicto 768 1080 768 818 conicto 768 582 908 451 conicto 1048 320 1297 320 conicto 1646 320 1846 566 conicto 2046 813 2048 1248 conicto 2048 1344 lineto 1653 1344 lineto 2496 1513 moveto 2496 0 lineto 2048 0 lineto 2048 416 lineto 1910 170 1701 53 conicto 1493 -64 1194 -64 conicto 796 -64 558 162 conicto 320 389 320 769 conicto 320 1209 614 1436 conicto 909 1664 1480 1664 conicto 2048 1664 lineto 2048 1737 lineto 2046 2069 1889 2218 conicto 1733 2368 1391 2368 conicto 1172 2368 948 2303 conicto 724 2238 512 2112 conicto 512 2560 lineto 752 2656 971 2704 conicto 1191 2752 1398 2752 conicto 1725 2752 1956 2652 conicto 2188 2552 2331 2352 conicto 2421 2230 2458 2051 conicto 2496 1872 2496 1513 conicto end_ol grestore gsave 52.730259 -10.370711 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave 53.114897 -10.370711 translate 0.035278 -0.035278 scale start_ol 448 1023 moveto 448 2688 lineto 896 2688 lineto 896 1023 lineto 896 661 1022 490 conicto 1149 320 1414 320 conicto 1722 320 1885 539 conicto 2048 759 2048 1169 conicto 2048 2688 lineto 2496 2688 lineto 2496 0 lineto 2048 0 lineto 2048 409 lineto 1931 176 1729 56 conicto 1528 -64 1259 -64 conicto 849 -64 648 206 conicto 448 476 448 1023 conicto end_ol grestore gsave 53.499535 -10.370711 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 53.884173 -10.370711 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 54.268811 -10.370711 translate 0.035278 -0.035278 scale start_ol 832 3712 moveto 1220 3712 lineto 1574 3149 1747 2609 conicto 1920 2070 1920 1538 conicto 1920 1002 1747 462 conicto 1574 -77 1220 -640 conicto 832 -640 lineto 1154 -86 1313 455 conicto 1472 997 1472 1538 conicto 1472 2082 1313 2624 conicto 1154 3166 832 3712 conicto end_ol grestore 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb n 36.765100 -16.370711 m 36.765100 -14.970711 l 47.660100 -14.970711 l 47.660100 -16.370711 l f 0.000000 0.000000 0.000000 srgb n 36.765100 -16.370711 m 36.765100 -14.970711 l 47.660100 -14.970711 l 47.660100 -16.370711 l cp s gsave 37.093850 -15.420711 translate 0.035278 -0.035278 scale start_ol 4032 267 moveto 3722 103 3386 19 conicto 3050 -64 2685 -64 conicto 1594 -64 957 556 conicto 320 1177 320 2239 conicto 320 3303 957 3923 conicto 1594 4544 2685 4544 conicto 3050 4544 3386 4460 conicto 3722 4377 4032 4213 conicto 4032 3328 lineto 3718 3527 3412 3619 conicto 3107 3712 2770 3712 conicto 2165 3712 1818 3320 conicto 1472 2928 1472 2239 conicto 1472 1552 1818 1160 conicto 2165 768 2770 768 conicto 3107 768 3412 860 conicto 3718 953 4032 1152 conicto 4032 267 lineto end_ol grestore gsave 37.680795 -15.420711 translate 0.035278 -0.035278 scale start_ol 2085 2624 moveto 1723 2624 1533 2377 conicto 1344 2130 1344 1664 conicto 1344 1198 1533 951 conicto 1723 704 2085 704 conicto 2440 704 2628 951 conicto 2816 1198 2816 1664 conicto 2816 2130 2628 2377 conicto 2440 2624 2085 2624 conicto 2084 3392 moveto 2941 3392 3422 2933 conicto 3904 2475 3904 1664 conicto 3904 853 3422 394 conicto 2941 -64 2084 -64 conicto 1225 -64 740 394 conicto 256 853 256 1664 conicto 256 2475 740 2933 conicto 1225 3392 2084 3392 conicto end_ol grestore gsave 38.230277 -15.420711 translate 0.035278 -0.035278 scale start_ol 3840 1991 moveto 3840 0 lineto 2816 0 lineto 2816 324 lineto 2816 1524 lineto 2816 1947 2795 2107 conicto 2775 2268 2725 2344 conicto 2659 2446 2546 2503 conicto 2433 2560 2289 2560 conicto 1938 2560 1737 2307 conicto 1536 2055 1536 1608 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2816 lineto 1779 3112 2052 3252 conicto 2325 3392 2655 3392 conicto 3237 3392 3538 3033 conicto 3840 2675 3840 1991 conicto end_ol grestore gsave 38.799743 -15.420711 translate 0.035278 -0.035278 scale start_ol 1600 4224 moveto 1600 3264 lineto 2688 3264 lineto 2688 2496 lineto 1600 2496 lineto 1600 1146 lineto 1600 924 1694 846 conicto 1788 768 2067 768 conicto 2624 768 lineto 2624 0 lineto 1694 0 lineto 1085 0 830 260 conicto 576 521 576 1146 conicto 576 2496 lineto 64 2496 lineto 64 3264 lineto 576 3264 lineto 576 4224 lineto 1600 4224 lineto end_ol grestore gsave 39.181884 -15.420711 translate 0.035278 -0.035278 scale start_ol 3776 1703 moveto 3776 1408 lineto 1280 1408 lineto 1319 1024 1554 832 conicto 1790 640 2213 640 conicto 2555 640 2912 735 conicto 3270 831 3648 1024 conicto 3648 192 lineto 3273 65 2898 0 conicto 2523 -64 2148 -64 conicto 1251 -64 753 390 conicto 256 844 256 1664 conicto 256 2469 740 2930 conicto 1225 3392 2075 3392 conicto 2848 3392 3312 2932 conicto 3776 2472 3776 1703 conicto 2752 2048 moveto 2752 2336 2565 2512 conicto 2379 2688 2077 2688 conicto 1751 2688 1547 2523 conicto 1343 2358 1293 2048 conicto 2752 2048 lineto end_ol grestore gsave 39.723874 -15.420711 translate 0.035278 -0.035278 scale start_ol 3840 1991 moveto 3840 0 lineto 2816 0 lineto 2816 324 lineto 2816 1524 lineto 2816 1947 2795 2107 conicto 2775 2268 2725 2344 conicto 2659 2446 2546 2503 conicto 2433 2560 2289 2560 conicto 1938 2560 1737 2307 conicto 1536 2055 1536 1608 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2816 lineto 1779 3112 2052 3252 conicto 2325 3392 2655 3392 conicto 3237 3392 3538 3033 conicto 3840 2675 3840 1991 conicto end_ol grestore gsave 40.293340 -15.420711 translate 0.035278 -0.035278 scale start_ol 1600 4224 moveto 1600 3264 lineto 2688 3264 lineto 2688 2496 lineto 1600 2496 lineto 1600 1146 lineto 1600 924 1694 846 conicto 1788 768 2067 768 conicto 2624 768 lineto 2624 0 lineto 1694 0 lineto 1085 0 830 260 conicto 576 521 576 1146 conicto 576 2496 lineto 64 2496 lineto 64 3264 lineto 576 3264 lineto 576 4224 lineto 1600 4224 lineto end_ol grestore gsave 40.675482 -15.420711 translate 0.035278 -0.035278 scale start_ol 2310 2688 moveto 2559 2688 2687 2809 conicto 2816 2931 2816 3168 conicto 2816 3402 2687 3525 conicto 2559 3648 2310 3648 conicto 1728 3648 lineto 1728 2688 lineto 2310 2688 lineto 2346 768 moveto 2676 768 2842 912 conicto 3008 1057 3008 1348 conicto 3008 1634 2843 1777 conicto 2678 1920 2346 1920 conicto 1728 1920 lineto 1728 768 lineto 2346 768 lineto 3378 2348 moveto 3751 2242 3955 1957 conicto 4160 1672 4160 1258 conicto 4160 623 3730 311 conicto 3300 0 2422 0 conicto 576 0 lineto 576 4416 lineto 2256 4416 lineto 3158 4416 3563 4136 conicto 3968 3856 3968 3239 conicto 3968 2914 3817 2686 conicto 3666 2458 3378 2348 conicto end_ol grestore gsave 41.284908 -15.420711 translate 0.035278 -0.035278 scale start_ol 1981 1472 moveto 1632 1472 1456 1365 conicto 1280 1258 1280 1049 conicto 1280 857 1421 748 conicto 1563 640 1816 640 conicto 2130 640 2345 844 conicto 2560 1049 2560 1356 conicto 2560 1472 lineto 1981 1472 lineto 3584 1878 moveto 3584 0 lineto 2560 0 lineto 2560 512 lineto 2345 211 2076 73 conicto 1808 -64 1423 -64 conicto 904 -64 580 232 conicto 256 528 256 1001 conicto 256 1575 654 1843 conicto 1052 2112 1903 2112 conicto 2560 2112 lineto 2560 2202 lineto 2560 2454 2363 2571 conicto 2166 2688 1748 2688 conicto 1409 2688 1117 2624 conicto 826 2560 576 2432 conicto 576 3264 lineto 906 3327 1238 3359 conicto 1571 3392 1903 3392 conicto 2793 3392 3188 3036 conicto 3584 2680 3584 1878 conicto end_ol grestore gsave 41.824402 -15.420711 translate 0.035278 -0.035278 scale start_ol 3136 3200 moveto 3136 2432 lineto 2794 2560 2476 2624 conicto 2159 2688 1877 2688 conicto 1574 2688 1427 2616 conicto 1280 2544 1280 2395 conicto 1280 2274 1393 2209 conicto 1507 2145 1800 2114 conicto 1990 2088 lineto 2781 1984 3054 1746 conicto 3328 1509 3328 1002 conicto 3328 470 2939 203 conicto 2550 -64 1778 -64 conicto 1451 -64 1101 0 conicto 752 64 384 192 conicto 384 960 lineto 706 800 1045 720 conicto 1384 640 1733 640 conicto 2049 640 2208 727 conicto 2368 814 2368 986 conicto 2368 1130 2257 1200 conicto 2147 1271 1818 1310 conicto 1628 1334 lineto 903 1421 611 1657 conicto 320 1893 320 2373 conicto 320 2891 685 3141 conicto 1050 3392 1804 3392 conicto 2101 3392 2427 3345 conicto 2753 3299 3136 3200 conicto end_ol grestore gsave 42.298957 -15.420711 translate 0.035278 -0.035278 scale start_ol 3776 1703 moveto 3776 1408 lineto 1280 1408 lineto 1319 1024 1554 832 conicto 1790 640 2213 640 conicto 2555 640 2912 735 conicto 3270 831 3648 1024 conicto 3648 192 lineto 3273 65 2898 0 conicto 2523 -64 2148 -64 conicto 1251 -64 753 390 conicto 256 844 256 1664 conicto 256 2469 740 2930 conicto 1225 3392 2075 3392 conicto 2848 3392 3312 2932 conicto 3776 2472 3776 1703 conicto 2752 2048 moveto 2752 2336 2565 2512 conicto 2379 2688 2077 2688 conicto 1751 2688 1547 2523 conicto 1343 2358 1293 2048 conicto 2752 2048 lineto end_ol grestore gsave 42.840947 -15.420711 translate 0.035278 -0.035278 scale start_ol 2752 2816 moveto 2752 4544 lineto 3776 4544 lineto 3776 0 lineto 2752 0 lineto 2752 512 lineto 2533 213 2269 74 conicto 2005 -64 1658 -64 conicto 1045 -64 650 419 conicto 256 903 256 1664 conicto 256 2425 650 2908 conicto 1045 3392 1658 3392 conicto 2002 3392 2267 3252 conicto 2533 3112 2752 2816 conicto 2047 704 moveto 2390 704 2571 950 conicto 2752 1196 2752 1664 conicto 2752 2132 2571 2378 conicto 2390 2624 2047 2624 conicto 1706 2624 1525 2378 conicto 1344 2132 1344 1664 conicto 1344 1196 1525 950 conicto 1706 704 2047 704 conicto end_ol grestore gsave 43.412910 -15.420711 translate 0.035278 -0.035278 scale start_ol 3584 4323 moveto 3584 3392 lineto 3229 3551 2891 3631 conicto 2553 3712 2252 3712 conicto 1853 3712 1662 3599 conicto 1472 3487 1472 3251 conicto 1472 3074 1602 2975 conicto 1733 2876 2077 2805 conicto 2558 2707 lineto 3288 2558 3596 2254 conicto 3904 1950 3904 1390 conicto 3904 654 3477 295 conicto 3051 -64 2175 -64 conicto 1761 -64 1344 16 conicto 928 97 512 255 conicto 512 1216 lineto 927 993 1314 880 conicto 1702 768 2062 768 conicto 2427 768 2621 892 conicto 2816 1017 2816 1248 conicto 2816 1456 2682 1568 conicto 2549 1681 2150 1770 conicto 1713 1869 lineto 1056 2012 752 2324 conicto 448 2637 448 3166 conicto 448 3830 866 4187 conicto 1284 4544 2068 4544 conicto 2425 4544 2802 4488 conicto 3180 4433 3584 4323 conicto end_ol grestore gsave 43.987370 -15.420711 translate 0.035278 -0.035278 scale start_ol 1600 4224 moveto 1600 3264 lineto 2688 3264 lineto 2688 2496 lineto 1600 2496 lineto 1600 1146 lineto 1600 924 1694 846 conicto 1788 768 2067 768 conicto 2624 768 lineto 2624 0 lineto 1694 0 lineto 1085 0 830 260 conicto 576 521 576 1146 conicto 576 2496 lineto 64 2496 lineto 64 3264 lineto 576 3264 lineto 576 4224 lineto 1600 4224 lineto end_ol grestore gsave 44.369511 -15.420711 translate 0.035278 -0.035278 scale start_ol 2944 2432 moveto 2804 2497 2666 2528 conicto 2528 2560 2389 2560 conicto 1979 2560 1757 2296 conicto 1536 2032 1536 1540 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2752 lineto 1741 3086 2007 3239 conicto 2273 3392 2644 3392 conicto 2697 3392 2759 3385 conicto 2822 3378 2941 3354 conicto 2944 2432 lineto end_ol grestore gsave 44.764137 -15.420711 translate 0.035278 -0.035278 scale start_ol 1981 1472 moveto 1632 1472 1456 1365 conicto 1280 1258 1280 1049 conicto 1280 857 1421 748 conicto 1563 640 1816 640 conicto 2130 640 2345 844 conicto 2560 1049 2560 1356 conicto 2560 1472 lineto 1981 1472 lineto 3584 1878 moveto 3584 0 lineto 2560 0 lineto 2560 512 lineto 2345 211 2076 73 conicto 1808 -64 1423 -64 conicto 904 -64 580 232 conicto 256 528 256 1001 conicto 256 1575 654 1843 conicto 1052 2112 1903 2112 conicto 2560 2112 lineto 2560 2202 lineto 2560 2454 2363 2571 conicto 2166 2688 1748 2688 conicto 1409 2688 1117 2624 conicto 826 2560 576 2432 conicto 576 3264 lineto 906 3327 1238 3359 conicto 1571 3392 1903 3392 conicto 2793 3392 3188 3036 conicto 3584 2680 3584 1878 conicto end_ol grestore gsave 45.303631 -15.420711 translate 0.035278 -0.035278 scale start_ol 1600 4224 moveto 1600 3264 lineto 2688 3264 lineto 2688 2496 lineto 1600 2496 lineto 1600 1146 lineto 1600 924 1694 846 conicto 1788 768 2067 768 conicto 2624 768 lineto 2624 0 lineto 1694 0 lineto 1085 0 830 260 conicto 576 521 576 1146 conicto 576 2496 lineto 64 2496 lineto 64 3264 lineto 576 3264 lineto 576 4224 lineto 1600 4224 lineto end_ol grestore gsave 45.685772 -15.420711 translate 0.035278 -0.035278 scale start_ol 3776 1703 moveto 3776 1408 lineto 1280 1408 lineto 1319 1024 1554 832 conicto 1790 640 2213 640 conicto 2555 640 2912 735 conicto 3270 831 3648 1024 conicto 3648 192 lineto 3273 65 2898 0 conicto 2523 -64 2148 -64 conicto 1251 -64 753 390 conicto 256 844 256 1664 conicto 256 2469 740 2930 conicto 1225 3392 2075 3392 conicto 2848 3392 3312 2932 conicto 3776 2472 3776 1703 conicto 2752 2048 moveto 2752 2336 2565 2512 conicto 2379 2688 2077 2688 conicto 1751 2688 1547 2523 conicto 1343 2358 1293 2048 conicto 2752 2048 lineto end_ol grestore gsave 46.227763 -15.420711 translate 0.035278 -0.035278 scale start_ol 2752 576 moveto 2533 279 2269 139 conicto 2005 0 1658 0 conicto 1050 0 653 478 conicto 256 957 256 1697 conicto 256 2441 653 2916 conicto 1050 3392 1658 3392 conicto 2005 3392 2269 3253 conicto 2533 3115 2752 2816 conicto 2752 3264 lineto 3776 3264 lineto 3776 343 lineto 3776 -447 3274 -863 conicto 2772 -1280 1818 -1280 conicto 1509 -1280 1220 -1232 conicto 932 -1185 640 -1088 conicto 640 -256 lineto 922 -417 1191 -496 conicto 1461 -576 1733 -576 conicto 2261 -576 2506 -353 conicto 2752 -131 2752 343 conicto 2752 576 lineto 2047 2624 moveto 1715 2624 1529 2381 conicto 1344 2139 1344 1695 conicto 1344 1239 1523 1003 conicto 1703 768 2047 768 conicto 2381 768 2566 1010 conicto 2752 1253 2752 1695 conicto 2752 2139 2566 2381 conicto 2381 2624 2047 2624 conicto end_ol grestore gsave 46.799726 -15.420711 translate 0.035278 -0.035278 scale start_ol 64 3264 moveto 1108 3264 lineto 1986 1049 lineto 2732 3264 lineto 3776 3264 lineto 2403 -284 lineto 2196 -838 1920 -1059 conicto 1644 -1280 1192 -1280 conicto 589 -1280 lineto 589 -576 lineto 915 -576 lineto 1181 -576 1302 -495 conicto 1423 -415 1490 -206 conicto 1519 -116 lineto 64 3264 lineto end_ol grestore 1.000000 1.000000 1.000000 srgb n 36.765100 -14.970711 m 36.765100 -14.570711 l 47.660100 -14.570711 l 47.660100 -14.970711 l f 0.000000 0.000000 0.000000 srgb n 36.765100 -14.970711 m 36.765100 -14.570711 l 47.660100 -14.570711 l 47.660100 -14.970711 l cp s 1.000000 1.000000 1.000000 srgb n 36.765100 -14.570711 m 36.765100 -13.570711 l 47.660100 -13.570711 l 47.660100 -14.570711 l f 0.000000 0.000000 0.000000 srgb n 36.765100 -14.570711 m 36.765100 -13.570711 l 47.660100 -13.570711 l 47.660100 -14.570711 l cp s gsave 36.915100 -13.870711 translate 0.035278 -0.035278 scale start_ol 1664 2752 moveto 1664 1728 lineto 2688 1728 lineto 2688 1344 lineto 1664 1344 lineto 1664 320 lineto 1280 320 lineto 1280 1344 lineto 256 1344 lineto 256 1728 lineto 1280 1728 lineto 1280 2752 lineto 1664 2752 lineto end_ol grestore gsave 37.299738 -13.870711 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 37.684376 -13.870711 translate 0.035278 -0.035278 scale start_ol 448 1023 moveto 448 2688 lineto 896 2688 lineto 896 1023 lineto 896 661 1022 490 conicto 1149 320 1414 320 conicto 1722 320 1885 539 conicto 2048 759 2048 1169 conicto 2048 2688 lineto 2496 2688 lineto 2496 0 lineto 2048 0 lineto 2048 409 lineto 1931 176 1729 56 conicto 1528 -64 1259 -64 conicto 849 -64 648 206 conicto 448 476 448 1023 conicto end_ol grestore gsave 38.069014 -13.870711 translate 0.035278 -0.035278 scale start_ol 2496 1665 moveto 2496 0 lineto 2048 0 lineto 2048 1665 lineto 2048 2027 1922 2197 conicto 1797 2368 1530 2368 conicto 1225 2368 1060 2148 conicto 896 1929 896 1519 conicto 896 0 lineto 448 0 lineto 448 2688 lineto 896 2688 lineto 896 2284 lineto 1013 2514 1213 2633 conicto 1413 2752 1686 2752 conicto 2094 2752 2295 2482 conicto 2496 2212 2496 1665 conicto end_ol grestore gsave 38.453652 -13.870711 translate 0.035278 -0.035278 scale start_ol 2112 3712 moveto 1790 3168 1631 2627 conicto 1472 2087 1472 1538 conicto 1472 992 1631 450 conicto 1790 -91 2112 -640 conicto 1724 -640 lineto 1370 -72 1197 466 conicto 1024 1004 1024 1538 conicto 1024 2070 1197 2609 conicto 1370 3149 1724 3712 conicto 2112 3712 lineto end_ol grestore gsave 38.838290 -13.870711 translate 0.035278 -0.035278 scale start_ol 448 1023 moveto 448 2688 lineto 896 2688 lineto 896 1023 lineto 896 661 1022 490 conicto 1149 320 1414 320 conicto 1722 320 1885 539 conicto 2048 759 2048 1169 conicto 2048 2688 lineto 2496 2688 lineto 2496 0 lineto 2048 0 lineto 2048 409 lineto 1931 176 1729 56 conicto 1528 -64 1259 -64 conicto 849 -64 648 206 conicto 448 476 448 1023 conicto end_ol grestore gsave 39.222928 -13.870711 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave 39.607566 -13.870711 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 39.992204 -13.870711 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 40.376842 -13.870711 translate 0.035278 -0.035278 scale start_ol 1216 704 moveto 1792 704 lineto 1792 210 lineto 1344 -704 lineto 960 -704 lineto 1216 210 lineto 1216 704 lineto end_ol grestore gsave 40.761480 -13.870711 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave 41.146118 -13.870711 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore gsave 41.530756 -13.870711 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 41.915394 -13.870711 translate 0.035278 -0.035278 scale start_ol 1598 2401 moveto 1679 2580 1803 2666 conicto 1928 2752 2104 2752 conicto 2424 2752 2556 2499 conicto 2688 2247 2688 1548 conicto 2688 0 lineto 2304 0 lineto 2304 1529 lineto 2304 2094 2239 2231 conicto 2175 2368 2004 2368 conicto 1808 2368 1736 2221 conicto 1664 2075 1664 1529 conicto 1664 0 lineto 1280 0 lineto 1280 1529 lineto 1280 2101 1210 2234 conicto 1140 2368 959 2368 conicto 780 2368 710 2221 conicto 640 2075 640 1529 conicto 640 0 lineto 256 0 lineto 256 2688 lineto 640 2688 lineto 640 2446 lineto 719 2595 837 2673 conicto 956 2752 1107 2752 conicto 1289 2752 1410 2665 conicto 1531 2578 1598 2401 conicto end_ol grestore gsave 42.300032 -13.870711 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave 42.684670 -13.870711 translate 0.035278 -0.035278 scale start_ol 2944 -832 moveto 2944 -1152 lineto 0 -1152 lineto 0 -832 lineto 2944 -832 lineto end_ol grestore gsave 43.069308 -13.870711 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 43.453946 -13.870711 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 43.838584 -13.870711 translate 0.035278 -0.035278 scale start_ol 896 353 moveto 896 -1024 lineto 448 -1024 lineto 448 2688 lineto 896 2688 lineto 896 2335 lineto 1012 2539 1206 2645 conicto 1400 2752 1653 2752 conicto 2167 2752 2459 2376 conicto 2752 2000 2752 1334 conicto 2752 681 2458 308 conicto 2165 -64 1653 -64 conicto 1395 -64 1201 42 conicto 1007 149 896 353 conicto 2304 1344 moveto 2304 1851 2128 2109 conicto 1952 2368 1605 2368 conicto 1256 2368 1076 2108 conicto 896 1849 896 1344 conicto 896 841 1076 580 conicto 1256 320 1605 320 conicto 1952 320 2128 578 conicto 2304 837 2304 1344 conicto end_ol grestore gsave 44.223222 -13.870711 translate 0.035278 -0.035278 scale start_ol 1471 2368 moveto 1124 2368 946 2109 conicto 768 1851 768 1344 conicto 768 839 946 579 conicto 1124 320 1471 320 conicto 1820 320 1998 579 conicto 2176 839 2176 1344 conicto 2176 1851 1998 2109 conicto 1820 2368 1471 2368 conicto 1471 2752 moveto 2031 2752 2327 2390 conicto 2624 2029 2624 1344 conicto 2624 657 2328 296 conicto 2033 -64 1471 -64 conicto 911 -64 615 296 conicto 320 657 320 1344 conicto 320 2029 615 2390 conicto 911 2752 1471 2752 conicto end_ol grestore gsave 44.607860 -13.870711 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave 44.992498 -13.870711 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave 45.377136 -13.870711 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore gsave 45.761774 -13.870711 translate 0.035278 -0.035278 scale start_ol 1471 2368 moveto 1124 2368 946 2109 conicto 768 1851 768 1344 conicto 768 839 946 579 conicto 1124 320 1471 320 conicto 1820 320 1998 579 conicto 2176 839 2176 1344 conicto 2176 1851 1998 2109 conicto 1820 2368 1471 2368 conicto 1471 2752 moveto 2031 2752 2327 2390 conicto 2624 2029 2624 1344 conicto 2624 657 2328 296 conicto 2033 -64 1471 -64 conicto 911 -64 615 296 conicto 320 657 320 1344 conicto 320 2029 615 2390 conicto 911 2752 1471 2752 conicto end_ol grestore gsave 46.146412 -13.870711 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 46.531051 -13.870711 translate 0.035278 -0.035278 scale start_ol 2051 871 moveto 1942 589 1773 128 conicto 1537 -508 1456 -648 conicto 1347 -836 1183 -930 conicto 1019 -1024 800 -1024 conicto 448 -1024 lineto 448 -640 lineto 707 -640 lineto 900 -640 1009 -527 conicto 1118 -415 1287 53 conicto 256 2688 lineto 721 2688 lineto 1511 586 lineto 2288 2688 lineto 2752 2688 lineto 2051 871 lineto end_ol grestore gsave 46.915689 -13.870711 translate 0.035278 -0.035278 scale start_ol 832 3712 moveto 1220 3712 lineto 1574 3149 1747 2609 conicto 1920 2070 1920 1538 conicto 1920 1002 1747 462 conicto 1574 -77 1220 -640 conicto 832 -640 lineto 1154 -86 1313 455 conicto 1472 997 1472 1538 conicto 1472 2082 1313 2624 conicto 1154 3166 832 3712 conicto end_ol grestore 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb n 36.720100 -19.970711 m 36.720100 -18.570711 l 48.187600 -18.570711 l 48.187600 -19.970711 l f 0.000000 0.000000 0.000000 srgb n 36.720100 -19.970711 m 36.720100 -18.570711 l 48.187600 -18.570711 l 48.187600 -19.970711 l cp s gsave 36.970100 -19.020711 translate 0.035278 -0.035278 scale start_ol 576 4416 moveto 1728 4416 lineto 1728 0 lineto 576 0 lineto 576 4416 lineto end_ol grestore gsave 37.267318 -19.020711 translate 0.035278 -0.035278 scale start_ol 1600 4224 moveto 1600 3264 lineto 2688 3264 lineto 2688 2496 lineto 1600 2496 lineto 1600 1146 lineto 1600 924 1694 846 conicto 1788 768 2067 768 conicto 2624 768 lineto 2624 0 lineto 1694 0 lineto 1085 0 830 260 conicto 576 521 576 1146 conicto 576 2496 lineto 64 2496 lineto 64 3264 lineto 576 3264 lineto 576 4224 lineto 1600 4224 lineto end_ol grestore gsave 37.649459 -19.020711 translate 0.035278 -0.035278 scale start_ol 3776 1703 moveto 3776 1408 lineto 1280 1408 lineto 1319 1024 1554 832 conicto 1790 640 2213 640 conicto 2555 640 2912 735 conicto 3270 831 3648 1024 conicto 3648 192 lineto 3273 65 2898 0 conicto 2523 -64 2148 -64 conicto 1251 -64 753 390 conicto 256 844 256 1664 conicto 256 2469 740 2930 conicto 1225 3392 2075 3392 conicto 2848 3392 3312 2932 conicto 3776 2472 3776 1703 conicto 2752 2048 moveto 2752 2336 2565 2512 conicto 2379 2688 2077 2688 conicto 1751 2688 1547 2523 conicto 1343 2358 1293 2048 conicto 2752 2048 lineto end_ol grestore gsave 38.191450 -19.020711 translate 0.035278 -0.035278 scale start_ol 3531 2745 moveto 3730 3061 4003 3226 conicto 4277 3392 4605 3392 conicto 5169 3392 5464 3033 conicto 5760 2675 5760 1991 conicto 5760 0 lineto 4736 0 lineto 4736 1705 lineto 4739 1743 4740 1784 conicto 4742 1825 4742 1901 conicto 4742 2248 4636 2404 conicto 4531 2560 4296 2560 conicto 3989 2560 3821 2314 conicto 3654 2069 3648 1605 conicto 3648 0 lineto 2624 0 lineto 2624 1705 lineto 2624 2248 2527 2404 conicto 2431 2560 2184 2560 conicto 1874 2560 1705 2313 conicto 1536 2066 1536 1608 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2816 lineto 1730 3102 1980 3247 conicto 2231 3392 2533 3392 conicto 2874 3392 3135 3222 conicto 3396 3052 3531 2745 conicto end_ol grestore gsave 39.023167 -19.020711 translate 0.035278 -0.035278 scale start_ol 2182 2496 moveto 2521 2496 2668 2624 conicto 2816 2752 2816 3044 conicto 2816 3334 2668 3459 conicto 2521 3584 2182 3584 conicto 1728 3584 lineto 1728 2496 lineto 2182 2496 lineto 1728 1664 moveto 1728 0 lineto 576 0 lineto 576 4416 lineto 2297 4416 lineto 3162 4416 3565 4125 conicto 3968 3834 3968 3205 conicto 3968 2771 3754 2491 conicto 3540 2212 3109 2080 conicto 3345 2025 3532 1832 conicto 3719 1640 3911 1249 conicto 4544 0 lineto 3310 0 lineto 2768 1093 lineto 2614 1423 2455 1543 conicto 2297 1664 2034 1664 conicto 1728 1664 lineto end_ol grestore gsave 39.637588 -19.020711 translate 0.035278 -0.035278 scale start_ol 3776 1703 moveto 3776 1408 lineto 1280 1408 lineto 1319 1024 1554 832 conicto 1790 640 2213 640 conicto 2555 640 2912 735 conicto 3270 831 3648 1024 conicto 3648 192 lineto 3273 65 2898 0 conicto 2523 -64 2148 -64 conicto 1251 -64 753 390 conicto 256 844 256 1664 conicto 256 2469 740 2930 conicto 1225 3392 2075 3392 conicto 2848 3392 3312 2932 conicto 3776 2472 3776 1703 conicto 2752 2048 moveto 2752 2336 2565 2512 conicto 2379 2688 2077 2688 conicto 1751 2688 1547 2523 conicto 1343 2358 1293 2048 conicto 2752 2048 lineto end_ol grestore gsave 40.179579 -19.020711 translate 0.035278 -0.035278 scale start_ol 1536 512 moveto 1536 -1280 lineto 512 -1280 lineto 512 3264 lineto 1536 3264 lineto 1536 2816 lineto 1755 3112 2021 3252 conicto 2287 3392 2633 3392 conicto 3245 3392 3638 2908 conicto 4032 2425 4032 1664 conicto 4032 903 3638 419 conicto 3245 -64 2633 -64 conicto 2287 -64 2021 76 conicto 1755 216 1536 512 conicto 2243 2624 moveto 1901 2624 1718 2376 conicto 1536 2129 1536 1664 conicto 1536 1199 1718 951 conicto 1901 704 2243 704 conicto 2585 704 2764 950 conicto 2944 1196 2944 1664 conicto 2944 2132 2764 2378 conicto 2585 2624 2243 2624 conicto end_ol grestore gsave 40.751542 -19.020711 translate 0.035278 -0.035278 scale start_ol 512 1320 moveto 512 3264 lineto 1536 3264 lineto 1536 2946 lineto 1536 2687 1533 2296 conicto 1530 1905 1530 1775 conicto 1530 1391 1552 1221 conicto 1574 1052 1627 976 conicto 1696 876 1807 822 conicto 1919 768 2063 768 conicto 2415 768 2615 1012 conicto 2816 1257 2816 1692 conicto 2816 3264 lineto 3840 3264 lineto 3840 0 lineto 2816 0 lineto 2816 512 lineto 2573 216 2301 76 conicto 2030 -64 1703 -64 conicto 1121 -64 816 290 conicto 512 644 512 1320 conicto end_ol grestore gsave 41.321008 -19.020711 translate 0.035278 -0.035278 scale start_ol 1600 4224 moveto 1600 3264 lineto 2688 3264 lineto 2688 2496 lineto 1600 2496 lineto 1600 1146 lineto 1600 924 1694 846 conicto 1788 768 2067 768 conicto 2624 768 lineto 2624 0 lineto 1694 0 lineto 1085 0 830 260 conicto 576 521 576 1146 conicto 576 2496 lineto 64 2496 lineto 64 3264 lineto 576 3264 lineto 576 4224 lineto 1600 4224 lineto end_ol grestore gsave 41.703149 -19.020711 translate 0.035278 -0.035278 scale start_ol 1981 1472 moveto 1632 1472 1456 1365 conicto 1280 1258 1280 1049 conicto 1280 857 1421 748 conicto 1563 640 1816 640 conicto 2130 640 2345 844 conicto 2560 1049 2560 1356 conicto 2560 1472 lineto 1981 1472 lineto 3584 1878 moveto 3584 0 lineto 2560 0 lineto 2560 512 lineto 2345 211 2076 73 conicto 1808 -64 1423 -64 conicto 904 -64 580 232 conicto 256 528 256 1001 conicto 256 1575 654 1843 conicto 1052 2112 1903 2112 conicto 2560 2112 lineto 2560 2202 lineto 2560 2454 2363 2571 conicto 2166 2688 1748 2688 conicto 1409 2688 1117 2624 conicto 826 2560 576 2432 conicto 576 3264 lineto 906 3327 1238 3359 conicto 1571 3392 1903 3392 conicto 2793 3392 3188 3036 conicto 3584 2680 3584 1878 conicto end_ol grestore gsave 42.242642 -19.020711 translate 0.035278 -0.035278 scale start_ol 1600 4224 moveto 1600 3264 lineto 2688 3264 lineto 2688 2496 lineto 1600 2496 lineto 1600 1146 lineto 1600 924 1694 846 conicto 1788 768 2067 768 conicto 2624 768 lineto 2624 0 lineto 1694 0 lineto 1085 0 830 260 conicto 576 521 576 1146 conicto 576 2496 lineto 64 2496 lineto 64 3264 lineto 576 3264 lineto 576 4224 lineto 1600 4224 lineto end_ol grestore gsave 42.624783 -19.020711 translate 0.035278 -0.035278 scale start_ol 512 3264 moveto 1536 3264 lineto 1536 0 lineto 512 0 lineto 512 3264 lineto 512 4544 moveto 1536 4544 lineto 1536 3648 lineto 512 3648 lineto 512 4544 lineto end_ol grestore gsave 42.899520 -19.020711 translate 0.035278 -0.035278 scale start_ol 2085 2624 moveto 1723 2624 1533 2377 conicto 1344 2130 1344 1664 conicto 1344 1198 1533 951 conicto 1723 704 2085 704 conicto 2440 704 2628 951 conicto 2816 1198 2816 1664 conicto 2816 2130 2628 2377 conicto 2440 2624 2085 2624 conicto 2084 3392 moveto 2941 3392 3422 2933 conicto 3904 2475 3904 1664 conicto 3904 853 3422 394 conicto 2941 -64 2084 -64 conicto 1225 -64 740 394 conicto 256 853 256 1664 conicto 256 2475 740 2933 conicto 1225 3392 2084 3392 conicto end_ol grestore gsave 43.449002 -19.020711 translate 0.035278 -0.035278 scale start_ol 3840 1991 moveto 3840 0 lineto 2816 0 lineto 2816 324 lineto 2816 1524 lineto 2816 1947 2795 2107 conicto 2775 2268 2725 2344 conicto 2659 2446 2546 2503 conicto 2433 2560 2289 2560 conicto 1938 2560 1737 2307 conicto 1536 2055 1536 1608 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2816 lineto 1779 3112 2052 3252 conicto 2325 3392 2655 3392 conicto 3237 3392 3538 3033 conicto 3840 2675 3840 1991 conicto end_ol grestore gsave 44.018468 -19.020711 translate 0.035278 -0.035278 scale start_ol 3584 4323 moveto 3584 3392 lineto 3229 3551 2891 3631 conicto 2553 3712 2252 3712 conicto 1853 3712 1662 3599 conicto 1472 3487 1472 3251 conicto 1472 3074 1602 2975 conicto 1733 2876 2077 2805 conicto 2558 2707 lineto 3288 2558 3596 2254 conicto 3904 1950 3904 1390 conicto 3904 654 3477 295 conicto 3051 -64 2175 -64 conicto 1761 -64 1344 16 conicto 928 97 512 255 conicto 512 1216 lineto 927 993 1314 880 conicto 1702 768 2062 768 conicto 2427 768 2621 892 conicto 2816 1017 2816 1248 conicto 2816 1456 2682 1568 conicto 2549 1681 2150 1770 conicto 1713 1869 lineto 1056 2012 752 2324 conicto 448 2637 448 3166 conicto 448 3830 866 4187 conicto 1284 4544 2068 4544 conicto 2425 4544 2802 4488 conicto 3180 4433 3584 4323 conicto end_ol grestore gsave 44.592928 -19.020711 translate 0.035278 -0.035278 scale start_ol 1600 4224 moveto 1600 3264 lineto 2688 3264 lineto 2688 2496 lineto 1600 2496 lineto 1600 1146 lineto 1600 924 1694 846 conicto 1788 768 2067 768 conicto 2624 768 lineto 2624 0 lineto 1694 0 lineto 1085 0 830 260 conicto 576 521 576 1146 conicto 576 2496 lineto 64 2496 lineto 64 3264 lineto 576 3264 lineto 576 4224 lineto 1600 4224 lineto end_ol grestore gsave 44.975069 -19.020711 translate 0.035278 -0.035278 scale start_ol 2944 2432 moveto 2804 2497 2666 2528 conicto 2528 2560 2389 2560 conicto 1979 2560 1757 2296 conicto 1536 2032 1536 1540 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2752 lineto 1741 3086 2007 3239 conicto 2273 3392 2644 3392 conicto 2697 3392 2759 3385 conicto 2822 3378 2941 3354 conicto 2944 2432 lineto end_ol grestore gsave 45.369695 -19.020711 translate 0.035278 -0.035278 scale start_ol 1981 1472 moveto 1632 1472 1456 1365 conicto 1280 1258 1280 1049 conicto 1280 857 1421 748 conicto 1563 640 1816 640 conicto 2130 640 2345 844 conicto 2560 1049 2560 1356 conicto 2560 1472 lineto 1981 1472 lineto 3584 1878 moveto 3584 0 lineto 2560 0 lineto 2560 512 lineto 2345 211 2076 73 conicto 1808 -64 1423 -64 conicto 904 -64 580 232 conicto 256 528 256 1001 conicto 256 1575 654 1843 conicto 1052 2112 1903 2112 conicto 2560 2112 lineto 2560 2202 lineto 2560 2454 2363 2571 conicto 2166 2688 1748 2688 conicto 1409 2688 1117 2624 conicto 826 2560 576 2432 conicto 576 3264 lineto 906 3327 1238 3359 conicto 1571 3392 1903 3392 conicto 2793 3392 3188 3036 conicto 3584 2680 3584 1878 conicto end_ol grestore gsave 45.909188 -19.020711 translate 0.035278 -0.035278 scale start_ol 1600 4224 moveto 1600 3264 lineto 2688 3264 lineto 2688 2496 lineto 1600 2496 lineto 1600 1146 lineto 1600 924 1694 846 conicto 1788 768 2067 768 conicto 2624 768 lineto 2624 0 lineto 1694 0 lineto 1085 0 830 260 conicto 576 521 576 1146 conicto 576 2496 lineto 64 2496 lineto 64 3264 lineto 576 3264 lineto 576 4224 lineto 1600 4224 lineto end_ol grestore gsave 46.291329 -19.020711 translate 0.035278 -0.035278 scale start_ol 3776 1703 moveto 3776 1408 lineto 1280 1408 lineto 1319 1024 1554 832 conicto 1790 640 2213 640 conicto 2555 640 2912 735 conicto 3270 831 3648 1024 conicto 3648 192 lineto 3273 65 2898 0 conicto 2523 -64 2148 -64 conicto 1251 -64 753 390 conicto 256 844 256 1664 conicto 256 2469 740 2930 conicto 1225 3392 2075 3392 conicto 2848 3392 3312 2932 conicto 3776 2472 3776 1703 conicto 2752 2048 moveto 2752 2336 2565 2512 conicto 2379 2688 2077 2688 conicto 1751 2688 1547 2523 conicto 1343 2358 1293 2048 conicto 2752 2048 lineto end_ol grestore gsave 46.833320 -19.020711 translate 0.035278 -0.035278 scale start_ol 2752 576 moveto 2533 279 2269 139 conicto 2005 0 1658 0 conicto 1050 0 653 478 conicto 256 957 256 1697 conicto 256 2441 653 2916 conicto 1050 3392 1658 3392 conicto 2005 3392 2269 3253 conicto 2533 3115 2752 2816 conicto 2752 3264 lineto 3776 3264 lineto 3776 343 lineto 3776 -447 3274 -863 conicto 2772 -1280 1818 -1280 conicto 1509 -1280 1220 -1232 conicto 932 -1185 640 -1088 conicto 640 -256 lineto 922 -417 1191 -496 conicto 1461 -576 1733 -576 conicto 2261 -576 2506 -353 conicto 2752 -131 2752 343 conicto 2752 576 lineto 2047 2624 moveto 1715 2624 1529 2381 conicto 1344 2139 1344 1695 conicto 1344 1239 1523 1003 conicto 1703 768 2047 768 conicto 2381 768 2566 1010 conicto 2752 1253 2752 1695 conicto 2752 2139 2566 2381 conicto 2381 2624 2047 2624 conicto end_ol grestore gsave 47.405283 -19.020711 translate 0.035278 -0.035278 scale start_ol 64 3264 moveto 1108 3264 lineto 1986 1049 lineto 2732 3264 lineto 3776 3264 lineto 2403 -284 lineto 2196 -838 1920 -1059 conicto 1644 -1280 1192 -1280 conicto 589 -1280 lineto 589 -576 lineto 915 -576 lineto 1181 -576 1302 -495 conicto 1423 -415 1490 -206 conicto 1519 -116 lineto 64 3264 lineto end_ol grestore 1.000000 1.000000 1.000000 srgb n 36.720100 -18.570711 m 36.720100 -18.170711 l 48.187600 -18.170711 l 48.187600 -18.570711 l f 0.000000 0.000000 0.000000 srgb n 36.720100 -18.570711 m 36.720100 -18.170711 l 48.187600 -18.170711 l 48.187600 -18.570711 l cp s 1.000000 1.000000 1.000000 srgb n 36.720100 -18.170711 m 36.720100 -17.170711 l 48.187600 -17.170711 l 48.187600 -18.170711 l f 0.000000 0.000000 0.000000 srgb n 36.720100 -18.170711 m 36.720100 -17.170711 l 48.187600 -17.170711 l 48.187600 -18.170711 l cp s gsave 36.870100 -17.470711 translate 0.035278 -0.035278 scale start_ol 1664 2752 moveto 1664 1728 lineto 2688 1728 lineto 2688 1344 lineto 1664 1344 lineto 1664 320 lineto 1280 320 lineto 1280 1344 lineto 256 1344 lineto 256 1728 lineto 1280 1728 lineto 1280 2752 lineto 1664 2752 lineto end_ol grestore gsave 37.254738 -17.470711 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 37.639376 -17.470711 translate 0.035278 -0.035278 scale start_ol 448 1023 moveto 448 2688 lineto 896 2688 lineto 896 1023 lineto 896 661 1022 490 conicto 1149 320 1414 320 conicto 1722 320 1885 539 conicto 2048 759 2048 1169 conicto 2048 2688 lineto 2496 2688 lineto 2496 0 lineto 2048 0 lineto 2048 409 lineto 1931 176 1729 56 conicto 1528 -64 1259 -64 conicto 849 -64 648 206 conicto 448 476 448 1023 conicto end_ol grestore gsave 38.024014 -17.470711 translate 0.035278 -0.035278 scale start_ol 2496 1665 moveto 2496 0 lineto 2048 0 lineto 2048 1665 lineto 2048 2027 1922 2197 conicto 1797 2368 1530 2368 conicto 1225 2368 1060 2148 conicto 896 1929 896 1519 conicto 896 0 lineto 448 0 lineto 448 2688 lineto 896 2688 lineto 896 2284 lineto 1013 2514 1213 2633 conicto 1413 2752 1686 2752 conicto 2094 2752 2295 2482 conicto 2496 2212 2496 1665 conicto end_ol grestore gsave 38.408652 -17.470711 translate 0.035278 -0.035278 scale start_ol 2112 3712 moveto 1790 3168 1631 2627 conicto 1472 2087 1472 1538 conicto 1472 992 1631 450 conicto 1790 -91 2112 -640 conicto 1724 -640 lineto 1370 -72 1197 466 conicto 1024 1004 1024 1538 conicto 1024 2070 1197 2609 conicto 1370 3149 1724 3712 conicto 2112 3712 lineto end_ol grestore gsave 38.793290 -17.470711 translate 0.035278 -0.035278 scale start_ol 2496 1665 moveto 2496 0 lineto 2048 0 lineto 2048 1665 lineto 2048 2027 1922 2197 conicto 1797 2368 1530 2368 conicto 1225 2368 1060 2148 conicto 896 1929 896 1519 conicto 896 0 lineto 448 0 lineto 448 3712 lineto 896 3712 lineto 896 2284 lineto 1013 2514 1213 2633 conicto 1413 2752 1686 2752 conicto 2094 2752 2295 2482 conicto 2496 2212 2496 1665 conicto end_ol grestore gsave 39.177928 -17.470711 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 39.562566 -17.470711 translate 0.035278 -0.035278 scale start_ol 448 1023 moveto 448 2688 lineto 896 2688 lineto 896 1023 lineto 896 661 1022 490 conicto 1149 320 1414 320 conicto 1722 320 1885 539 conicto 2048 759 2048 1169 conicto 2048 2688 lineto 2496 2688 lineto 2496 0 lineto 2048 0 lineto 2048 409 lineto 1931 176 1729 56 conicto 1528 -64 1259 -64 conicto 849 -64 648 206 conicto 448 476 448 1023 conicto end_ol grestore gsave 39.947204 -17.470711 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 40.331842 -17.470711 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave 40.716480 -17.470711 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave 41.101118 -17.470711 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore gsave 41.485756 -17.470711 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave 41.870394 -17.470711 translate 0.035278 -0.035278 scale start_ol 2496 128 moveto 2321 32 2135 -16 conicto 1950 -64 1756 -64 conicto 1141 -64 794 309 conicto 448 683 448 1344 conicto 448 2005 794 2378 conicto 1141 2752 1756 2752 conicto 1947 2752 2129 2689 conicto 2312 2627 2496 2496 conicto 2496 2048 lineto 2322 2217 2147 2292 conicto 1972 2368 1751 2368 conicto 1339 2368 1117 2102 conicto 896 1837 896 1344 conicto 896 853 1118 586 conicto 1341 320 1751 320 conicto 1979 320 2160 382 conicto 2341 445 2496 576 conicto 2496 128 lineto end_ol grestore gsave 42.255032 -17.470711 translate 0.035278 -0.035278 scale start_ol 1216 704 moveto 1792 704 lineto 1792 210 lineto 1344 -704 lineto 960 -704 lineto 1216 210 lineto 1216 704 lineto end_ol grestore gsave 42.639670 -17.470711 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave 43.024308 -17.470711 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore gsave 43.408946 -17.470711 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 43.793584 -17.470711 translate 0.035278 -0.035278 scale start_ol 1598 2401 moveto 1679 2580 1803 2666 conicto 1928 2752 2104 2752 conicto 2424 2752 2556 2499 conicto 2688 2247 2688 1548 conicto 2688 0 lineto 2304 0 lineto 2304 1529 lineto 2304 2094 2239 2231 conicto 2175 2368 2004 2368 conicto 1808 2368 1736 2221 conicto 1664 2075 1664 1529 conicto 1664 0 lineto 1280 0 lineto 1280 1529 lineto 1280 2101 1210 2234 conicto 1140 2368 959 2368 conicto 780 2368 710 2221 conicto 640 2075 640 1529 conicto 640 0 lineto 256 0 lineto 256 2688 lineto 640 2688 lineto 640 2446 lineto 719 2595 837 2673 conicto 956 2752 1107 2752 conicto 1289 2752 1410 2665 conicto 1531 2578 1598 2401 conicto end_ol grestore gsave 44.178222 -17.470711 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave 44.562860 -17.470711 translate 0.035278 -0.035278 scale start_ol 2944 -832 moveto 2944 -1152 lineto 0 -1152 lineto 0 -832 lineto 2944 -832 lineto end_ol grestore gsave 44.947498 -17.470711 translate 0.035278 -0.035278 scale start_ol 1536 926 moveto 1536 625 1646 472 conicto 1757 320 1973 320 conicto 2496 320 lineto 2496 0 lineto 1930 0 lineto 1528 0 1308 242 conicto 1088 484 1088 926 conicto 1088 3392 lineto 192 3392 lineto 192 3712 lineto 1536 3712 lineto 1536 926 lineto end_ol grestore gsave 45.332136 -17.470711 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave 45.716774 -17.470711 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave 46.101412 -17.470711 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore gsave 46.486051 -17.470711 translate 0.035278 -0.035278 scale start_ol 832 3712 moveto 1220 3712 lineto 1574 3149 1747 2609 conicto 1920 2070 1920 1538 conicto 1920 1002 1747 462 conicto 1574 -77 1220 -640 conicto 832 -640 lineto 1154 -86 1313 455 conicto 1472 997 1472 1538 conicto 1472 2082 1313 2624 conicto 1154 3166 832 3712 conicto end_ol grestore 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb n 28.404110 -23.670711 m 28.404110 -22.270711 l 40.636610 -22.270711 l 40.636610 -23.670711 l f 0.000000 0.000000 0.000000 srgb n 28.404110 -23.670711 m 28.404110 -22.270711 l 40.636610 -22.270711 l 40.636610 -23.670711 l cp s gsave 28.654110 -22.720711 translate 0.035278 -0.035278 scale start_ol 2172 2496 moveto 2552 2496 2748 2669 conicto 2944 2843 2944 3178 conicto 2944 3388 2809 3486 conicto 2674 3584 2384 3584 conicto 1923 3584 lineto 1703 2496 lineto 2172 2496 lineto 1555 1664 moveto 1233 0 lineto 128 0 lineto 960 4416 lineto 2610 4416 lineto 3341 4416 3718 4145 conicto 4096 3875 4096 3349 conicto 4096 2818 3797 2474 conicto 3498 2130 2986 2080 conicto 3220 2031 3376 1838 conicto 3533 1646 3650 1249 conicto 4032 0 lineto 2883 0 lineto 2558 1093 lineto 2459 1420 2318 1542 conicto 2178 1664 1911 1664 conicto 1555 1664 lineto end_ol grestore gsave 29.228570 -22.720711 translate 0.035278 -0.035278 scale start_ol 3774 1573 moveto 3739 1408 lineto 1286 1408 lineto 1286 1390 1283 1355 conicto 1280 1320 1280 1301 conicto 1280 969 1472 804 conicto 1664 640 2048 640 conicto 2379 640 2747 736 conicto 3115 833 3520 1024 conicto 3361 192 lineto 2973 63 2590 0 conicto 2207 -64 1811 -64 conicto 1035 -64 613 291 conicto 192 647 192 1297 conicto 192 1673 326 2027 conicto 460 2381 717 2675 conicto 1021 3028 1444 3210 conicto 1867 3392 2383 3392 conicto 3053 3392 3446 3042 conicto 3840 2692 3840 2099 conicto 3840 1984 3824 1855 conicto 3808 1726 3774 1573 conicto 2798 2048 moveto 2807 2085 2811 2123 conicto 2816 2161 2816 2197 conicto 2816 2423 2674 2555 conicto 2533 2688 2290 2688 conicto 1980 2688 1763 2526 conicto 1546 2364 1431 2048 conicto 2798 2048 lineto end_ol grestore gsave 29.770561 -22.720711 translate 0.035278 -0.035278 scale start_ol 3456 3136 moveto 3287 2304 lineto 3073 2461 2865 2542 conicto 2658 2624 2459 2624 conicto 1939 2624 1609 2284 conicto 1280 1944 1280 1415 conicto 1280 1077 1485 890 conicto 1690 704 2064 704 conicto 2313 704 2553 785 conicto 2794 866 3011 1024 conicto 2847 192 lineto 2587 64 2324 0 conicto 2061 -64 1796 -64 conicto 1024 -64 608 284 conicto 192 632 192 1273 conicto 192 1676 346 2055 conicto 500 2434 787 2737 conicto 1106 3069 1519 3230 conicto 1932 3392 2472 3392 conicto 2721 3392 2967 3328 conicto 3213 3264 3456 3136 conicto end_ol grestore gsave 30.245116 -22.720711 translate 0.035278 -0.035278 scale start_ol 2243 2624 moveto 1823 2624 1551 2259 conicto 1280 1895 1280 1331 conicto 1280 1025 1426 864 conicto 1573 704 1853 704 conicto 2273 704 2544 1070 conicto 2816 1436 2816 2002 conicto 2816 2306 2669 2465 conicto 2523 2624 2243 2624 conicto 2324 3392 moveto 3061 3392 3482 3019 conicto 3904 2646 3904 2002 conicto 3904 1629 3771 1277 conicto 3639 926 3385 635 conicto 3084 289 2674 112 conicto 2265 -64 1761 -64 conicto 1032 -64 612 309 conicto 192 682 192 1326 conicto 192 1696 327 2050 conicto 463 2405 717 2698 conicto 1012 3039 1420 3215 conicto 1828 3392 2324 3392 conicto end_ol grestore gsave 30.794598 -22.720711 translate 0.035278 -0.035278 scale start_ol 3776 2725 moveto 4023 3048 4337 3220 conicto 4651 3392 4991 3392 conicto 5437 3392 5694 3143 conicto 5952 2895 5952 2461 conicto 5952 2371 5938 2255 conicto 5925 2139 5899 1991 conicto 5504 0 lineto 4428 0 lineto 4765 1705 lineto 4774 1749 lineto 4852 2111 4852 2213 conicto 4852 2373 4759 2466 conicto 4666 2560 4506 2560 conicto 4201 2560 3989 2313 conicto 3778 2066 3686 1608 conicto 3392 0 lineto 2320 0 lineto 2661 1705 lineto 2706 1924 2724 2036 conicto 2742 2149 2742 2213 conicto 2742 2376 2650 2468 conicto 2558 2560 2394 2560 conicto 2100 2560 1878 2304 conicto 1657 2049 1571 1608 conicto 1251 0 lineto 192 0 lineto 832 3264 lineto 1901 3264 lineto 1803 2789 lineto 2048 3089 2325 3240 conicto 2603 3392 2903 3392 conicto 3242 3392 3484 3205 conicto 3726 3019 3776 2725 conicto end_ol grestore gsave 31.626315 -22.720711 translate 0.035278 -0.035278 scale start_ol 3776 2725 moveto 4023 3048 4337 3220 conicto 4651 3392 4991 3392 conicto 5437 3392 5694 3143 conicto 5952 2895 5952 2461 conicto 5952 2371 5938 2255 conicto 5925 2139 5899 1991 conicto 5504 0 lineto 4428 0 lineto 4765 1705 lineto 4774 1749 lineto 4852 2111 4852 2213 conicto 4852 2373 4759 2466 conicto 4666 2560 4506 2560 conicto 4201 2560 3989 2313 conicto 3778 2066 3686 1608 conicto 3392 0 lineto 2320 0 lineto 2661 1705 lineto 2706 1924 2724 2036 conicto 2742 2149 2742 2213 conicto 2742 2376 2650 2468 conicto 2558 2560 2394 2560 conicto 2100 2560 1878 2304 conicto 1657 2049 1571 1608 conicto 1251 0 lineto 192 0 lineto 832 3264 lineto 1901 3264 lineto 1803 2789 lineto 2048 3089 2325 3240 conicto 2603 3392 2903 3392 conicto 3242 3392 3484 3205 conicto 3726 3019 3776 2725 conicto end_ol grestore gsave 32.458033 -22.720711 translate 0.035278 -0.035278 scale start_ol 3774 1573 moveto 3739 1408 lineto 1286 1408 lineto 1286 1390 1283 1355 conicto 1280 1320 1280 1301 conicto 1280 969 1472 804 conicto 1664 640 2048 640 conicto 2379 640 2747 736 conicto 3115 833 3520 1024 conicto 3361 192 lineto 2973 63 2590 0 conicto 2207 -64 1811 -64 conicto 1035 -64 613 291 conicto 192 647 192 1297 conicto 192 1673 326 2027 conicto 460 2381 717 2675 conicto 1021 3028 1444 3210 conicto 1867 3392 2383 3392 conicto 3053 3392 3446 3042 conicto 3840 2692 3840 2099 conicto 3840 1984 3824 1855 conicto 3808 1726 3774 1573 conicto 2798 2048 moveto 2807 2085 2811 2123 conicto 2816 2161 2816 2197 conicto 2816 2423 2674 2555 conicto 2533 2688 2290 2688 conicto 1980 2688 1763 2526 conicto 1546 2364 1431 2048 conicto 2798 2048 lineto end_ol grestore gsave 33.000024 -22.720711 translate 0.035278 -0.035278 scale start_ol 3915 1991 moveto 3520 0 lineto 2456 0 lineto 2791 1705 lineto 2827 1871 2846 1986 conicto 2865 2102 2865 2169 conicto 2865 2356 2760 2458 conicto 2655 2560 2462 2560 conicto 2133 2560 1897 2307 conicto 1662 2055 1570 1608 conicto 1250 0 lineto 192 0 lineto 832 3264 lineto 1899 3264 lineto 1801 2789 lineto 2094 3095 2390 3243 conicto 2687 3392 3010 3392 conicto 3470 3392 3719 3148 conicto 3968 2904 3968 2461 conicto 3968 2365 3954 2247 conicto 3941 2130 3915 1991 conicto end_ol grestore gsave 33.569490 -22.720711 translate 0.035278 -0.035278 scale start_ol 1827 704 moveto 2235 704 2490 1075 conicto 2746 1447 2746 2047 conicto 2746 2320 2602 2472 conicto 2459 2624 2202 2624 conicto 1800 2624 1540 2256 conicto 1280 1889 1280 1316 conicto 1280 1017 1420 860 conicto 1561 704 1827 704 conicto 2942 2828 moveto 3285 4544 lineto 4352 4544 lineto 3456 0 lineto 2389 0 lineto 2486 494 lineto 2244 208 1978 72 conicto 1713 -64 1398 -64 conicto 841 -64 516 288 conicto 192 641 192 1250 conicto 192 1629 305 1987 conicto 419 2346 632 2640 conicto 900 3010 1238 3201 conicto 1576 3392 1962 3392 conicto 2302 3392 2539 3254 conicto 2777 3117 2942 2828 conicto end_ol grestore gsave 34.141453 -22.720711 translate 0.035278 -0.035278 scale start_ol 2014 1472 moveto 1619 1472 1417 1355 conicto 1216 1238 1216 1009 conicto 1216 837 1335 738 conicto 1454 640 1663 640 conicto 1987 640 2204 827 conicto 2422 1015 2496 1356 conicto 2520 1472 lineto 2014 1472 lineto 3659 1878 moveto 3291 0 lineto 2237 0 lineto 2326 508 lineto 2066 215 1777 75 conicto 1488 -64 1149 -64 conicto 680 -64 404 176 conicto 128 417 128 826 conicto 128 1450 616 1781 conicto 1105 2112 2025 2112 conicto 2646 2112 lineto 2658 2202 lineto 2667 2243 2668 2261 conicto 2670 2279 2670 2294 conicto 2670 2489 2485 2588 conicto 2300 2688 1936 2688 conicto 1607 2688 1299 2624 conicto 991 2560 704 2432 conicto 867 3264 lineto 1198 3327 1544 3359 conicto 1891 3392 2263 3392 conicto 2998 3392 3355 3137 conicto 3712 2882 3712 2361 conicto 3712 2259 3698 2138 conicto 3685 2018 3659 1878 conicto end_ol grestore gsave 34.680946 -22.720711 translate 0.035278 -0.035278 scale start_ol 2143 4224 moveto 1964 3264 lineto 3039 3264 lineto 2889 2496 lineto 1814 2496 lineto 1544 1149 lineto 1532 1104 1527 1072 conicto 1523 1041 1523 1013 conicto 1523 882 1612 825 conicto 1702 768 1914 768 conicto 2457 768 lineto 2308 0 lineto 1423 0 lineto 947 0 697 200 conicto 448 401 448 778 conicto 448 860 457 954 conicto 466 1049 483 1146 conicto 754 2496 lineto 246 2496 lineto 384 3264 lineto 903 3264 lineto 1085 4224 lineto 2143 4224 lineto end_ol grestore gsave 35.063087 -22.720711 translate 0.035278 -0.035278 scale start_ol 832 3264 moveto 1899 3264 lineto 1256 0 lineto 192 0 lineto 832 3264 lineto 1088 4544 moveto 2146 4544 lineto 1978 3648 lineto 896 3648 lineto 1088 4544 lineto end_ol grestore gsave 35.337824 -22.720711 translate 0.035278 -0.035278 scale start_ol 2243 2624 moveto 1823 2624 1551 2259 conicto 1280 1895 1280 1331 conicto 1280 1025 1426 864 conicto 1573 704 1853 704 conicto 2273 704 2544 1070 conicto 2816 1436 2816 2002 conicto 2816 2306 2669 2465 conicto 2523 2624 2243 2624 conicto 2324 3392 moveto 3061 3392 3482 3019 conicto 3904 2646 3904 2002 conicto 3904 1629 3771 1277 conicto 3639 926 3385 635 conicto 3084 289 2674 112 conicto 2265 -64 1761 -64 conicto 1032 -64 612 309 conicto 192 682 192 1326 conicto 192 1696 327 2050 conicto 463 2405 717 2698 conicto 1012 3039 1420 3215 conicto 1828 3392 2324 3392 conicto end_ol grestore gsave 35.887306 -22.720711 translate 0.035278 -0.035278 scale start_ol 3915 1991 moveto 3520 0 lineto 2456 0 lineto 2791 1705 lineto 2827 1871 2846 1986 conicto 2865 2102 2865 2169 conicto 2865 2356 2760 2458 conicto 2655 2560 2462 2560 conicto 2133 2560 1897 2307 conicto 1662 2055 1570 1608 conicto 1250 0 lineto 192 0 lineto 832 3264 lineto 1899 3264 lineto 1801 2789 lineto 2094 3095 2390 3243 conicto 2687 3392 3010 3392 conicto 3470 3392 3719 3148 conicto 3968 2904 3968 2461 conicto 3968 2365 3954 2247 conicto 3941 2130 3915 1991 conicto end_ol grestore gsave 36.456772 -22.720711 translate 0.035278 -0.035278 scale start_ol 4017 4352 moveto 3835 3392 lineto 3505 3553 3183 3632 conicto 2862 3712 2555 3712 conicto 2134 3712 1899 3579 conicto 1664 3446 1664 3210 conicto 1664 3059 1765 2975 conicto 1866 2891 2181 2811 conicto 2630 2695 lineto 3222 2546 3499 2264 conicto 3776 1983 3776 1536 conicto 3776 812 3224 374 conicto 2672 -64 1758 -64 conicto 1332 -64 910 16 conicto 489 97 86 256 conicto 265 1216 lineto 656 991 1024 879 conicto 1393 768 1752 768 conicto 2139 768 2381 928 conicto 2624 1088 2624 1337 conicto 2624 1500 2519 1590 conicto 2414 1681 2059 1776 conicto 1610 1892 lineto 1087 2020 831 2297 conicto 576 2574 576 3014 conicto 576 3708 1102 4126 conicto 1629 4544 2519 4544 conicto 2876 4544 3252 4496 conicto 3628 4448 4017 4352 conicto end_ol grestore gsave 37.031232 -22.720711 translate 0.035278 -0.035278 scale start_ol 2143 4224 moveto 1964 3264 lineto 3039 3264 lineto 2889 2496 lineto 1814 2496 lineto 1544 1149 lineto 1532 1104 1527 1072 conicto 1523 1041 1523 1013 conicto 1523 882 1612 825 conicto 1702 768 1914 768 conicto 2457 768 lineto 2308 0 lineto 1423 0 lineto 947 0 697 200 conicto 448 401 448 778 conicto 448 860 457 954 conicto 466 1049 483 1146 conicto 754 2496 lineto 246 2496 lineto 384 3264 lineto 903 3264 lineto 1085 4224 lineto 2143 4224 lineto end_ol grestore gsave 37.413373 -22.720711 translate 0.035278 -0.035278 scale start_ol 3081 2432 moveto 2973 2495 2842 2527 conicto 2711 2560 2560 2560 conicto 2160 2560 1896 2297 conicto 1633 2035 1540 1540 conicto 1243 0 lineto 192 0 lineto 832 3264 lineto 1881 3264 lineto 1767 2748 lineto 1974 3060 2284 3226 conicto 2594 3392 2973 3392 conicto 3028 3392 3098 3382 conicto 3168 3373 3264 3354 conicto 3081 2432 lineto end_ol grestore gsave 37.807999 -22.720711 translate 0.035278 -0.035278 scale start_ol 2014 1472 moveto 1619 1472 1417 1355 conicto 1216 1238 1216 1009 conicto 1216 837 1335 738 conicto 1454 640 1663 640 conicto 1987 640 2204 827 conicto 2422 1015 2496 1356 conicto 2520 1472 lineto 2014 1472 lineto 3659 1878 moveto 3291 0 lineto 2237 0 lineto 2326 508 lineto 2066 215 1777 75 conicto 1488 -64 1149 -64 conicto 680 -64 404 176 conicto 128 417 128 826 conicto 128 1450 616 1781 conicto 1105 2112 2025 2112 conicto 2646 2112 lineto 2658 2202 lineto 2667 2243 2668 2261 conicto 2670 2279 2670 2294 conicto 2670 2489 2485 2588 conicto 2300 2688 1936 2688 conicto 1607 2688 1299 2624 conicto 991 2560 704 2432 conicto 867 3264 lineto 1198 3327 1544 3359 conicto 1891 3392 2263 3392 conicto 2998 3392 3355 3137 conicto 3712 2882 3712 2361 conicto 3712 2259 3698 2138 conicto 3685 2018 3659 1878 conicto end_ol grestore gsave 38.347493 -22.720711 translate 0.035278 -0.035278 scale start_ol 2143 4224 moveto 1964 3264 lineto 3039 3264 lineto 2889 2496 lineto 1814 2496 lineto 1544 1149 lineto 1532 1104 1527 1072 conicto 1523 1041 1523 1013 conicto 1523 882 1612 825 conicto 1702 768 1914 768 conicto 2457 768 lineto 2308 0 lineto 1423 0 lineto 947 0 697 200 conicto 448 401 448 778 conicto 448 860 457 954 conicto 466 1049 483 1146 conicto 754 2496 lineto 246 2496 lineto 384 3264 lineto 903 3264 lineto 1085 4224 lineto 2143 4224 lineto end_ol grestore gsave 38.729634 -22.720711 translate 0.035278 -0.035278 scale start_ol 3774 1573 moveto 3739 1408 lineto 1286 1408 lineto 1286 1390 1283 1355 conicto 1280 1320 1280 1301 conicto 1280 969 1472 804 conicto 1664 640 2048 640 conicto 2379 640 2747 736 conicto 3115 833 3520 1024 conicto 3361 192 lineto 2973 63 2590 0 conicto 2207 -64 1811 -64 conicto 1035 -64 613 291 conicto 192 647 192 1297 conicto 192 1673 326 2027 conicto 460 2381 717 2675 conicto 1021 3028 1444 3210 conicto 1867 3392 2383 3392 conicto 3053 3392 3446 3042 conicto 3840 2692 3840 2099 conicto 3840 1984 3824 1855 conicto 3808 1726 3774 1573 conicto 2798 2048 moveto 2807 2085 2811 2123 conicto 2816 2161 2816 2197 conicto 2816 2423 2674 2555 conicto 2533 2688 2290 2688 conicto 1980 2688 1763 2526 conicto 1546 2364 1431 2048 conicto 2798 2048 lineto end_ol grestore gsave 39.271624 -22.720711 translate 0.035278 -0.035278 scale start_ol 2489 561 moveto 2236 272 1974 136 conicto 1712 0 1402 0 conicto 843 0 517 363 conicto 192 726 192 1354 conicto 192 1689 305 2025 conicto 419 2361 631 2657 conicto 891 3016 1227 3204 conicto 1564 3392 1950 3392 conicto 2298 3392 2535 3251 conicto 2773 3111 2935 2808 conicto 3024 3264 lineto 4096 3264 lineto 3535 434 lineto 3364 -442 2802 -861 conicto 2241 -1280 1243 -1280 conicto 936 -1280 651 -1232 conicto 366 -1185 89 -1088 conicto 245 -256 lineto 495 -417 745 -496 conicto 996 -576 1258 -576 conicto 1782 -576 2063 -358 conicto 2344 -141 2441 334 conicto 2489 561 lineto 2192 2624 moveto 1800 2624 1540 2271 conicto 1280 1919 1280 1387 conicto 1280 1085 1419 926 conicto 1559 768 1826 768 conicto 2215 768 2476 1119 conicto 2738 1470 2738 1993 conicto 2738 2301 2598 2462 conicto 2459 2624 2192 2624 conicto end_ol grestore gsave 39.843587 -22.720711 translate 0.035278 -0.035278 scale start_ol 399 3264 moveto 1398 3264 lineto 1854 1003 lineto 3028 3264 lineto 4160 3264 lineto 2064 -284 lineto 1712 -898 1413 -1089 conicto 1115 -1280 642 -1280 conicto 0 -1280 lineto 109 -576 lineto 443 -576 lineto 703 -576 847 -494 conicto 991 -412 1103 -206 conicto 1200 -32 lineto 399 3264 lineto end_ol grestore 1.000000 1.000000 1.000000 srgb n 28.404110 -22.270711 m 28.404110 -21.870711 l 40.636610 -21.870711 l 40.636610 -22.270711 l f 0.000000 0.000000 0.000000 srgb n 28.404110 -22.270711 m 28.404110 -21.870711 l 40.636610 -21.870711 l 40.636610 -22.270711 l cp s 1.000000 1.000000 1.000000 srgb n 28.404110 -21.870711 m 28.404110 -21.470711 l 40.636610 -21.470711 l 40.636610 -21.870711 l f 0.000000 0.000000 0.000000 srgb n 28.404110 -21.870711 m 28.404110 -21.470711 l 40.636610 -21.470711 l 40.636610 -21.870711 l cp s 1.000000 1.000000 1.000000 srgb n 38.336610 -23.770711 m 38.336610 -23.370711 l 41.036610 -23.370711 l 41.036610 -23.770711 l f [0.300000] 0 sd [0.300000] 0 sd 0.000000 0.000000 0.000000 srgb n 38.336610 -23.770711 m 38.336610 -23.370711 l 41.036610 -23.370711 l 41.036610 -23.770711 l cp s 0.100000 slw [] 0 sd 0 slj 0 slc n 34.520360 -20.558907 m 34.520360 -18.570711 l 36.669747 -18.570711 l s 0 slj 1.000000 1.000000 1.000000 srgb n 34.920360 -20.558907 m 34.520360 -21.358907 l 34.120360 -20.558907 l ef 0.100000 slw [] 0 sd 0 slj 0.000000 0.000000 0.000000 srgb n 34.920360 -20.558907 m 34.520360 -21.358907 l 34.120360 -20.558907 l cp s 0.100000 slw [] 0 sd 0 slj 0 slc n 34.520360 -20.558907 m 34.520360 -14.958666 l 36.908497 -14.958666 l 36.908497 -14.908666 l s 0 slj 1.000000 1.000000 1.000000 srgb n 34.920360 -20.558907 m 34.520360 -21.358907 l 34.120360 -20.558907 l ef 0.100000 slw [] 0 sd 0 slj 0.000000 0.000000 0.000000 srgb n 34.920360 -20.558907 m 34.520360 -21.358907 l 34.120360 -20.558907 l cp s 0.100000 slw [] 0 sd 0 slj 0 slc n 34.520360 -20.558907 m 34.520360 -11.469044 l 45.915100 -11.469044 l 45.915100 -11.470711 l s 0 slj 1.000000 1.000000 1.000000 srgb n 34.920360 -20.558907 m 34.520360 -21.358907 l 34.120360 -20.558907 l ef 0.100000 slw [] 0 sd 0 slj 0.000000 0.000000 0.000000 srgb n 34.920360 -20.558907 m 34.520360 -21.358907 l 34.120360 -20.558907 l cp s 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb n 36.840670 -5.818619 m 36.840670 -4.418619 l 47.735670 -4.418619 l 47.735670 -5.818619 l f 0.000000 0.000000 0.000000 srgb n 36.840670 -5.818619 m 36.840670 -4.418619 l 47.735670 -4.418619 l 47.735670 -5.818619 l cp s gsave 37.336920 -4.868619 translate 0.035278 -0.035278 scale start_ol 1728 3584 moveto 1728 832 lineto 2125 832 lineto 2804 832 3162 1185 conicto 3520 1539 3520 2213 conicto 3520 2883 3163 3233 conicto 2807 3584 2125 3584 conicto 1728 3584 lineto 576 4416 moveto 1788 4416 lineto 2770 4416 3250 4272 conicto 3731 4129 4074 3786 conicto 4378 3487 4525 3096 conicto 4672 2706 4672 2212 conicto 4672 1713 4525 1321 conicto 4378 929 4074 630 conicto 3728 287 3243 143 conicto 2758 0 1788 0 conicto 576 0 lineto 576 4416 lineto end_ol grestore gsave 38.001297 -4.868619 translate 0.035278 -0.035278 scale start_ol 3776 1703 moveto 3776 1408 lineto 1280 1408 lineto 1319 1024 1554 832 conicto 1790 640 2213 640 conicto 2555 640 2912 735 conicto 3270 831 3648 1024 conicto 3648 192 lineto 3273 65 2898 0 conicto 2523 -64 2148 -64 conicto 1251 -64 753 390 conicto 256 844 256 1664 conicto 256 2469 740 2930 conicto 1225 3392 2075 3392 conicto 2848 3392 3312 2932 conicto 3776 2472 3776 1703 conicto 2752 2048 moveto 2752 2336 2565 2512 conicto 2379 2688 2077 2688 conicto 1751 2688 1547 2523 conicto 1343 2358 1293 2048 conicto 2752 2048 lineto end_ol grestore gsave 38.543288 -4.868619 translate 0.035278 -0.035278 scale start_ol 3531 2745 moveto 3730 3061 4003 3226 conicto 4277 3392 4605 3392 conicto 5169 3392 5464 3033 conicto 5760 2675 5760 1991 conicto 5760 0 lineto 4736 0 lineto 4736 1705 lineto 4739 1743 4740 1784 conicto 4742 1825 4742 1901 conicto 4742 2248 4636 2404 conicto 4531 2560 4296 2560 conicto 3989 2560 3821 2314 conicto 3654 2069 3648 1605 conicto 3648 0 lineto 2624 0 lineto 2624 1705 lineto 2624 2248 2527 2404 conicto 2431 2560 2184 2560 conicto 1874 2560 1705 2313 conicto 1536 2066 1536 1608 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2816 lineto 1730 3102 1980 3247 conicto 2231 3392 2533 3392 conicto 2874 3392 3135 3222 conicto 3396 3052 3531 2745 conicto end_ol grestore gsave 39.375005 -4.868619 translate 0.035278 -0.035278 scale start_ol 2085 2624 moveto 1723 2624 1533 2377 conicto 1344 2130 1344 1664 conicto 1344 1198 1533 951 conicto 1723 704 2085 704 conicto 2440 704 2628 951 conicto 2816 1198 2816 1664 conicto 2816 2130 2628 2377 conicto 2440 2624 2085 2624 conicto 2084 3392 moveto 2941 3392 3422 2933 conicto 3904 2475 3904 1664 conicto 3904 853 3422 394 conicto 2941 -64 2084 -64 conicto 1225 -64 740 394 conicto 256 853 256 1664 conicto 256 2475 740 2933 conicto 1225 3392 2084 3392 conicto end_ol grestore gsave 39.924487 -4.868619 translate 0.035278 -0.035278 scale start_ol 2752 576 moveto 2533 279 2269 139 conicto 2005 0 1658 0 conicto 1050 0 653 478 conicto 256 957 256 1697 conicto 256 2441 653 2916 conicto 1050 3392 1658 3392 conicto 2005 3392 2269 3253 conicto 2533 3115 2752 2816 conicto 2752 3264 lineto 3776 3264 lineto 3776 343 lineto 3776 -447 3274 -863 conicto 2772 -1280 1818 -1280 conicto 1509 -1280 1220 -1232 conicto 932 -1185 640 -1088 conicto 640 -256 lineto 922 -417 1191 -496 conicto 1461 -576 1733 -576 conicto 2261 -576 2506 -353 conicto 2752 -131 2752 343 conicto 2752 576 lineto 2047 2624 moveto 1715 2624 1529 2381 conicto 1344 2139 1344 1695 conicto 1344 1239 1523 1003 conicto 1703 768 2047 768 conicto 2381 768 2566 1010 conicto 2752 1253 2752 1695 conicto 2752 2139 2566 2381 conicto 2381 2624 2047 2624 conicto end_ol grestore gsave 40.496450 -4.868619 translate 0.035278 -0.035278 scale start_ol 2944 2432 moveto 2804 2497 2666 2528 conicto 2528 2560 2389 2560 conicto 1979 2560 1757 2296 conicto 1536 2032 1536 1540 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2752 lineto 1741 3086 2007 3239 conicto 2273 3392 2644 3392 conicto 2697 3392 2759 3385 conicto 2822 3378 2941 3354 conicto 2944 2432 lineto end_ol grestore gsave 40.891076 -4.868619 translate 0.035278 -0.035278 scale start_ol 1981 1472 moveto 1632 1472 1456 1365 conicto 1280 1258 1280 1049 conicto 1280 857 1421 748 conicto 1563 640 1816 640 conicto 2130 640 2345 844 conicto 2560 1049 2560 1356 conicto 2560 1472 lineto 1981 1472 lineto 3584 1878 moveto 3584 0 lineto 2560 0 lineto 2560 512 lineto 2345 211 2076 73 conicto 1808 -64 1423 -64 conicto 904 -64 580 232 conicto 256 528 256 1001 conicto 256 1575 654 1843 conicto 1052 2112 1903 2112 conicto 2560 2112 lineto 2560 2202 lineto 2560 2454 2363 2571 conicto 2166 2688 1748 2688 conicto 1409 2688 1117 2624 conicto 826 2560 576 2432 conicto 576 3264 lineto 906 3327 1238 3359 conicto 1571 3392 1903 3392 conicto 2793 3392 3188 3036 conicto 3584 2680 3584 1878 conicto end_ol grestore gsave 41.430570 -4.868619 translate 0.035278 -0.035278 scale start_ol 1536 512 moveto 1536 -1280 lineto 512 -1280 lineto 512 3264 lineto 1536 3264 lineto 1536 2816 lineto 1755 3112 2021 3252 conicto 2287 3392 2633 3392 conicto 3245 3392 3638 2908 conicto 4032 2425 4032 1664 conicto 4032 903 3638 419 conicto 3245 -64 2633 -64 conicto 2287 -64 2021 76 conicto 1755 216 1536 512 conicto 2243 2624 moveto 1901 2624 1718 2376 conicto 1536 2129 1536 1664 conicto 1536 1199 1718 951 conicto 1901 704 2243 704 conicto 2585 704 2764 950 conicto 2944 1196 2944 1664 conicto 2944 2132 2764 2378 conicto 2585 2624 2243 2624 conicto end_ol grestore gsave 42.002533 -4.868619 translate 0.035278 -0.035278 scale start_ol 3840 1991 moveto 3840 0 lineto 2816 0 lineto 2816 324 lineto 2816 1518 lineto 2816 1947 2795 2107 conicto 2775 2268 2725 2344 conicto 2659 2446 2546 2503 conicto 2433 2560 2289 2560 conicto 1938 2560 1737 2307 conicto 1536 2055 1536 1608 conicto 1536 0 lineto 512 0 lineto 512 4544 lineto 1536 4544 lineto 1536 2816 lineto 1779 3112 2052 3252 conicto 2325 3392 2655 3392 conicto 3237 3392 3538 3033 conicto 3840 2675 3840 1991 conicto end_ol grestore gsave 42.571999 -4.868619 translate 0.035278 -0.035278 scale start_ol 512 3264 moveto 1536 3264 lineto 1536 0 lineto 512 0 lineto 512 3264 lineto 512 4544 moveto 1536 4544 lineto 1536 3648 lineto 512 3648 lineto 512 4544 lineto end_ol grestore gsave 42.846736 -4.868619 translate 0.035278 -0.035278 scale start_ol 3136 3136 moveto 3136 2304 lineto 2924 2467 2710 2545 conicto 2496 2624 2266 2624 conicto 1830 2624 1587 2371 conicto 1344 2118 1344 1664 conicto 1344 1210 1587 957 conicto 1830 704 2266 704 conicto 2511 704 2730 785 conicto 2950 866 3136 1024 conicto 3136 192 lineto 2891 64 2639 0 conicto 2388 -64 2134 -64 conicto 1252 -64 754 393 conicto 256 850 256 1664 conicto 256 2478 754 2935 conicto 1252 3392 2134 3392 conicto 2391 3392 2639 3328 conicto 2888 3264 3136 3136 conicto end_ol grestore gsave 43.321291 -4.868619 translate 0.035278 -0.035278 scale start_ol 3584 4323 moveto 3584 3392 lineto 3229 3551 2891 3631 conicto 2553 3712 2252 3712 conicto 1853 3712 1662 3599 conicto 1472 3487 1472 3251 conicto 1472 3074 1602 2975 conicto 1733 2876 2077 2805 conicto 2558 2707 lineto 3288 2558 3596 2254 conicto 3904 1950 3904 1390 conicto 3904 654 3477 295 conicto 3051 -64 2175 -64 conicto 1761 -64 1344 16 conicto 928 97 512 255 conicto 512 1216 lineto 927 993 1314 880 conicto 1702 768 2062 768 conicto 2427 768 2621 892 conicto 2816 1017 2816 1248 conicto 2816 1456 2682 1568 conicto 2549 1681 2150 1770 conicto 1713 1869 lineto 1056 2012 752 2324 conicto 448 2637 448 3166 conicto 448 3830 866 4187 conicto 1284 4544 2068 4544 conicto 2425 4544 2802 4488 conicto 3180 4433 3584 4323 conicto end_ol grestore gsave 43.895751 -4.868619 translate 0.035278 -0.035278 scale start_ol 1600 4224 moveto 1600 3264 lineto 2688 3264 lineto 2688 2496 lineto 1600 2496 lineto 1600 1146 lineto 1600 924 1694 846 conicto 1788 768 2067 768 conicto 2624 768 lineto 2624 0 lineto 1694 0 lineto 1085 0 830 260 conicto 576 521 576 1146 conicto 576 2496 lineto 64 2496 lineto 64 3264 lineto 576 3264 lineto 576 4224 lineto 1600 4224 lineto end_ol grestore gsave 44.277892 -4.868619 translate 0.035278 -0.035278 scale start_ol 2944 2432 moveto 2804 2497 2666 2528 conicto 2528 2560 2389 2560 conicto 1979 2560 1757 2296 conicto 1536 2032 1536 1540 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2752 lineto 1741 3086 2007 3239 conicto 2273 3392 2644 3392 conicto 2697 3392 2759 3385 conicto 2822 3378 2941 3354 conicto 2944 2432 lineto end_ol grestore gsave 44.672518 -4.868619 translate 0.035278 -0.035278 scale start_ol 1981 1472 moveto 1632 1472 1456 1365 conicto 1280 1258 1280 1049 conicto 1280 857 1421 748 conicto 1563 640 1816 640 conicto 2130 640 2345 844 conicto 2560 1049 2560 1356 conicto 2560 1472 lineto 1981 1472 lineto 3584 1878 moveto 3584 0 lineto 2560 0 lineto 2560 512 lineto 2345 211 2076 73 conicto 1808 -64 1423 -64 conicto 904 -64 580 232 conicto 256 528 256 1001 conicto 256 1575 654 1843 conicto 1052 2112 1903 2112 conicto 2560 2112 lineto 2560 2202 lineto 2560 2454 2363 2571 conicto 2166 2688 1748 2688 conicto 1409 2688 1117 2624 conicto 826 2560 576 2432 conicto 576 3264 lineto 906 3327 1238 3359 conicto 1571 3392 1903 3392 conicto 2793 3392 3188 3036 conicto 3584 2680 3584 1878 conicto end_ol grestore gsave 45.212011 -4.868619 translate 0.035278 -0.035278 scale start_ol 1600 4224 moveto 1600 3264 lineto 2688 3264 lineto 2688 2496 lineto 1600 2496 lineto 1600 1146 lineto 1600 924 1694 846 conicto 1788 768 2067 768 conicto 2624 768 lineto 2624 0 lineto 1694 0 lineto 1085 0 830 260 conicto 576 521 576 1146 conicto 576 2496 lineto 64 2496 lineto 64 3264 lineto 576 3264 lineto 576 4224 lineto 1600 4224 lineto end_ol grestore gsave 45.594152 -4.868619 translate 0.035278 -0.035278 scale start_ol 3776 1703 moveto 3776 1408 lineto 1280 1408 lineto 1319 1024 1554 832 conicto 1790 640 2213 640 conicto 2555 640 2912 735 conicto 3270 831 3648 1024 conicto 3648 192 lineto 3273 65 2898 0 conicto 2523 -64 2148 -64 conicto 1251 -64 753 390 conicto 256 844 256 1664 conicto 256 2469 740 2930 conicto 1225 3392 2075 3392 conicto 2848 3392 3312 2932 conicto 3776 2472 3776 1703 conicto 2752 2048 moveto 2752 2336 2565 2512 conicto 2379 2688 2077 2688 conicto 1751 2688 1547 2523 conicto 1343 2358 1293 2048 conicto 2752 2048 lineto end_ol grestore gsave 46.136143 -4.868619 translate 0.035278 -0.035278 scale start_ol 2752 576 moveto 2533 279 2269 139 conicto 2005 0 1658 0 conicto 1050 0 653 478 conicto 256 957 256 1697 conicto 256 2441 653 2916 conicto 1050 3392 1658 3392 conicto 2005 3392 2269 3253 conicto 2533 3115 2752 2816 conicto 2752 3264 lineto 3776 3264 lineto 3776 343 lineto 3776 -447 3274 -863 conicto 2772 -1280 1818 -1280 conicto 1509 -1280 1220 -1232 conicto 932 -1185 640 -1088 conicto 640 -256 lineto 922 -417 1191 -496 conicto 1461 -576 1733 -576 conicto 2261 -576 2506 -353 conicto 2752 -131 2752 343 conicto 2752 576 lineto 2047 2624 moveto 1715 2624 1529 2381 conicto 1344 2139 1344 1695 conicto 1344 1239 1523 1003 conicto 1703 768 2047 768 conicto 2381 768 2566 1010 conicto 2752 1253 2752 1695 conicto 2752 2139 2566 2381 conicto 2381 2624 2047 2624 conicto end_ol grestore gsave 46.708106 -4.868619 translate 0.035278 -0.035278 scale start_ol 64 3264 moveto 1108 3264 lineto 1986 1049 lineto 2732 3264 lineto 3776 3264 lineto 2403 -284 lineto 2196 -838 1920 -1059 conicto 1644 -1280 1192 -1280 conicto 589 -1280 lineto 589 -576 lineto 915 -576 lineto 1181 -576 1302 -495 conicto 1423 -415 1490 -206 conicto 1519 -116 lineto 64 3264 lineto end_ol grestore 1.000000 1.000000 1.000000 srgb n 36.840670 -4.418619 m 36.840670 -4.018619 l 47.735670 -4.018619 l 47.735670 -4.418619 l f 0.000000 0.000000 0.000000 srgb n 36.840670 -4.418619 m 36.840670 -4.018619 l 47.735670 -4.018619 l 47.735670 -4.418619 l cp s 1.000000 1.000000 1.000000 srgb n 36.840670 -4.018619 m 36.840670 -3.018619 l 47.735670 -3.018619 l 47.735670 -4.018619 l f 0.000000 0.000000 0.000000 srgb n 36.840670 -4.018619 m 36.840670 -3.018619 l 47.735670 -3.018619 l 47.735670 -4.018619 l cp s gsave 36.990670 -3.318619 translate 0.035278 -0.035278 scale start_ol 1664 2752 moveto 1664 1728 lineto 2688 1728 lineto 2688 1344 lineto 1664 1344 lineto 1664 320 lineto 1280 320 lineto 1280 1344 lineto 256 1344 lineto 256 1728 lineto 1280 1728 lineto 1280 2752 lineto 1664 2752 lineto end_ol grestore gsave 37.375308 -3.318619 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 37.759946 -3.318619 translate 0.035278 -0.035278 scale start_ol 448 1023 moveto 448 2688 lineto 896 2688 lineto 896 1023 lineto 896 661 1022 490 conicto 1149 320 1414 320 conicto 1722 320 1885 539 conicto 2048 759 2048 1169 conicto 2048 2688 lineto 2496 2688 lineto 2496 0 lineto 2048 0 lineto 2048 409 lineto 1931 176 1729 56 conicto 1528 -64 1259 -64 conicto 849 -64 648 206 conicto 448 476 448 1023 conicto end_ol grestore gsave 38.144584 -3.318619 translate 0.035278 -0.035278 scale start_ol 2496 1665 moveto 2496 0 lineto 2048 0 lineto 2048 1665 lineto 2048 2027 1922 2197 conicto 1797 2368 1530 2368 conicto 1225 2368 1060 2148 conicto 896 1929 896 1519 conicto 896 0 lineto 448 0 lineto 448 2688 lineto 896 2688 lineto 896 2284 lineto 1013 2514 1213 2633 conicto 1413 2752 1686 2752 conicto 2094 2752 2295 2482 conicto 2496 2212 2496 1665 conicto end_ol grestore gsave 38.529222 -3.318619 translate 0.035278 -0.035278 scale start_ol 2112 3712 moveto 1790 3168 1631 2627 conicto 1472 2087 1472 1538 conicto 1472 992 1631 450 conicto 1790 -91 2112 -640 conicto 1724 -640 lineto 1370 -72 1197 466 conicto 1024 1004 1024 1538 conicto 1024 2070 1197 2609 conicto 1370 3149 1724 3712 conicto 2112 3712 lineto end_ol grestore gsave 38.913860 -3.318619 translate 0.035278 -0.035278 scale start_ol 448 1023 moveto 448 2688 lineto 896 2688 lineto 896 1023 lineto 896 661 1022 490 conicto 1149 320 1414 320 conicto 1722 320 1885 539 conicto 2048 759 2048 1169 conicto 2048 2688 lineto 2496 2688 lineto 2496 0 lineto 2048 0 lineto 2048 409 lineto 1931 176 1729 56 conicto 1528 -64 1259 -64 conicto 849 -64 648 206 conicto 448 476 448 1023 conicto end_ol grestore gsave 39.298498 -3.318619 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave 39.683136 -3.318619 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 40.067774 -3.318619 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 40.452412 -3.318619 translate 0.035278 -0.035278 scale start_ol 1216 704 moveto 1792 704 lineto 1792 210 lineto 1344 -704 lineto 960 -704 lineto 1216 210 lineto 1216 704 lineto end_ol grestore gsave 40.837050 -3.318619 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave 41.221688 -3.318619 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore gsave 41.606326 -3.318619 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 41.990964 -3.318619 translate 0.035278 -0.035278 scale start_ol 1598 2401 moveto 1679 2580 1803 2666 conicto 1928 2752 2104 2752 conicto 2424 2752 2556 2499 conicto 2688 2247 2688 1548 conicto 2688 0 lineto 2304 0 lineto 2304 1529 lineto 2304 2094 2239 2231 conicto 2175 2368 2004 2368 conicto 1808 2368 1736 2221 conicto 1664 2075 1664 1529 conicto 1664 0 lineto 1280 0 lineto 1280 1529 lineto 1280 2101 1210 2234 conicto 1140 2368 959 2368 conicto 780 2368 710 2221 conicto 640 2075 640 1529 conicto 640 0 lineto 256 0 lineto 256 2688 lineto 640 2688 lineto 640 2446 lineto 719 2595 837 2673 conicto 956 2752 1107 2752 conicto 1289 2752 1410 2665 conicto 1531 2578 1598 2401 conicto end_ol grestore gsave 42.375602 -3.318619 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave 42.760240 -3.318619 translate 0.035278 -0.035278 scale start_ol 2944 -832 moveto 2944 -1152 lineto 0 -1152 lineto 0 -832 lineto 2944 -832 lineto end_ol grestore gsave 43.144878 -3.318619 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 43.529516 -3.318619 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 43.914154 -3.318619 translate 0.035278 -0.035278 scale start_ol 896 353 moveto 896 -1024 lineto 448 -1024 lineto 448 2688 lineto 896 2688 lineto 896 2335 lineto 1012 2539 1206 2645 conicto 1400 2752 1653 2752 conicto 2167 2752 2459 2376 conicto 2752 2000 2752 1334 conicto 2752 681 2458 308 conicto 2165 -64 1653 -64 conicto 1395 -64 1201 42 conicto 1007 149 896 353 conicto 2304 1344 moveto 2304 1851 2128 2109 conicto 1952 2368 1605 2368 conicto 1256 2368 1076 2108 conicto 896 1849 896 1344 conicto 896 841 1076 580 conicto 1256 320 1605 320 conicto 1952 320 2128 578 conicto 2304 837 2304 1344 conicto end_ol grestore gsave 44.298792 -3.318619 translate 0.035278 -0.035278 scale start_ol 1471 2368 moveto 1124 2368 946 2109 conicto 768 1851 768 1344 conicto 768 839 946 579 conicto 1124 320 1471 320 conicto 1820 320 1998 579 conicto 2176 839 2176 1344 conicto 2176 1851 1998 2109 conicto 1820 2368 1471 2368 conicto 1471 2752 moveto 2031 2752 2327 2390 conicto 2624 2029 2624 1344 conicto 2624 657 2328 296 conicto 2033 -64 1471 -64 conicto 911 -64 615 296 conicto 320 657 320 1344 conicto 320 2029 615 2390 conicto 911 2752 1471 2752 conicto end_ol grestore gsave 44.683430 -3.318619 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave 45.068068 -3.318619 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave 45.452706 -3.318619 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore gsave 45.837344 -3.318619 translate 0.035278 -0.035278 scale start_ol 1471 2368 moveto 1124 2368 946 2109 conicto 768 1851 768 1344 conicto 768 839 946 579 conicto 1124 320 1471 320 conicto 1820 320 1998 579 conicto 2176 839 2176 1344 conicto 2176 1851 1998 2109 conicto 1820 2368 1471 2368 conicto 1471 2752 moveto 2031 2752 2327 2390 conicto 2624 2029 2624 1344 conicto 2624 657 2328 296 conicto 2033 -64 1471 -64 conicto 911 -64 615 296 conicto 320 657 320 1344 conicto 320 2029 615 2390 conicto 911 2752 1471 2752 conicto end_ol grestore gsave 46.221982 -3.318619 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 46.606620 -3.318619 translate 0.035278 -0.035278 scale start_ol 2051 871 moveto 1942 589 1773 128 conicto 1537 -508 1456 -648 conicto 1347 -836 1183 -930 conicto 1019 -1024 800 -1024 conicto 448 -1024 lineto 448 -640 lineto 707 -640 lineto 900 -640 1009 -527 conicto 1118 -415 1287 53 conicto 256 2688 lineto 721 2688 lineto 1511 586 lineto 2288 2688 lineto 2752 2688 lineto 2051 871 lineto end_ol grestore gsave 46.991258 -3.318619 translate 0.035278 -0.035278 scale start_ol 832 3712 moveto 1220 3712 lineto 1574 3149 1747 2609 conicto 1920 2070 1920 1538 conicto 1920 1002 1747 462 conicto 1574 -77 1220 -640 conicto 832 -640 lineto 1154 -86 1313 455 conicto 1472 997 1472 1538 conicto 1472 2082 1313 2624 conicto 1154 3166 832 3712 conicto end_ol grestore 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb n 36.827030 -9.304152 m 36.827030 -7.904152 l 49.262030 -7.904152 l 49.262030 -9.304152 l f 0.000000 0.000000 0.000000 srgb n 36.827030 -9.304152 m 36.827030 -7.904152 l 49.262030 -7.904152 l 49.262030 -9.304152 l cp s gsave 37.225780 -8.354152 translate 0.035278 -0.035278 scale start_ol 576 4416 moveto 1728 4416 lineto 1728 2804 lineto 3359 4416 lineto 4672 4416 lineto 2559 2325 lineto 4864 0 lineto 3459 0 lineto 1728 1739 lineto 1728 0 lineto 576 0 lineto 576 4416 lineto end_ol grestore gsave 37.845195 -8.354152 translate 0.035278 -0.035278 scale start_ol 3840 1991 moveto 3840 0 lineto 2816 0 lineto 2816 324 lineto 2816 1524 lineto 2816 1947 2795 2107 conicto 2775 2268 2725 2344 conicto 2659 2446 2546 2503 conicto 2433 2560 2289 2560 conicto 1938 2560 1737 2307 conicto 1536 2055 1536 1608 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2816 lineto 1779 3112 2052 3252 conicto 2325 3392 2655 3392 conicto 3237 3392 3538 3033 conicto 3840 2675 3840 1991 conicto end_ol grestore gsave 38.414661 -8.354152 translate 0.035278 -0.035278 scale start_ol 2085 2624 moveto 1723 2624 1533 2377 conicto 1344 2130 1344 1664 conicto 1344 1198 1533 951 conicto 1723 704 2085 704 conicto 2440 704 2628 951 conicto 2816 1198 2816 1664 conicto 2816 2130 2628 2377 conicto 2440 2624 2085 2624 conicto 2084 3392 moveto 2941 3392 3422 2933 conicto 3904 2475 3904 1664 conicto 3904 853 3422 394 conicto 2941 -64 2084 -64 conicto 1225 -64 740 394 conicto 256 853 256 1664 conicto 256 2475 740 2933 conicto 1225 3392 2084 3392 conicto end_ol grestore gsave 38.964142 -8.354152 translate 0.035278 -0.035278 scale start_ol 192 3264 moveto 1211 3264 lineto 1761 1014 lineto 2314 3264 lineto 3190 3264 lineto 3740 1037 lineto 4293 3264 lineto 5312 3264 lineto 4448 0 lineto 3304 0 lineto 2751 2244 lineto 2200 0 lineto 1056 0 lineto 192 3264 lineto end_ol grestore gsave 39.703446 -8.354152 translate 0.035278 -0.035278 scale start_ol 512 4544 moveto 1536 4544 lineto 1536 0 lineto 512 0 lineto 512 4544 lineto end_ol grestore gsave 39.978183 -8.354152 translate 0.035278 -0.035278 scale start_ol 3776 1703 moveto 3776 1408 lineto 1280 1408 lineto 1319 1024 1554 832 conicto 1790 640 2213 640 conicto 2555 640 2912 735 conicto 3270 831 3648 1024 conicto 3648 192 lineto 3273 65 2898 0 conicto 2523 -64 2148 -64 conicto 1251 -64 753 390 conicto 256 844 256 1664 conicto 256 2469 740 2930 conicto 1225 3392 2075 3392 conicto 2848 3392 3312 2932 conicto 3776 2472 3776 1703 conicto 2752 2048 moveto 2752 2336 2565 2512 conicto 2379 2688 2077 2688 conicto 1751 2688 1547 2523 conicto 1343 2358 1293 2048 conicto 2752 2048 lineto end_ol grestore gsave 40.520174 -8.354152 translate 0.035278 -0.035278 scale start_ol 2752 2816 moveto 2752 4544 lineto 3776 4544 lineto 3776 0 lineto 2752 0 lineto 2752 512 lineto 2533 213 2269 74 conicto 2005 -64 1658 -64 conicto 1045 -64 650 419 conicto 256 903 256 1664 conicto 256 2425 650 2908 conicto 1045 3392 1658 3392 conicto 2002 3392 2267 3252 conicto 2533 3112 2752 2816 conicto 2047 704 moveto 2390 704 2571 950 conicto 2752 1196 2752 1664 conicto 2752 2132 2571 2378 conicto 2390 2624 2047 2624 conicto 1706 2624 1525 2378 conicto 1344 2132 1344 1664 conicto 1344 1196 1525 950 conicto 1706 704 2047 704 conicto end_ol grestore gsave 41.092137 -8.354152 translate 0.035278 -0.035278 scale start_ol 2752 576 moveto 2533 279 2269 139 conicto 2005 0 1658 0 conicto 1050 0 653 478 conicto 256 957 256 1697 conicto 256 2441 653 2916 conicto 1050 3392 1658 3392 conicto 2005 3392 2269 3253 conicto 2533 3115 2752 2816 conicto 2752 3264 lineto 3776 3264 lineto 3776 343 lineto 3776 -447 3274 -863 conicto 2772 -1280 1818 -1280 conicto 1509 -1280 1220 -1232 conicto 932 -1185 640 -1088 conicto 640 -256 lineto 922 -417 1191 -496 conicto 1461 -576 1733 -576 conicto 2261 -576 2506 -353 conicto 2752 -131 2752 343 conicto 2752 576 lineto 2047 2624 moveto 1715 2624 1529 2381 conicto 1344 2139 1344 1695 conicto 1344 1239 1523 1003 conicto 1703 768 2047 768 conicto 2381 768 2566 1010 conicto 2752 1253 2752 1695 conicto 2752 2139 2566 2381 conicto 2381 2624 2047 2624 conicto end_ol grestore gsave 41.664100 -8.354152 translate 0.035278 -0.035278 scale start_ol 3776 1703 moveto 3776 1408 lineto 1280 1408 lineto 1319 1024 1554 832 conicto 1790 640 2213 640 conicto 2555 640 2912 735 conicto 3270 831 3648 1024 conicto 3648 192 lineto 3273 65 2898 0 conicto 2523 -64 2148 -64 conicto 1251 -64 753 390 conicto 256 844 256 1664 conicto 256 2469 740 2930 conicto 1225 3392 2075 3392 conicto 2848 3392 3312 2932 conicto 3776 2472 3776 1703 conicto 2752 2048 moveto 2752 2336 2565 2512 conicto 2379 2688 2077 2688 conicto 1751 2688 1547 2523 conicto 1343 2358 1293 2048 conicto 2752 2048 lineto end_ol grestore gsave 42.206090 -8.354152 translate 0.035278 -0.035278 scale start_ol 2310 2688 moveto 2559 2688 2687 2809 conicto 2816 2931 2816 3168 conicto 2816 3402 2687 3525 conicto 2559 3648 2310 3648 conicto 1728 3648 lineto 1728 2688 lineto 2310 2688 lineto 2346 768 moveto 2676 768 2842 912 conicto 3008 1057 3008 1348 conicto 3008 1634 2843 1777 conicto 2678 1920 2346 1920 conicto 1728 1920 lineto 1728 768 lineto 2346 768 lineto 3378 2348 moveto 3751 2242 3955 1957 conicto 4160 1672 4160 1258 conicto 4160 623 3730 311 conicto 3300 0 2422 0 conicto 576 0 lineto 576 4416 lineto 2256 4416 lineto 3158 4416 3563 4136 conicto 3968 3856 3968 3239 conicto 3968 2914 3817 2686 conicto 3666 2458 3378 2348 conicto end_ol grestore gsave 42.815517 -8.354152 translate 0.035278 -0.035278 scale start_ol 1981 1472 moveto 1632 1472 1456 1365 conicto 1280 1258 1280 1049 conicto 1280 857 1421 748 conicto 1563 640 1816 640 conicto 2130 640 2345 844 conicto 2560 1049 2560 1356 conicto 2560 1472 lineto 1981 1472 lineto 3584 1878 moveto 3584 0 lineto 2560 0 lineto 2560 512 lineto 2345 211 2076 73 conicto 1808 -64 1423 -64 conicto 904 -64 580 232 conicto 256 528 256 1001 conicto 256 1575 654 1843 conicto 1052 2112 1903 2112 conicto 2560 2112 lineto 2560 2202 lineto 2560 2454 2363 2571 conicto 2166 2688 1748 2688 conicto 1409 2688 1117 2624 conicto 826 2560 576 2432 conicto 576 3264 lineto 906 3327 1238 3359 conicto 1571 3392 1903 3392 conicto 2793 3392 3188 3036 conicto 3584 2680 3584 1878 conicto end_ol grestore gsave 43.355010 -8.354152 translate 0.035278 -0.035278 scale start_ol 3136 3200 moveto 3136 2432 lineto 2794 2560 2476 2624 conicto 2159 2688 1877 2688 conicto 1574 2688 1427 2616 conicto 1280 2544 1280 2395 conicto 1280 2274 1393 2209 conicto 1507 2145 1800 2114 conicto 1990 2088 lineto 2781 1984 3054 1746 conicto 3328 1509 3328 1002 conicto 3328 470 2939 203 conicto 2550 -64 1778 -64 conicto 1451 -64 1101 0 conicto 752 64 384 192 conicto 384 960 lineto 706 800 1045 720 conicto 1384 640 1733 640 conicto 2049 640 2208 727 conicto 2368 814 2368 986 conicto 2368 1130 2257 1200 conicto 2147 1271 1818 1310 conicto 1628 1334 lineto 903 1421 611 1657 conicto 320 1893 320 2373 conicto 320 2891 685 3141 conicto 1050 3392 1804 3392 conicto 2101 3392 2427 3345 conicto 2753 3299 3136 3200 conicto end_ol grestore gsave 43.829565 -8.354152 translate 0.035278 -0.035278 scale start_ol 3776 1703 moveto 3776 1408 lineto 1280 1408 lineto 1319 1024 1554 832 conicto 1790 640 2213 640 conicto 2555 640 2912 735 conicto 3270 831 3648 1024 conicto 3648 192 lineto 3273 65 2898 0 conicto 2523 -64 2148 -64 conicto 1251 -64 753 390 conicto 256 844 256 1664 conicto 256 2469 740 2930 conicto 1225 3392 2075 3392 conicto 2848 3392 3312 2932 conicto 3776 2472 3776 1703 conicto 2752 2048 moveto 2752 2336 2565 2512 conicto 2379 2688 2077 2688 conicto 1751 2688 1547 2523 conicto 1343 2358 1293 2048 conicto 2752 2048 lineto end_ol grestore gsave 44.371556 -8.354152 translate 0.035278 -0.035278 scale start_ol 2752 2816 moveto 2752 4544 lineto 3776 4544 lineto 3776 0 lineto 2752 0 lineto 2752 512 lineto 2533 213 2269 74 conicto 2005 -64 1658 -64 conicto 1045 -64 650 419 conicto 256 903 256 1664 conicto 256 2425 650 2908 conicto 1045 3392 1658 3392 conicto 2002 3392 2267 3252 conicto 2533 3112 2752 2816 conicto 2047 704 moveto 2390 704 2571 950 conicto 2752 1196 2752 1664 conicto 2752 2132 2571 2378 conicto 2390 2624 2047 2624 conicto 1706 2624 1525 2378 conicto 1344 2132 1344 1664 conicto 1344 1196 1525 950 conicto 1706 704 2047 704 conicto end_ol grestore gsave 44.943519 -8.354152 translate 0.035278 -0.035278 scale start_ol 3584 4323 moveto 3584 3392 lineto 3229 3551 2891 3631 conicto 2553 3712 2252 3712 conicto 1853 3712 1662 3599 conicto 1472 3487 1472 3251 conicto 1472 3074 1602 2975 conicto 1733 2876 2077 2805 conicto 2558 2707 lineto 3288 2558 3596 2254 conicto 3904 1950 3904 1390 conicto 3904 654 3477 295 conicto 3051 -64 2175 -64 conicto 1761 -64 1344 16 conicto 928 97 512 255 conicto 512 1216 lineto 927 993 1314 880 conicto 1702 768 2062 768 conicto 2427 768 2621 892 conicto 2816 1017 2816 1248 conicto 2816 1456 2682 1568 conicto 2549 1681 2150 1770 conicto 1713 1869 lineto 1056 2012 752 2324 conicto 448 2637 448 3166 conicto 448 3830 866 4187 conicto 1284 4544 2068 4544 conicto 2425 4544 2802 4488 conicto 3180 4433 3584 4323 conicto end_ol grestore gsave 45.517979 -8.354152 translate 0.035278 -0.035278 scale start_ol 1600 4224 moveto 1600 3264 lineto 2688 3264 lineto 2688 2496 lineto 1600 2496 lineto 1600 1146 lineto 1600 924 1694 846 conicto 1788 768 2067 768 conicto 2624 768 lineto 2624 0 lineto 1694 0 lineto 1085 0 830 260 conicto 576 521 576 1146 conicto 576 2496 lineto 64 2496 lineto 64 3264 lineto 576 3264 lineto 576 4224 lineto 1600 4224 lineto end_ol grestore gsave 45.900120 -8.354152 translate 0.035278 -0.035278 scale start_ol 2944 2432 moveto 2804 2497 2666 2528 conicto 2528 2560 2389 2560 conicto 1979 2560 1757 2296 conicto 1536 2032 1536 1540 conicto 1536 0 lineto 512 0 lineto 512 3264 lineto 1536 3264 lineto 1536 2752 lineto 1741 3086 2007 3239 conicto 2273 3392 2644 3392 conicto 2697 3392 2759 3385 conicto 2822 3378 2941 3354 conicto 2944 2432 lineto end_ol grestore gsave 46.294746 -8.354152 translate 0.035278 -0.035278 scale start_ol 1981 1472 moveto 1632 1472 1456 1365 conicto 1280 1258 1280 1049 conicto 1280 857 1421 748 conicto 1563 640 1816 640 conicto 2130 640 2345 844 conicto 2560 1049 2560 1356 conicto 2560 1472 lineto 1981 1472 lineto 3584 1878 moveto 3584 0 lineto 2560 0 lineto 2560 512 lineto 2345 211 2076 73 conicto 1808 -64 1423 -64 conicto 904 -64 580 232 conicto 256 528 256 1001 conicto 256 1575 654 1843 conicto 1052 2112 1903 2112 conicto 2560 2112 lineto 2560 2202 lineto 2560 2454 2363 2571 conicto 2166 2688 1748 2688 conicto 1409 2688 1117 2624 conicto 826 2560 576 2432 conicto 576 3264 lineto 906 3327 1238 3359 conicto 1571 3392 1903 3392 conicto 2793 3392 3188 3036 conicto 3584 2680 3584 1878 conicto end_ol grestore gsave 46.834240 -8.354152 translate 0.035278 -0.035278 scale start_ol 1600 4224 moveto 1600 3264 lineto 2688 3264 lineto 2688 2496 lineto 1600 2496 lineto 1600 1146 lineto 1600 924 1694 846 conicto 1788 768 2067 768 conicto 2624 768 lineto 2624 0 lineto 1694 0 lineto 1085 0 830 260 conicto 576 521 576 1146 conicto 576 2496 lineto 64 2496 lineto 64 3264 lineto 576 3264 lineto 576 4224 lineto 1600 4224 lineto end_ol grestore gsave 47.216381 -8.354152 translate 0.035278 -0.035278 scale start_ol 3776 1703 moveto 3776 1408 lineto 1280 1408 lineto 1319 1024 1554 832 conicto 1790 640 2213 640 conicto 2555 640 2912 735 conicto 3270 831 3648 1024 conicto 3648 192 lineto 3273 65 2898 0 conicto 2523 -64 2148 -64 conicto 1251 -64 753 390 conicto 256 844 256 1664 conicto 256 2469 740 2930 conicto 1225 3392 2075 3392 conicto 2848 3392 3312 2932 conicto 3776 2472 3776 1703 conicto 2752 2048 moveto 2752 2336 2565 2512 conicto 2379 2688 2077 2688 conicto 1751 2688 1547 2523 conicto 1343 2358 1293 2048 conicto 2752 2048 lineto end_ol grestore gsave 47.758372 -8.354152 translate 0.035278 -0.035278 scale start_ol 2752 576 moveto 2533 279 2269 139 conicto 2005 0 1658 0 conicto 1050 0 653 478 conicto 256 957 256 1697 conicto 256 2441 653 2916 conicto 1050 3392 1658 3392 conicto 2005 3392 2269 3253 conicto 2533 3115 2752 2816 conicto 2752 3264 lineto 3776 3264 lineto 3776 343 lineto 3776 -447 3274 -863 conicto 2772 -1280 1818 -1280 conicto 1509 -1280 1220 -1232 conicto 932 -1185 640 -1088 conicto 640 -256 lineto 922 -417 1191 -496 conicto 1461 -576 1733 -576 conicto 2261 -576 2506 -353 conicto 2752 -131 2752 343 conicto 2752 576 lineto 2047 2624 moveto 1715 2624 1529 2381 conicto 1344 2139 1344 1695 conicto 1344 1239 1523 1003 conicto 1703 768 2047 768 conicto 2381 768 2566 1010 conicto 2752 1253 2752 1695 conicto 2752 2139 2566 2381 conicto 2381 2624 2047 2624 conicto end_ol grestore gsave 48.330335 -8.354152 translate 0.035278 -0.035278 scale start_ol 64 3264 moveto 1108 3264 lineto 1986 1049 lineto 2732 3264 lineto 3776 3264 lineto 2403 -284 lineto 2196 -838 1920 -1059 conicto 1644 -1280 1192 -1280 conicto 589 -1280 lineto 589 -576 lineto 915 -576 lineto 1181 -576 1302 -495 conicto 1423 -415 1490 -206 conicto 1519 -116 lineto 64 3264 lineto end_ol grestore 1.000000 1.000000 1.000000 srgb n 36.827030 -7.904152 m 36.827030 -7.504152 l 49.262030 -7.504152 l 49.262030 -7.904152 l f 0.000000 0.000000 0.000000 srgb n 36.827030 -7.904152 m 36.827030 -7.504152 l 49.262030 -7.504152 l 49.262030 -7.904152 l cp s 1.000000 1.000000 1.000000 srgb n 36.827030 -7.504152 m 36.827030 -6.504152 l 49.262030 -6.504152 l 49.262030 -7.504152 l f 0.000000 0.000000 0.000000 srgb n 36.827030 -7.504152 m 36.827030 -6.504152 l 49.262030 -6.504152 l 49.262030 -7.504152 l cp s gsave 36.977030 -6.804152 translate 0.035278 -0.035278 scale start_ol 1664 2752 moveto 1664 1728 lineto 2688 1728 lineto 2688 1344 lineto 1664 1344 lineto 1664 320 lineto 1280 320 lineto 1280 1344 lineto 256 1344 lineto 256 1728 lineto 1280 1728 lineto 1280 2752 lineto 1664 2752 lineto end_ol grestore gsave 37.361668 -6.804152 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 37.746306 -6.804152 translate 0.035278 -0.035278 scale start_ol 448 1023 moveto 448 2688 lineto 896 2688 lineto 896 1023 lineto 896 661 1022 490 conicto 1149 320 1414 320 conicto 1722 320 1885 539 conicto 2048 759 2048 1169 conicto 2048 2688 lineto 2496 2688 lineto 2496 0 lineto 2048 0 lineto 2048 409 lineto 1931 176 1729 56 conicto 1528 -64 1259 -64 conicto 849 -64 648 206 conicto 448 476 448 1023 conicto end_ol grestore gsave 38.130944 -6.804152 translate 0.035278 -0.035278 scale start_ol 2496 1665 moveto 2496 0 lineto 2048 0 lineto 2048 1665 lineto 2048 2027 1922 2197 conicto 1797 2368 1530 2368 conicto 1225 2368 1060 2148 conicto 896 1929 896 1519 conicto 896 0 lineto 448 0 lineto 448 2688 lineto 896 2688 lineto 896 2284 lineto 1013 2514 1213 2633 conicto 1413 2752 1686 2752 conicto 2094 2752 2295 2482 conicto 2496 2212 2496 1665 conicto end_ol grestore gsave 38.515582 -6.804152 translate 0.035278 -0.035278 scale start_ol 2112 3712 moveto 1790 3168 1631 2627 conicto 1472 2087 1472 1538 conicto 1472 992 1631 450 conicto 1790 -91 2112 -640 conicto 1724 -640 lineto 1370 -72 1197 466 conicto 1024 1004 1024 1538 conicto 1024 2070 1197 2609 conicto 1370 3149 1724 3712 conicto 2112 3712 lineto end_ol grestore gsave 38.900220 -6.804152 translate 0.035278 -0.035278 scale start_ol 448 1023 moveto 448 2688 lineto 896 2688 lineto 896 1023 lineto 896 661 1022 490 conicto 1149 320 1414 320 conicto 1722 320 1885 539 conicto 2048 759 2048 1169 conicto 2048 2688 lineto 2496 2688 lineto 2496 0 lineto 2048 0 lineto 2048 409 lineto 1931 176 1729 56 conicto 1528 -64 1259 -64 conicto 849 -64 648 206 conicto 448 476 448 1023 conicto end_ol grestore gsave 39.284858 -6.804152 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave 39.669496 -6.804152 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 40.054135 -6.804152 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 40.438773 -6.804152 translate 0.035278 -0.035278 scale start_ol 1216 704 moveto 1792 704 lineto 1792 210 lineto 1344 -704 lineto 960 -704 lineto 1216 210 lineto 1216 704 lineto end_ol grestore gsave 40.823411 -6.804152 translate 0.035278 -0.035278 scale start_ol 576 3712 moveto 1024 3712 lineto 1024 1572 lineto 2179 2688 lineto 2715 2688 lineto 1660 1675 lineto 2880 0 lineto 2342 0 lineto 1352 1387 lineto 1024 1077 lineto 1024 0 lineto 576 0 lineto 576 3712 lineto end_ol grestore gsave 41.208049 -6.804152 translate 0.035278 -0.035278 scale start_ol 2496 1665 moveto 2496 0 lineto 2048 0 lineto 2048 1665 lineto 2048 2027 1922 2197 conicto 1797 2368 1530 2368 conicto 1225 2368 1060 2148 conicto 896 1929 896 1519 conicto 896 0 lineto 448 0 lineto 448 2688 lineto 896 2688 lineto 896 2284 lineto 1013 2514 1213 2633 conicto 1413 2752 1686 2752 conicto 2094 2752 2295 2482 conicto 2496 2212 2496 1665 conicto end_ol grestore gsave 41.592687 -6.804152 translate 0.035278 -0.035278 scale start_ol 1471 2368 moveto 1124 2368 946 2109 conicto 768 1851 768 1344 conicto 768 839 946 579 conicto 1124 320 1471 320 conicto 1820 320 1998 579 conicto 2176 839 2176 1344 conicto 2176 1851 1998 2109 conicto 1820 2368 1471 2368 conicto 1471 2752 moveto 2031 2752 2327 2390 conicto 2624 2029 2624 1344 conicto 2624 657 2328 296 conicto 2033 -64 1471 -64 conicto 911 -64 615 296 conicto 320 657 320 1344 conicto 320 2029 615 2390 conicto 911 2752 1471 2752 conicto end_ol grestore gsave 41.977325 -6.804152 translate 0.035278 -0.035278 scale start_ol 0 2688 moveto 435 2688 lineto 900 521 lineto 1282 1920 lineto 1657 1920 lineto 2044 521 lineto 2509 2688 lineto 2944 2688 lineto 2318 0 lineto 1898 0 lineto 1471 1487 lineto 1046 0 lineto 626 0 lineto 0 2688 lineto end_ol grestore gsave 42.361963 -6.804152 translate 0.035278 -0.035278 scale start_ol 1536 926 moveto 1536 625 1646 472 conicto 1757 320 1973 320 conicto 2496 320 lineto 2496 0 lineto 1930 0 lineto 1528 0 1308 242 conicto 1088 484 1088 926 conicto 1088 3392 lineto 192 3392 lineto 192 3712 lineto 1536 3712 lineto 1536 926 lineto end_ol grestore gsave 42.746601 -6.804152 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 43.131239 -6.804152 translate 0.035278 -0.035278 scale start_ol 2176 2335 moveto 2176 3712 lineto 2624 3712 lineto 2624 0 lineto 2176 0 lineto 2176 353 lineto 2060 149 1866 42 conicto 1673 -64 1421 -64 conicto 908 -64 614 313 conicto 320 690 320 1354 conicto 320 2007 615 2379 conicto 911 2752 1421 2752 conicto 1676 2752 1870 2645 conicto 2065 2539 2176 2335 conicto 768 1344 moveto 768 837 945 578 conicto 1122 320 1468 320 conicto 1814 320 1995 580 conicto 2176 841 2176 1344 conicto 2176 1849 1995 2108 conicto 1814 2368 1468 2368 conicto 1122 2368 945 2109 conicto 768 1851 768 1344 conicto end_ol grestore gsave 43.515877 -6.804152 translate 0.035278 -0.035278 scale start_ol 2176 1378 moveto 2176 1864 2000 2116 conicto 1825 2368 1489 2368 conicto 1138 2368 953 2116 conicto 768 1864 768 1378 conicto 768 893 954 638 conicto 1140 384 1494 384 conicto 1825 384 2000 639 conicto 2176 895 2176 1378 conicto 2624 201 moveto 2624 -402 2326 -713 conicto 2029 -1024 1452 -1024 conicto 1262 -1024 1054 -991 conicto 847 -959 640 -896 conicto 640 -448 lineto 887 -546 1088 -593 conicto 1290 -640 1458 -640 conicto 1834 -640 2005 -455 conicto 2176 -270 2176 133 conicto 2176 153 lineto 2176 461 lineto 2065 228 1873 114 conicto 1681 0 1406 0 conicto 911 0 615 374 conicto 320 748 320 1375 conicto 320 2004 615 2378 conicto 911 2752 1406 2752 conicto 1679 2752 1868 2646 conicto 2057 2541 2176 2321 conicto 2176 2688 lineto 2624 2688 lineto 2624 201 lineto end_ol grestore gsave 43.900515 -6.804152 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 44.285153 -6.804152 translate 0.035278 -0.035278 scale start_ol 2944 -832 moveto 2944 -1152 lineto 0 -1152 lineto 0 -832 lineto 2944 -832 lineto end_ol grestore gsave 44.669791 -6.804152 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 45.054429 -6.804152 translate 0.035278 -0.035278 scale start_ol 2688 1480 moveto 2688 1280 lineto 752 1280 lineto 752 1265 lineto 752 813 981 566 conicto 1210 320 1627 320 conicto 1838 320 2068 383 conicto 2299 447 2560 576 conicto 2560 128 lineto 2311 32 2080 -16 conicto 1850 -64 1634 -64 conicto 1016 -64 668 310 conicto 320 685 320 1344 conicto 320 1986 665 2369 conicto 1010 2752 1584 2752 conicto 2097 2752 2392 2411 conicto 2688 2070 2688 1480 conicto 2240 1600 moveto 2230 1976 2054 2172 conicto 1878 2368 1548 2368 conicto 1225 2368 1016 2164 conicto 807 1960 768 1597 conicto 2240 1600 lineto end_ol grestore gsave 45.439067 -6.804152 translate 0.035278 -0.035278 scale start_ol 896 353 moveto 896 -1024 lineto 448 -1024 lineto 448 2688 lineto 896 2688 lineto 896 2335 lineto 1012 2539 1206 2645 conicto 1400 2752 1653 2752 conicto 2167 2752 2459 2376 conicto 2752 2000 2752 1334 conicto 2752 681 2458 308 conicto 2165 -64 1653 -64 conicto 1395 -64 1201 42 conicto 1007 149 896 353 conicto 2304 1344 moveto 2304 1851 2128 2109 conicto 1952 2368 1605 2368 conicto 1256 2368 1076 2108 conicto 896 1849 896 1344 conicto 896 841 1076 580 conicto 1256 320 1605 320 conicto 1952 320 2128 578 conicto 2304 837 2304 1344 conicto end_ol grestore gsave 45.823705 -6.804152 translate 0.035278 -0.035278 scale start_ol 1471 2368 moveto 1124 2368 946 2109 conicto 768 1851 768 1344 conicto 768 839 946 579 conicto 1124 320 1471 320 conicto 1820 320 1998 579 conicto 2176 839 2176 1344 conicto 2176 1851 1998 2109 conicto 1820 2368 1471 2368 conicto 1471 2752 moveto 2031 2752 2327 2390 conicto 2624 2029 2624 1344 conicto 2624 657 2328 296 conicto 2033 -64 1471 -64 conicto 911 -64 615 296 conicto 320 657 320 1344 conicto 320 2029 615 2390 conicto 911 2752 1471 2752 conicto end_ol grestore gsave 46.208343 -6.804152 translate 0.035278 -0.035278 scale start_ol 2304 2624 moveto 2304 2176 lineto 2118 2272 1929 2320 conicto 1740 2368 1545 2368 conicto 1250 2368 1105 2274 conicto 960 2181 960 1990 conicto 960 1817 1067 1731 conicto 1174 1646 1599 1565 conicto 1770 1531 lineto 2096 1468 2264 1279 conicto 2432 1091 2432 789 conicto 2432 388 2154 162 conicto 1877 -64 1384 -64 conicto 1189 -64 975 -16 conicto 761 32 512 128 conicto 512 576 lineto 752 448 971 384 conicto 1191 320 1387 320 conicto 1671 320 1827 438 conicto 1984 557 1984 770 conicto 1984 1077 1415 1194 conicto 1396 1199 lineto 1236 1233 lineto 859 1306 685 1480 conicto 512 1655 512 1956 conicto 512 2337 770 2544 conicto 1029 2752 1508 2752 conicto 1721 2752 1917 2720 conicto 2114 2688 2304 2624 conicto end_ol grestore gsave 46.592981 -6.804152 translate 0.035278 -0.035278 scale start_ol 576 2688 moveto 1728 2688 lineto 1728 320 lineto 2624 320 lineto 2624 0 lineto 384 0 lineto 384 320 lineto 1280 320 lineto 1280 2368 lineto 576 2368 lineto 576 2688 lineto 1280 3712 moveto 1728 3712 lineto 1728 3136 lineto 1280 3136 lineto 1280 3712 lineto end_ol grestore gsave 46.977619 -6.804152 translate 0.035278 -0.035278 scale start_ol 1472 3456 moveto 1472 2688 lineto 2496 2688 lineto 2496 2368 lineto 1472 2368 lineto 1472 868 lineto 1472 562 1587 441 conicto 1702 320 1989 320 conicto 2496 320 lineto 2496 0 lineto 1945 0 lineto 1439 0 1231 195 conicto 1024 390 1024 868 conicto 1024 2368 lineto 320 2368 lineto 320 2688 lineto 1024 2688 lineto 1024 3456 lineto 1472 3456 lineto end_ol grestore gsave 47.362257 -6.804152 translate 0.035278 -0.035278 scale start_ol 1471 2368 moveto 1124 2368 946 2109 conicto 768 1851 768 1344 conicto 768 839 946 579 conicto 1124 320 1471 320 conicto 1820 320 1998 579 conicto 2176 839 2176 1344 conicto 2176 1851 1998 2109 conicto 1820 2368 1471 2368 conicto 1471 2752 moveto 2031 2752 2327 2390 conicto 2624 2029 2624 1344 conicto 2624 657 2328 296 conicto 2033 -64 1471 -64 conicto 911 -64 615 296 conicto 320 657 320 1344 conicto 320 2029 615 2390 conicto 911 2752 1471 2752 conicto end_ol grestore gsave 47.746895 -6.804152 translate 0.035278 -0.035278 scale start_ol 2688 2112 moveto 2551 2246 2410 2307 conicto 2269 2368 2100 2368 conicto 1701 2368 1490 2099 conicto 1280 1831 1280 1323 conicto 1280 0 lineto 832 0 lineto 832 2688 lineto 1280 2688 lineto 1280 2147 lineto 1387 2440 1608 2596 conicto 1829 2752 2132 2752 conicto 2290 2752 2426 2705 conicto 2563 2659 2688 2560 conicto 2688 2112 lineto end_ol grestore gsave 48.131533 -6.804152 translate 0.035278 -0.035278 scale start_ol 2051 871 moveto 1942 589 1773 128 conicto 1537 -508 1456 -648 conicto 1347 -836 1183 -930 conicto 1019 -1024 800 -1024 conicto 448 -1024 lineto 448 -640 lineto 707 -640 lineto 900 -640 1009 -527 conicto 1118 -415 1287 53 conicto 256 2688 lineto 721 2688 lineto 1511 586 lineto 2288 2688 lineto 2752 2688 lineto 2051 871 lineto end_ol grestore gsave 48.516171 -6.804152 translate 0.035278 -0.035278 scale start_ol 832 3712 moveto 1220 3712 lineto 1574 3149 1747 2609 conicto 1920 2070 1920 1538 conicto 1920 1002 1747 462 conicto 1574 -77 1220 -640 conicto 832 -640 lineto 1154 -86 1313 455 conicto 1472 997 1472 1538 conicto 1472 2082 1313 2624 conicto 1154 3166 832 3712 conicto end_ol grestore 0.100000 slw [] 0 sd 0 slj 0 slc n 34.520360 -20.558907 m 34.520360 -7.987710 l 36.827030 -7.987710 l 36.827030 -8.604152 l s 0 slj 1.000000 1.000000 1.000000 srgb n 34.920360 -20.558907 m 34.520360 -21.358907 l 34.120360 -20.558907 l ef 0.100000 slw [] 0 sd 0 slj 0.000000 0.000000 0.000000 srgb n 34.920360 -20.558907 m 34.520360 -21.358907 l 34.120360 -20.558907 l cp s 0.100000 slw [] 0 sd 0 slj 0 slc n 34.520360 -20.558907 m 34.520360 -4.452176 l 36.840670 -4.452176 l 36.840670 -5.118619 l s 0 slj 1.000000 1.000000 1.000000 srgb n 34.920360 -20.558907 m 34.520360 -21.358907 l 34.120360 -20.558907 l ef 0.100000 slw [] 0 sd 0 slj 0.000000 0.000000 0.000000 srgb n 34.920360 -20.558907 m 34.520360 -21.358907 l 34.120360 -20.558907 l cp s 0.100000 slw [] 0 sd 0 slj 0 slc n 2.470000 -2.450000 m -1.381472 -2.450000 l -1.381472 -10.700000 l s n 0.644264 -2.450000 m 0.644264 -2.850000 l 1.044264 -2.650000 l ef 0.100000 slw [] 0 sd 0 slj 0 slc n 21.299365 1.558579 m 21.299365 3.595837 l 31.210100 3.595837 l s [] 0 sd 0 slj 0 slc 1.000000 1.000000 1.000000 srgb n 21.299365 0.300000 m 21.539365 1.000000 l 21.299365 1.700000 l 21.059365 1.000000 l ef 0.100000 slw [] 0 sd 0 slj 0 slc 0.000000 0.000000 0.000000 srgb n 21.299365 0.300000 m 21.539365 1.000000 l 21.299365 1.700000 l 21.059365 1.000000 l cp s 0.100000 slw [] 0 sd 0 slj 0 slc n 29.286295 -8.812132 m 32.435100 -8.812132 l 32.435100 2.895837 l 32.487600 2.895837 l s [] 0 sd 0 slj 0 slc 1.000000 1.000000 1.000000 srgb n 28.027716 -8.812132 m 28.727716 -9.052132 l 29.427716 -8.812132 l 28.727716 -8.572132 l ef 0.100000 slw [] 0 sd 0 slj 0 slc 0.000000 0.000000 0.000000 srgb n 28.027716 -8.812132 m 28.727716 -9.052132 l 29.427716 -8.812132 l 28.727716 -8.572132 l cp s 0.100000 slw [] 0 sd 0 slj 0 slc n 16.321699 -19.510762 m 16.321699 -12.130537 l 21.299365 -12.130537 l 21.299365 -4.750311 l s n 18.910532 -12.130537 m 18.910532 -12.530537 l 19.310532 -12.330537 l ef showpage AppRecommender-0.7.5/fig/app_rec.png000066400000000000000000003404501306751311600173210ustar00rootroot00000000000000PNG  IHDR4KD_bKGD IDATxy\T?װ2lHfGu%cԧP 5jflOji.UZVZ"Ɏ03̌"z>s9{.3=Q#wwwkAD k@DDDDDDDDDDDd "m|a(+""""""" GhQ """""""""""ءADDDDDDDDDDD;4c{ "jT*ަhpb(//vMQvDDT; T#99! "jD" ?f^ʑ.vh5hٲ%%%%zy222VZވ!11h4prrB>}i&|Νc=888;IpY|>3tNNN@dd$Μ97*ǽOηu`h޼9Ѻuk~N?C 5k>}`1{gݻŅSXQvDD!//pssCnnù_ᕕt.]W^/^D=p\\\?SNu={=z@VV^ ҉א͛ʕ+zccc`Z9ߒ7ikaΜ9nAhhu31`ٲekg,DD M~;;;`›o/>>.\Y2dggwAaa2U_ѦMlݺ(**Ν;CB^o zꅬ,z'N@YY.] r >8qEEEY7{%ׯ!''3g\R+ʕ+۠aضm]L/FDDDDDDDTq5MnS#~GkN9vwҥKFh4l.\f???dddG;:v???\xQ'ޣG"$$E5 55;wTTT* r%ׯk޽ӧ'??nnnEEEYm=fb0u&"""""""˱C0S"ll߾3f@vv6Ə?Xooo<7F@ Fk󕗗N9^^^١\'J=8P{q z%oLQ浳Cee66bhg,)8Jooo?^Y{ƍ(++SN><课i>\c^^^Kv_^UΈ?7~[r44*62vh5"={DNPXXݻw+LJ 0aRSSQQQB>|ou>|8`رHIIkPRR#GTEDDNǏǏǴitK> 6:uj@DDDDDDDTp)"j4t5Un٘7oOz ={"--hڲrrrзo_5;s wl<^^^_ЪU5oԶW,bh̚g,DDv$֭[c8pbccq]wh߾=q۷O鉟~ ^4k ի6nܨkժ~L8-ZZh &tf\%Zn~ Bf͠VkY DDDDDDDDMGhQ6~&ADDDDDDDDDDD;4c{ """"""""""zDDDDDDDDDDDTC=vhQggjK~~> //*~ """""""""""8B WWWrss Y*//g*vhYQaa!i...h߾4DDDDD7DDJX;FKDDdXjj* {5fCۋKDp1Y; zȆP4c\\\6DDDDD7C%|DDv۵G^l_ݟap9kAT/q4Q8B >0'"?h0ꅚ """"*f0We3n(oEE̞=[|}}EVKdd?tPqrr3gJ޽EV˒%KDDdҿh4 ~z$%%I@@8;;KRRE-ZHDȔ)SXI/((NjFF#'NB%Tھ7u]v۷+Ҽys̴ S(ٳ8|ʔ)S QfSW'DD8rjU'&&8x 233X2f̘oIIIHHH;h" c裏,={`޽HOOGJJE۷ǏGZZƢiii8}4 VTԩXreǧ$""+]t{Y;""""zkhQah}Je4?SSRK w}mL<ʿ5k2_""" ___X߬R/-- Z9s}Azz:Sлwo\x̎fTAAA8q|||0|p<#;vX:FӠ]CٳrNVC SCot{{{TTT~yoa…HMMşf͚!99<6#vs⫨-NNN(//١TIZV͍fT#** 8w'`F [OX@}c\윈j '"DZcǠhn̎;bժUn<߸q#-Ш9񥧧#((pyx{{+i^^^z^^^%~Ck~sL6 &L ""RSSwX5󧤤06p ""3"%%Eo$@TTMsΡСC.7"")))(,,Dii) k9ʕ+A\\ƌ >/rrrpb5U9zZx5؈ꊋ BCC6cS6Y3jj*u놨s)""""5uq":+͢m-Z婬sJ``K׮]?)Wҷo_qtty_1oȤIHI˓qƉȸq$??_I7M]Vrrjkf?԰ 9{,U &u5i;wNm)-33SO.wy888CΝ+uCCw^ }v(DDDDDp "j481Dcf×_~iP~Skhڵ e<ooWTm۶aׯviK.SO=qO?KN;x/9s{ŋ Ϟ=o*Tuݪ\# ""F+V# o{1?>8pw{pc*@CvŋO#==t֯_zo*Tu54 "T*U * cǎv(Ddyǎu;::bȐ!Zr ^z%t...P {ァWvnn.^{5tpttD^qF%ݻ1x`xzz ]t'|SNzz:T*<=={n 0͚5C˖-vZ!66ppp@=Ze{PTpvvƕ+Wnnnppp@nprSRRxzzbȐ!8pSw#ڴihdggJkO޽^T0uOnk888`…-Zh#GbӦM0`Yqkn֬oߎ0xxxm۶627:.\8::;D||<;J;ЩS'T*#_PTx衇҈JS]:οO԰34ZCo߾@+Xee)䡇572:$iFDncUV)e]Vq]w߱cG묍2̽_UۡCܥK$~~~@vڥ7V?߿ZhiӦ͹'^T* j[[899O:Ȓ3f̣h?G111@^uk׮$O6>\CGhQrjРA鶶h׮֭[`$%%!==FEEqiڵkزe `ɒ%, 8.\)Sp"==III=z4>gyHLLDVVK/,Xĸo>7ހ裏PTToؽ{7JKKi&sZ%ן())A˖-ߢeee]رcxg`oo%K 77طowK.НrJL VQQllݺ5`ҤIHII蜳b 6ٳ'}O,>AAD9*~g|]TTܹEEEFo\\\_/^? .u;[ee%|I@\\Zn """"z;Pn]WpPd ǏhyD7_xq;V+sڵk:ew}@,YzJ%GQ_|YH``NZ%׿rJ >>>ǹsȿ/79"[97HddmVER?{M1Xr}ZYYY2tPkn7x]FѣG Yt^9AAA@n*""woee[T\\lD8BGhQRXXO?Cȑ#~z[;,RRE;:gϞ:o> |'HOO͛Mذa`ƌF~w(999@ii):J+= {ѩS'v:(j K_;`„ h޼Ncǎ{Ŏ;X;: WFDD֭[SN)#Ҏ#GBCCֶĒƗ_~k׮ѣ1x`ou3F/6Ȓ{k.@ddNիWQ6hݺ5pQ\t /2#>LKDDDDTWQqq1RRRflݺUa_|<=z4"""hhvQT ;vhT ]tuVpcbڇ䞞:ǵ!C w}@3k׮:kW패2,ڵkmsm!;;:OBBD3f #`ݺukWm0Xr}#$$!!!6l4 lmmu;`FsB;YQVV(ÑC~~>z! "2lٲ&Lfuii)`ܹHHH@XX])S믿FeeEuTt5DtY;uڶm 5k233QYYlٳ ӧr^@@Ǚ3gPYY#99k׮iBdgg#11̙3믿TzmakGlٲz x뭷PTT\lܸ{VkӧzB`` JKKo>DEEaݺuzר]ǢLP{O,>?.\@yy91k, 5ŭ[3V]m%;iiid#@h$''cPc𚈈*]QTQQ!_L2E<<|Xб-[ʜ9sdrE7ɓ~ff蕗n:Lo7 iiihB'gqٜtSk5v< 6l^XOJd]gԇ-77ZaCn]II 6L>,RPP ?7NȽޫwαcǔC:ưC'FM?}No۶ .3CDEEa޽Ok%6rAY;:q3Dd#G`ƍظq^/>egϞؿ?vX 2N$"""")VPiP#4-[fPrJt);;;v횲%yeݺu 6P権|S3g(iii:# |}}uO>--Z0XVMj1~SeOҮ];YbL8Ƽd=u=ӭ>唛Gß#4n?u]bgg'...ҹsg5k2]͛˓O>98BGhmeccpcɒ%| IDATg/#Gp̞=aaa=z4"##ѲeK2Μ9ϐƨQ0fX|1v -³>|<:1cáRPXXggg%=** ӦM `޼yشiY*V_\\R1c(iÇ /e˖ADÇzHIIuF=zZF||ػw!"""&SNթj1#F@aa!K|gرc1x`jkI Xii)VX{ڡP-wQ "W\\\裏Gv(Bյ$ i #+j뇱cZ;ehxk׮E-  :EG. "â)t4k$j(._ 9s#!_Y;""""j"ءADDDDuD Qa5y^R>b8w8 N(xppC!"""&DDV}nj 5 """""%%%j5>'P"""""",!!ŋ[tNCOTGhQ)Țrssw)ݴ#<<} Qfon͛ge" "o޽9s&֭[ 6`׮]puuŋbccQZZ4qƐ!Cgo^ݻwcȐ!fŕpuus=X;ٳgiii~:x 㑝'O111o={`޽puuŨQϛ]}pqT*DGG#>>oÇcɒ%ؼy3lmm/ )) #GkTMoJO:+WDDD`˖- EKX֮]-ZX9"n̅MDDà54 k44ATz5P5ƍ% [$##C/));;;eE>}ZDDdǎ2~x=z<""裏ʎ;1$00PN'''-~7,\?ѬY3$''G1;ƚMoNQQQh߾=shggggnȰr4DD ;򐛛DD7SNHIIAFFnݺCftΟ?///7ok׮EΝ!"Xv-. ƃq1h4_U-pYi`o9W[I}cǎXj 7nDtt^9DDoj*Scڴi0a0x`vfPs j{#88ڡQJKVsqp2j[|qơs^x999(Ç+C A||<ƍqᥗ^2~FNRxTTMsΡСCѣG#..N}Q<իW1{lʿU+W ''qqq3ff}#""B: |}}7Tѣj51j(c#""""""W^یQϘ1Xx55) &Ü~L6 O>.X BV ( … 0b1.\Ay;;;QgFǎf͚ᩧ¤I_jZBѳgOr퍶mۢ}ӧlll.VS~׮]Ѯ];AV_WL3`xyyEOa%]R)Y%&&bʔ)c~sM:?iDDDDDDDU%$$So3)`΋UX N9EDM^hur uT=O?h^^^:#>իN:w/"^|Ejxc>oGGG\+Wdee!!!QSg9Ϝ93g4f}TlUM<'O~sĀV͊Z Ʀlf̟?C\\nDDM㑖B̝;?CjRJKKb 1ڡQ=weety ÇDž 4hAM _x* >>>5c㑓eꦜL>dU˾囓* "j>} //ƻkyh臦 رc QqA\|a-8xC "j~7iظq# aT5[t)z)7,fiAǎo)OCPڛ "jeyua:E5Y# >(t.--źu0aݻZg@=n{Yu%w}mǔ[iD`ՙx{{[; qQZ;۷vDD@a# :k]r/ƦMp)TVVFttb˗WWW=z-¶mpY4k >(.\yyy:1yJѳgO%}ʴAݺu/@bܹ2tW\Qݽ{7x ۷EEE뮻cnlqssZb lڴ ǏGqq1:uwyݺuTe{a}q;;;/@||zHo}cv\j瑓"""AAmmmѮ];[HJJBzz: $''(--ŵkהH,YSf~~>_ ''׮]믿=:TJIFG(ۊ+@vv6n .K];xg`kkDdee!??/`:qe˖oQ\\2eKDDD]]wmѽ}EEE Ν;QTTQ:, ^JKKqlܸC Ao0p@\pSL#GPZZt$%%azDT8BL*y'"" ]t( """\|Y о}{ʕ+7BAK!z@@~xyy)yf̘9sǏv 險oСCtu3ؓPYYW^yfRaܹ8}4G:`׮]hR ҉Ü{ ooo%;vF;P 1w\ܹڵyfs-m#33/ϟ?o DdTjWaaa8Jڑ={yc^Dpa888O>AzziCBBBt}u:3k״~ę3g=wV^[NRFTUA|MeСCQ@Y5yxx`„ :p1w0tF KW1c vfjFǃ~'xѦM$''oi{oذN0"ka5y?xݺukVwJ "00͚5… uW^v WbN3gZhggg<#WKKK1m4t _엔 YYYjDDD3:u;vW8Z]t?233@$08p@ܪZ>(ekV{j(2wFBBD8}4JJJ"##bC ;v+;.<==ujL=ҡ]vzjFvW?G{,6;`Lg⣏>B||<뇊 e*.-K[nѶ!ءADM c裏t>P{޽{'D+%%[lA^^)S]~bb"8"33U㑝'OĉʐPSbʕ-[i."""x饗ЬY3e ""2OMoP?8|0ڶm 5k233QYYlٳ ӧ)~i۷׮]C~~>,YsӧOdddqUTTTܹsS~W]{LoeOzB`` JKKo>DEEaݺut;4j*JmڴpcBdgg#11̙3*zk;4L@Aps`YV_S:Cmk''_T:2_sǙ3gPYY#99k׮5^DJl@-[fPȀ\ nnn1F7-[ʜ9sdrE4X~M_$==ݬ8EV]~``짥锕/)""Æ իW+Q]2&SHN""r5ҹsg+GHDDd}nnn@rss Wȶm oذAȃ>(k֬Jeo:Ν;K.Uh߾<$~SkWv%"":u2XVhh''')++3QF YjʕWT|r%_9rDM{!dϞ=:o1z>̽oMqkcҤI:[˗/7ZѣGW\\yCd. FMx۶mÅ 3;D-nߏpqqJZFqq^xwy2Xp@e#F~Wb޽x-:"""㪏N}QDDDi)iSSS1f ""zW_}_}Nƞ={0h =zW_}?{/ݻ#!!;H{QR{|JY͛7ǀzj$$$1EYeiG w}J(Z !!!ppp;wOg}.1{l{Zx4nZQ3g( ":V^^BkAVfjQC "j21c,XÇaaaذa^DL2EYn|}Y1HLLYtTgFbb"q%`Μ9y xꩧжm[j+ʟ:u*fΜfMDDd:uȑ# 扉… .]pQ1dkAUy ƄD 84oɘҪ<==1`jY - ">k@*++)5d "jƏss[+Vc=f12gtGiYekA<k@DD_~ӧZh,:NNNPT;v"$"ZQ8Jn ;4(\p榓."عs'!56ЊDDDDDDSDDDDDdKGghq- ""j/9s* YCFFʑPc "j4yyyf?X!GY&芩Sbڴif[TTS "G*R[;jءADDDDDf::rsso, "FRAD`cc7U0QcuU#ƀDhh뺹"}hmzgggBs=lCJJ /^3gΠDg}!3Tvv6Wo}ޣGj->4|c_۷ok嫭!*...ɁIOHHڵk1|\r 7nĉ4rM8;;ƍ&#"2l[Hzϡ !((HDDD  "j\\\p 7o8憌 o߾A7 & ** ƍ}6pܹsz%''cРA "I^7o:$cQ3 "jN~%.]q~֬Y={6bbbTDGGFбcG ++ :9;;ȑ# мolz-̜9[n/hxw !/^Ǜ%1 4i,YM6sرcSN8FqqF‚ LRoxFDdN:Q&u"""j$\D͛=4Q^^.f͚%텓شih׮|uuO>ػwJk3t}}u+B˗/ GGG=4Z'j^(uO$-Am s cAy),, 7oFll,Ν+u";vDpsmj-CEGG#%%:qaذa 3D$=\jtwޕ:A=y9y$:tcƌAhh(;;ׯ_GCHO>Att4,Y"uj>ƍ:مKA'KQQI^zIE#G"00EEE ֭[Hˁ̧cǎh׮1ڤj(JΌx֬YRx8`ADDDDDdeeIѣo>1B8D@&""""""""V+-- 999_|Q4DADNQQB;Fsw {{{&M… aii)A2=n޽X~=Ν; t {ƓO>M65H /ݻ8~8giP """""j<СT*t`ƍRGbk×_~iӦi+,,Daa!RRR4U7DDR=; 4i $NFD %С|ǰagߗ_"OojUUn޼p]$N&U4իWr l??&?iR C p-?~\dD """""j3uv[PИCaعs'}-""o߆?m///DDD`Νxxx`˖-1b5k`۶mx۶mCpp0~wDEE!** ôi0}tv8z(;;;)Hܽ{CŎ;L+8}Ή'bѢE_q9 0۷K/5R*HKK[cQ[Vwvjƾ}QK$HJKDD "w\!\]]~}Z?^}>2LkNz].]FgxF \]]5ZXX݇OTE OOOaiiO.]Os...&HJJ([TTwk֬yDbbəSRRoLy-##C {DFF bܹc3g,Bw{pEfgpQDDDDDDMPh߿g{{{O_|Eyyy|^.c&@}:UUU\ʝ;w௙3ovtE7~$9rEEEx7iR0Wߘ>Pc=Q[_QQQÚ5kP(̙c0zt}:#U  j8ADDDDDԄv튼<\v z2kxk@E& ?лwo#>>jpW_~I#MM JJJP(nmxW_}cBP@TQ뚺_*666 CXXn޼ wwwdee}U7]cPC 3&M/wFqe 2 2kHJJ2-DD`С:DDD >>n1bĈGȸEM^tscƌL6 騪RٳgG{s>|8|}}T*qFe{pETUUҥK={6 88X]{UVeeeHLLĴit 1sLkԨQ\tI=Ŋ+pqǷ~ ۷o3e1}zgϞ˗/ .\o&O>QIb "24;CE5K&M(9HU=4=4Zƀ֬W)((zһ=^_9![oըl:uׯ_WU`Loԩfׯ GGGu:::jG_OĮ].s),ѥK+ÇpppJ6 =4#"Euq/ 34)&&F=+.gggbx`mm kkkx{{cΜ9HNN~$U?tP}7󃭭-'OgϞ2˖-Ê+гgOrtFҸwmoxkkk 8qqq&SWϞ=qiL>...pqqipibǎCkj兀|0e """""f&LADDDm4@&aڵpwwBڵk5*_{VVVӧIMMu_x;;;L8F3>y}{8/xgkkk 2{պ#b5zO?޲ګ~Cq/F`` aQ>|8RSS͖Hh5Љ'9rĤkۇcǎ޽{w?Z >>>زeI> k׮򂿿?oR|Lj۷o7[ꟃ DDDD  """""Zj d2rW}FUUVӤЧO 1KHHڵk1|\r 7nĉ\gmׯYjcRh1\y&\\\(%QpEI1x """""23\Rk騆2duh憌 o߾Iӿ|g*cܹ:?0B<ңG\t|8+>6ĔG.666Mv}Orr2 bҽZɓ'###CԌƍRh8ADDDDDdfX~=~mcѢE gرStݬY0{lƁ̚OQFa L&RT#G $$ĤAz 3g֭[|DEEaTuiO} !!عs'^{5XXX}^o&L097QkoS](,,:F """""z4C͛7W^+hř\ϋ/ ʕ+۷-]QQQ B~~>|||{5_u ,X111?~<,--}iW_}U=KDU|MX[[cr \\\Q{{69|cǐ 6`ڴiMƾ>d|W&&"jRSS9A!uVE&z͛7#66V"=:ÇGJJ u"" ***ၬ,ϏFJJ 7ln7wArr2(uVgܸq6lZɓ'@$%%n"jQYY)S4K"##ϟiP hp) """""f%;vM8D8FDDD4U:{^"\h*h5# """ҍDDDDDDҐ&u 6Q}8ADDDDD[رc1ҵt`ƌ4itSo֠JSh.#m """"6:-u"&U^ IDATYY|#!!xwfpТeiK,%KADDDm@ϫk"666lj0W;5ի֬YuL&ӹLU}2331vXCP 00{*{=[-y_mT{ ={ NNN0a.]d0}j?߾};z)۫5}Q}UJKK}A`` 8`jWQ#p#V]][R{}_׍7w摒:u N*;yd$&&jr \LСC>vٳ 8u|}}mʼyk\S?Ĉ#pN¸q8 yyyHKK3keeeF|[[[_^Xv-wbСرcW^yO(O?N8ի_˗#77={6P\\={_Gxx8:drT=ήrƶOap<==a<Ӱ/Q ǎÐ!C 7nhе ;v'<OQ ?WWWaҤIX`A>|hIII g\So߾}]vi9r$Fzt """"""""VM.֭Yxѳ4jB ??}֮]uW_YVZ؝;w=KXٳg_xm6̘1޼՝QXXʃ ֫m*B>c7y't=4UGii)fϞH닌 d֭V\k?Pk׮jjjPRRB>Uk jdffjùs琗8~8bcclٲߵkWڵkի޲M¨M>gggٳ:th 0m2""""""""""j4!:u>׽{wUPTT2$&&bڴiZfϞ˗/ .\И[CŸq0zhgY3fiӐ*(J={} Sf*SgeeHOO7X/9Ƌ/d< """""""""zm]{+H^W[gdd$<$Ood$''<7j(rJ|8u )m3)ׯΝ;%VXcǎ… ghIXf >Ce˖aŊٳ'r9:vQFСCZuxxxԩS B-_kdkݻ7,--amm ooo,Zqqq n3RSSxb6oތP*ԩ 3gNS4\pرcu9x >>>8Qd2BsS5bmmrXYYG8ԌdggRGi5L8s ƍㅅHLLDbbbИ2e .]]v;.qЂH:@jj*4HCvv6<<<$uV 1zhgcǠT*Q^^Wb۶moʬf1ed28p%%%ZJ%<L^zBH>2ׯǭ[sLj#P(`mm>}`֬Y8uꔺL&Sؾ};z)۫P͜9nnnBn0c ܸqC[ooooޘ7o~Wyxxjg||Cv""""ѩS'XZZk׮'|"uW "2'gbfGϟ7{ԲݸqCRGi5qupQ$$$Dc ܾ}PYY~ }6"""uO'N%%%HOOO\nĉHLLĝ;w C.c„ )))압HNNܹ~ݻwuWc)j-'*+,1eJxxxȑ#(--şwym6NDDDDZxZOp56l q:ӭ^ EEE+WeI0iS ѣGU~?8mۆ#11Q] ?WWWaҤIX`1j(>||oUUU #oqM<|P]Ovvu*_~%Xl֬Y1<Q[P{)ޣG]~GO>xkFDDQXX{dŊen.){alܸ)))(..F1k,WwY_p*((ʕ+qaC9r$V\{)[z5k 66n8{nݻ7OE_ XGAvv6jjjгgOΙ~555FMkSDQК2Z Mg{{{qܹ&DVVv]^ؔv,ѧOtR?G-llH`@lݺ޾SD$\rOhۏڟRS~,YDҥNtquuEAA.^͐/pqqA~~5yyyQPPǏ#66nnnZ)WRRgggBvvvu C(..W_}cBP@T}޺ vYciMPMW ϟ)gQccc xxx ++K8F:u*vڅ8L2rvvv(++Cii)lmm ;c |Ƕm八W^?_~Yllٲ#F@yy9f{YccpssCqq1ك_GơC~ߺiekkyÇHKK?`eeĉP/?/DZZ9s&vYkSƟگ_?L6 ӧO~G{ƦM;;z>1tСCcx{{#33 N>Çc\CP //:'O"))Iѣ^r=22ҬuwEEEY릖-;;EiiqZ q-H3<#;&JτzUŋÇŋE@@ O.;|p'K.2Q^^.;@XYY\N套^DttĔ)S4( @8p@TTTWj/f.k=JgϞj_Ϙ ghQS "5аDiiQŋ7@~Ϯ"@XXXh{o o߾IJXh~[O "::Z\v6m;wĚ5kFvvv"11>JIIy>1tEFFFZܹsǢ1gYT8CMI BӧOnݺVz~pttY~V]cƌ1?4L:AڵkSNFe=bFgjHb{D8AD2 Sje_^)˘㾺Ԉ\h"@O}v]^ؔv,pmeeebӦMbɢC۷}TZؔ0>]@XYY T*B}ӧO r9\\\0m4>}={TMNNk޽{ƢEgr9`tptQFiټy3^~e888Y!z©S0zh( |VYSݻ>'"""""mcǎX555;::^q\\u6զ*qҥk׮k׮AE&[nXr%h,ꫯT*!ùs琛Ǐ믿FXXl2u9Sצ>666 W_} hju[>1!}kԑU3&Mb޽)))|2 ATmOd* MOӚghoS.oٳg{YCq~z1x& .)6eY`);&n߾-Ľ{,'xQ}T 6/f̘! q%C!OSO=%̙#m۶& ")qI34̏$8ADMOs`LҚ40m)ަ\UW^Fe4}OxwM]Wף¦۔e i׮]&Q}̵)}%tb}k X~Jh8ARADDDlj'駟FDDy#IJ͛~\|%%%ܹ3_|Q]VkDDq8::ʕ+kLL f͚sHMMELL 8ׯ93fh^^^6m,X>yfr۷ׯyL:Ud|vڡgϞ;v,[,Epq .ĉ5c|8s rrrP^^;bx71f̘F}b>􅇇N: رcx70m4HNNFyy9f̘Bar[Z4TVVJl#:2m k5TFF|}}KZÇ#%%HHH:Nktl!666GԩSk.aʔ)R!z䂃1|BP͛Xn6nܨﺬ,5558{,hAAA8y$TM!"oFDD"##Zz_%"]q c ADDD&Q؈DDDq u\.#::Z_'|~>vX3ZVVVRǠfE4$< """OKXnRRRPYY WWWƐ!C"$$[n -Q{n# """p AHHr[l-[A"""""m "ѣXd1 G8|0>,uVcȑ&u """"""A=P(ALYY ;;[$DZH͸q7/k"2DDDDDDDFRhJZ #Q+鉔oȑ#C`WADDDDDDԢ4RSSALFFfΜ wwwQ+7eĈxw%NCpBKjQ*F4DӧwF?22VVVkkkTnܸΝ;K(EEE8Iuz*yc݃0p@cP7d|Rh2-zSpL!d7枏Ȑ{IqJHKKwEDVMM ]&u ju&u&բ4as,htCEEQ8F={6ك[bԨQP(ԩ,,,Fjɓ: Q?@mɓ'/K5>5d\N:I8%S <<<$NCDDD-Y)u jcHwRhG&ᣏ>0k,kٵk <3ҪcڵpwwBڵk5ΩST?\unݍ^Tbڴippp^~eh\w^x{{ >>>8}=_~>,`mm!C`޽&C\\\`gg'|DDDDDDDDDDDM4 99.]Q\\˗k?r;!44V'N@RRrrrpq!z(ϵ^xbTTTvJ%,YQf߾}8vݻɓ'cܹW1w\1>?ҥK磢4ܺu ;vŋGDDDDDDDDDDhQwV@?d? GGGρ?>_7o}o޼nnn~m0}!99]t]ذa̺u Xh"##ڵ+7(ʕ+Q]]?P}l}j*`˖- QkT*FMMiZ'eee'!""Jk@M{[SRRxb9sFcT77Z+,,(kkkTUU]BB֮]ʕ+P(ظq#&NhR˗C.cŊЧOc~ϟ!..N4DիWKH2>B.]0`̘1&M ni{ IDATO>4i.\KKK2͛q\|J:u AsѨϡ T*Gsi_K5axxxn޼ ''' & ** ƍwyGXR*HOOGzz:rrrqFgΜq㐓qHLLTh0h,Y7nL&Ò%K0yd2t666BDDD#G $$A ~xw !/^Ǜ|5 ,@PPd2J%쌾~pttw_Yfaو+RSS DDDDDʀo!..SL:Q'OK(DDBk"666lhvGll,k.B=n3<˗cȐ!y&;wKT0MuO>}{8ܹ .B>ѣG7(\TT^}UkNc@B&\ٳ'Ӡ6`.../o>Y\2K.EB7x3f0[~"""""""""2 k֬}\ff&Ǝ {{{( bϞ=Zeݻz ް51og?Cllr ?CO1.\8~)7YQ0;̦}-M[5]f ֯_R5;/ѳgOlذX~FYc"##q] :DFFz)?ĉFII ӱ~z<ѣV^ GGG /Yh]|r"<<ׯ_Gee%ܹ-[@Tj :rQ$$$Bz_klվ^UGDD… ġC⧟~رcMjKk&5/~-Z}Ak e{yy! ~$'"kŊ/SVV7n4ڄ;Ox |(L+0i$,X !йsemÇu>))Q`9s. vڥcȑ9rdm-4Cl֯(,.S`nĄ $@&LADvڵ&ydeeg555ŢE@kփݹsci|Ń/ >>۷/vܩ3oMM n߾/{.>rzi6c?Oy\? 00""mi(z4%%G>I`-L{+sEDrA\X83|<̼_323K.[׵꽗dT^SX%Crl χ7T*ϟMWׯ_=z8p>999۷ouzn߾}xꩧVagg _^~L>ppp@tt4ʌ>?C*v}e S(4hJ%,\Ш71>#BVc̘1cĈPP9r$nܸ!m7PƆ2j>}h~mŋu999>]Saҥ8yd~W) t>ɓ6+++h޻wV=?CǏk os_~7| &Zڼ xW26n܈JLHsiQ+uuݎ)C ]6mÜ3СCfђ 5EDDDDDΝ;blݺդ}7l؀;vʕ+:t(bccʔ\QQQEii)/'%%!''pڶmF;?Cnu˜|'Ơ7>~GiqCo,}oLl=z(++ìYmqqq@aa!N:rK 7fCml(6;v,,Y"=޼y3BBB M:uכ$7___ !PRR3gڵk'mԩ`ܹvnݺ۷cĈZ<;v 8|0FU644/FYY1h #Li?[[[0+** 0l0lݺ7n۷gK k В " @(DԂ "99Y(D ,x5 "((H(F>| 233w?_@Sg۷o kkk}J0N:ӧ_~E;wh… CZ;?co|DeeԸocc#0|fw+,, OOO鱻SN 鱱, k2Ѯ];q!/믵UTTR)e03Qc͛W^s;JgϞm|ӧOx0`V9]ok<ѱcGrjZsFmJۙBz_wF-ZWVV i Z """"""648S w9Z]]U&׽m6;w&MB׮]5kHKJJеkWi"777l51lll`ccq 77&_ݑ5^^^Ҝon޻>2NNNxʕ+ Aʝ={R* ļyHϘ1ś/Ѷm[V>>>ؽ{7"##RT*"-nmm-رcѥK=zԩSiTf Ç 88jmڴ+y,Z憜šgϞ7RYST_jj4ZĐc߾};w.yT*!447nlpκ Y7oބSG#((3~XP]]7"66^χYBk3t eLb{Qv^spqqdu ƈ#HXWvv681zk6m0k, 뭷¤I_CRٳ">Tc=֠zkHLL4~}۷oTֻ)mgjc;ٳg0}tL>ݨ[GhԷ08ޭ[0zhjJsj߈"00 ,͛7QZZSUvZׯn݊rTTT\b1c"TUU!;;? -Lmnݪa C/>>._x :Tw}/__8iί e0Fpp0J%f͚,fiX""jz۷oGdd$ammΝ;#-- HNN;Q4h)} X}[/11ׯ_Gaa!9ݻwkX;j=##W3qfK/aϞ=(((0ɓ'#55...pwwW_} 6HT*ĨQLv@.]訯#)) GF3t eLG}ݻwJ!hӦ ||| [[[oolPc;eeex駵?~ft[lSO=Jx{{cذaFddDHGP? uΥl i{?}NPTO\;vĞ={4ȑ#ѯ_?t nnnr!S~~><Q $''QNdIRRRx~CZx/_FPPHkK+믿Fff&.w-ػw/ECZZMluvz;(qa骻sJ˗/˥L"߿?_ }QSS?Z ; `r ""f9r*cdNҴ 2-rrrAd8zrt};Q(w"&QSS#ݯLt/βC?퍢"csbܹr ""fnɓ'eLBѮ]0rHS(MDDDDDDDDDD deepvvi)))?ݙ aF#Q(rG """"""""""jءADDDDDDDDDDDDDDDDDDDDDDd]\P@q5Kk׮TUU;&se B* ϗݹsӧO;2.]@˗/cĈPP9r$nܸqAAT"..ppp… n(BѣG" ߺu GZ+,XqnƜ}GDDDDDDDDDKMMt7VeeoܹYYYPvBDDÑ%w&5BNw1]vxnGIQQ|A^t ^^^c///\tICkn(3P]]-=xV~DDDDDDDDDDDASN|899兣GbΞ= 777|Y?Ǐ$"" WWWc}$cƌALL RSSၜ$''cӦM~:/^@?IIIDEEwEzz:CTT}g/x|RƬ1c`׮]r ""##66VDDtۡQtSILLDRR"""py`z vvvxPPPwww{TJ# yŜ||8q"|}}akkD['"""""yGDDGnnH&fШ 3f37nƍsZFffQuvCt[J%/_˗KM2EoYDDDDDDM+++ r ""=&L Ad].]ZSNh)Zrq~cQ999ɓrǠV^MDDDDDDDDDD dee???chVr """""""""""2Ywh( َ[{3T>Ǐ;QЬ;4טc˕1c?,w""իHNNF߾}Ѯ];ؠCxggU1_>k,ʿ~zQz틉'6dh,l"aΝx'ٱADDDݻW^Euu5.]۷crG8rw|WYf!((8{,v؁+VYSRR| F {{{9s?_/"jn޼QFɽ >|1$Хyaoo/M&„R|Bj(܄RC ׮]_c̛7Oxyy 1o3t|c " @(D[gΜ;J/d4p_xQQQ!wDj; Qh߾ bYYYrGijOŝ;w̙3bԨQcǎFxxx#GӧOkiժUvvvW^"%%ETWWkvZ&J=8zhYd *J#)}NGĚ5krYFB}bܹe j8B Q*yQG)PᅨJᅨP@9R*{{UVVl@i*>uQF5(O.]Ķmč7=W} [meeeBR +++qYLQQB!F-QXX(*++ş)-Z${NwIII:?Ŕ5j E~~o1*++ ~Wibaee%=j s4 ggFȒXgWΈFhݯp]v(o]&EEExn߶mϟI&* iii6xDDŋѾ}{c4RT*La_Ç4~c2)DMMI6LΝQWUUXvpqq1|]֭[&3 "8Bt#4xBԘ8B իImmmm-*kg ^{ͨjs s].c:۷OwG3Ԉѹsg@:SuOСC wnrަnSZliijZ !ٳ <3 5 sp,khg̘1Ajj*<<K1CqѱcG*,,...:˸B+F2ڵ8FC|BC_իWJoRi*_7(oS)wi}\!۷ 5 2%thbee%uvʭ>U|m.j]KDDDDDDpa|ZF6mgy-xkkkcĈ8p|}}'###GZ~adff-f@TǮ]4ѐ< ɗN:]3qmܾ}O?45ʸ!''qqqٳ'`gg=z`ܸqΖ.[ CE+++o< ; 6Ayjv1|||{nDFFBRAT"$$_~%Z{z pm >*ʬ%֫.\uci^jm 7Bko'@z3@ //O8DEEE8sKLh$$$ >>r!jt<._ 8p@8F]p }YL4 PT8{,>C|{it5558t~a.&L@FF+wj& 7oFdddy5mθz>CݼyĻヒ={'?(2TGK{??r=ވeھ};"## kkktiiiָ3~x( t5558p ;3,ڵk^TT_Eǎ1j(9sF\׭['u:::"22ǎYVczj=;wgҥGGG{sCBBP(l2Y\RL0+ Gj3L=+WF=T*ф'NxON2޼yIIIӧ`ooplڴԦ%Z-[?޽{QYY aʔ):/)J/!-tgΜApp0.^(=wy|غu+} x˖-طorss56dʢ?X_QQ#G >>9sFى'"==cw{Wxb=Zcʕ+ƍ3ܹss'֭[m۶a nƞСC}v PPPthe<8|wƠA H֭["5G [h:/DDu<8@ppŋ%K[n8qƎ={ޓ. ŋѽ{wgƊ+rVVOܳw^~UUrssѷo_\RC~mu !NSbCΝ;?prrZ؎YfܹsHHH@LL <==QVVuaHHH/7݌=iv܉0ܾ}'NO?J*W_;{… mڴ}`RH7oޔ3PrG """""""".bܹ~)|A@^dk}u5ԍ70{l|8{,m؜ǏٳgI#K`ptt4-[ue~p~~~8~8"##ѫW/xxx $$/2&Ol7l5r<x'̮WNRFNN9믿΅E_sXYYHLLģ>*m?ݺuاK3o]C &/йZ빆mQ㑔L̛7* 9MZ6뭯݌=?111þ}7n̙3d5ʨzux_5wRF>}A--N$DDDDDDDDDvtBQ 0vĉҨ 8qℴ^ʺJYYY7nXTRlܸj* 8* prrYM64^~e|Xz5q1G1:NBΝ-kN{!!!PRR?_3fݡsСCә5g(xRR/X^x!!!HHH; E*//ǩSaW ˜jܹpYʜxJz;5#_|cj#mرc5Ш-Je:uꄢ"̝;񰵵EVVƏo0ShJv}_km뭷_>Fx`1bлwoi;v 33S٨!fHhh(FBJBzz(CTWTT0l0Ikh.]285%~v2wGB* ئ|ׯG=`kk8p@k տo>""cc.R_|+V; DCCPH7]ȀڵkѤJԩSo,g06m_ENN._P/]􄓓Ν 6hӐ#"jL͕}+Y!DnjѢEB͛X~=x#L:4j?>IP]]UݨMm6;w&MB׮]5kHKJJеkW .]Ҫ={&#"2'.\??aeՠuDDDDDDDDD͖uTjm7oݩlT4쨺7nDll,ܽ@'''rFPPP "3f CDD*ܺu qF>}Z0DDΝ;2'!"I:4`L2eee:uY 8k׮+bRɓBrƌ999HNNƦMLʷf 2Ĭs#"ӦMcG N8DDd<(w""0w޵ 3gLy饗;ݻw7ɓ'#55QQQAHHHJJBDDΟ?L>ݤlǏGvv6VZeysNX[7I_3T*QVVӧiH\hDD}լΎ`>|Xoy]z'Oƴi46Tѿ0c ̘1CoC9qqq2e T*U刈L """t .\@VVCDDzL0xGB\tBxyyɜծo},YBBtBDDDDDDDDDʕ+rJ_Ik/D/^;;4HJJqFQ(fO4P(M~- /B,Y#F4Ik֬iz䔒_(vhY7n࣏>ž={B_,oۿM>r7oBCC1i$888,#ڵkרu !pUXYYaȐ!Z7%8y$<WWWHءADDDDDd[[nrGf#,_#u aaaoꫯ,իk׮m۶\>:4A-L~~KHH@JJ1TJJJ=X}7?2d6m "VB[S-3g,J||f-66d1tP$<<\YYYZ}@̛7Oxyy 1o޼zn:ѽ{wacc#z-߯OΝɓ'U{'|R899 [[[ѧOn:i{uuHLLnnnBT!Ck׮}~ȝPƞ  ,X \\\=zu떴W_NNNIkuˮf >*~[< .\`T6=^L6M R)>[>[nNZo^62g605ԕǦ "==]!ɓ'Qm"<IKtU@8;;I$'' ">>^(뜜qRRRn:criJKNNF||1H0a1;w"++ jԩSwÆ رcj5>ci29WTT>|whӦ 8yᥗ^pwBVwA\\-Zh'g>CK_ѣGP(Yfqqq@aa!7npB k@.t02t|C?vX,Yl޼!!!СQɓ'cڴi?RÇ7l52n݊͛7iii=z4~G2ǘz@md{6gJcN:&'?&4addd ==r!fEEE8s CdMDSh^j;48Tֻwo:t(VZ%wEDD`׮]BxxQ!UNEʺ) PQQGGGTUUiW֤0rHݺuƅ@Oҥ ŋ :?Cg~cA_) pili{aa!PRRbR~CSncСCDEE!::Æ ӛB@ee%VRoZoFqM} |S2 mcCmdX]ǦKg*++Ѷm[ƒ#00˓;5Rxxx۱FiDDDDDD:{ \Uۙvvv*bTm0|L4 PTHKKCtt4]vGWGNCO|7WwdƅK.imtRǁ  IDATk;'''1fdee!337hݿC\{E\\<7n-T?@ %ٳgn1C7~Z/A """""&bmm7oor#((ZNJ+ظq#bccχY ;ʘ|pEkKBh]6t|c`ĈpvvFddZ_cY[[۰x~Ȑ!HJJ AVqu&ˡ5ƆzjCaCw 2nPw5kȘi;DDDDDDM$00 ,)SPVVfڵk+T~0ydDDD@P\b1cTxxx ''شiIMC(w>C71㑖Bx :Tw}B ..QQQ [nE5.:1T*1k,,YDg}~}+WbرhӦ[жm[x,0e=l /߽SYC 1W;ٙAjN<j|!CnMJDDDDD ^PFFV^ gggM6񁯯/lmmjt~B!]{^III=z44:Ǝ2 |46nCDԺCv!#EadEcO|A\i.]> Gō7xႈwfkQnژmOd9]hc5kA ;4СC}v PPPtBDII q9ܟua۶mؽ{758q"ר j"P*r ""=rss@/D """j"?3`Ν ۷q Oꫯrf¹s琐xzz ֭㑐^~۶mCDDytoppp5kAz)w ;4?H  /ɓ'KlHNNFrrV=YYYZeff"$$B=z[ADDFruu;r6662d1ZvhUUUQUUURZ9bbb}6n܈3gbɒ%5jҥKZ5THKa%w"""oim}cǎs!!!p9/o0aTWWcƌR:N:!۽ڴiӨFDDDDDDdءADDDdg}0vXdggرc5@hh(/^2cРAxh0``Ĉ_Q]]r:t}GcSNm̙شi:P9s8;;:ׯt޽>^8d L0Bdg}r F6`=zTDDD """""~~~r F ""fQP(@DDDDDDDDDD!@&8rfϞطo_C"""""")UR(h.SNao'=~/|}}/cСxeLJDDDDDDDDD3y*..7|5k`۷GTTQTToOFjj*RSSѽ{w 6 իg@DDD8/\vk6SNQP(2߹sӧO;2 R8 .4*}SOAVAAAX~FK"00vvv˥m1bj5j5F7nh J}~… OL:Zƈ#yfbҥx뭷0|9sYYY8q"PPP9s?0pԩ&Ld }s= ( ̝;Wd1;w7;;;t7|Z~=t}ĉeJID=z믿οkL "";vd16AI@ײ~ Zb~\ -f`f*K~\,w\2 s-MMYT EMDd??|2̎|=y4sϙ ҼCB̍e+^`8q'Oĭ[SOaƌ*u{طo-ZsXtA19D^^-[uIkDFFC~~>>?S:?c !==iiiGhhZ;GѣGquտp9 8xw mۆ[naݺuʵ&&&ӧ/_ ߿'N#Μ9?͛7.]ׯW{D"%%Cff&-ZO>D(Ÿy&ك@,ZHO?_ƟHHH@ddZǝ@"QZZ(&6 gS2*֬YHÎ;T~~~}k׮0~SSS>}'N۷ѫW/e˖~@׮]annOOOYF:c|prr3/^6VXOOO888F*?bŊCa(++ñadeea5j ǚ5k_~ƍBiӦ]QHJJ?l|W>}!=*&KKK0x]mpBW_}w.\ʕ+`bpLhQPy6ƍhѢ+UʘK KJJ Ϟ=iТE a˖-Wm۶ZFӦMM6Uݫܿ077l (((@AAR}T 6L11Tfjjf͚I33nݺr~ӦMRVVVh߾="""PVV&s}]nְD֭oTSu1c`oo lo&TV;M׬YnݺV!c k׮U^s׮]UF6mT>$" ,88XrBD \"w(DU@ض.@yyyխJJJ֭[tYf"11Q5봴45QEFF bbذaRW,,,D@@Xn1]v1c[[[.ѯ_?)k?MLL E "00PP FyOI(e=͛'|hԨr5R=0i$@ZJ:6vX@IVZ%ɓ'Ť!5kkk+Μ9>U11hT\|Yy???uϝ;W*3hРj՘1ر Zh!fΜ)8 WuHH2cO? {jRP(bذa⯿1Z"ڍ34XoO4 SLիWQRRx >4hbcc"Aw}&LSPZZk׮!88X:?rH|G}6rss1c 9kJ-[Į]Fyy9bbb/kKKKoaĉpssñqFܿ=zep5+TcڴiHHH@ZZ.\~a̙8s RRR0{ljJP RXX_c=?#JKK1zhlذAc9SSS*)RxqKeee8y$vލ BLL N:2M@Fiii* K 茱"eK.OMM}4Q(hҤ Ν s;wp|!p=:pdddؼy3BBBPZZO>J3^YYY!$$7nDRR:Ѥ}dS0~puuūStN q%L0A^zaժUC/bС/___|g8|0QVV۷od:FCD_;U C:u*ox7+i&H%iP=p\rf }_wڵkB B,[LgYMӅe{˓ nܸ!x\BVVVL;Of Z6(--M888TɠĠGIǎxӆ TgyFo]:&1f,z)+++姌%H."" """""j+WX`Q{yy᯿믿777 ƍ_///vvv֭}׮]Ò%K|r 11Q12~|27orرm`݈uuH$wQ5PQQw^ݻWed[oo^6J """ո_61co?1j(|2DKDDDghQ%!C`Ȑ!rAʕ+h8C B!=y&N{{{`ҥ1B"""""""*&4B蝹1sLܻw8{,StDDDDDDD( g]T|mS7oƟ '''ŋ} Tܹra;w FVV6m*Waa!""" &4ׯp5#"5k1=z;mݺ'ODJJ ,,,YII 112GCDDDU=Q^}Uo3f̐;$zG9iРA9Ý>}'O|QSTT$wDDDTELhQmj(W.;|򂅅fΜ ݻcӦM)**;""""&4sΡo߾rATt6m)w8DTp9 UDDDT}/P)b )HǫGaQؾ};z-[ \.e˖ݻ7\"KDDDT} "": >BӦM+ݸq-ZP9V9YbnnFvv1]Q֭[je ʪGaWr/`ѲOT=~a#SDDDTok׮qwwG^^ֆr*_X7Q}kMI mۆ֭[>>>믿Ԯ9qz쩳.Mǎ;ڵ+m&7do]3Frr2z .]{j jUVŤg***”)S`ooFWCߐtݤoo&}=J4T!{S.]w^uaa!RGϞ=q]MDDDDDDTo ۷qoI&aʔ)z*JJJÇȑ#G1rH Enn.n߾P> 단(u3m{bǎ8tܹ@8L#G"88òe˰n:鼡{|ťg5krrrp%?Fo(moHnҷ7G%vXнXz:&&~~~hԨO?4IDDDu  "22RPd@71aagg'Ē%Kb,++sb۶m5={ Vou퍣w55k($`ѷwP@@f͚ O?ոFUҷ?رc#++ w̙3QR􍯾PUKjTPݻw5f͚_~Yc-[""" """ji9'MQT՟+V`ӦMhذ!{*/K/?ą CDD憟~ ;vϜ9۷G߾}accwyǏ7*;w7o?)S ^^^@DDt~СQ0j(ddd`Сj|XhT/?|X[[ [FϞ=U;w.\\\мysn}􁉉?*Cܹ3ZjOOOX[[c9}ҕZ`&N27ɓKMME||<܌jU,$$+V@dd$HV#jO0,\ 6X!!!Fdd;wF@@#w8Zտrb;[ŪBx"7nĦM4lѣ{n_(I___ 11Qp43 """СC&6 vC jõkoyb>s?׸)5՜"|0a$ȈnaB-wׯ郻wV2:}+= 3+1c 0ADDDR~<\^E|Ԟrg}Vƻ4i222͛7aÆ]gKIH!pAXXX 0&4SDDDDDDXaQ5KKK;"Z/<<saaax """""J'=~&L`5u<-Lh;v,,wDTV2e d AAA*:t񚰰0ɂR&4^0d$ 0 0lJԶT0ADDDZXX色tR=f """"""""" `B LpZ """.wDDDDDDO .DՔp 8iADDDDDDDDDD*^xN߿?`„ jnaBT$''K%,L^TLnh+OuDDDDDDDDDd,#&&W^ڵkaÆapuu* Zc\ovv65jܾ}ZfuQƮԩS':uJ\@@v pqqAVVVQYXX䂶=6,`*5 uDDDDDDDDDd˗/w޸qtǏ̟?Ǖh׮cmo;# _Ju(coڴ)]ӧO#;;...Rua055EYYڷo_-bu<  2c ܸqSNQZZ7o"::Æ C~T !}FzGBCS_9޽{U/Bn޼w} /2ǟ!-8C]zu z"XYYI&rADUw^XXX`077ᥗ^K/Rhڴ) Brlǎ7oO888`ҥou! J?*} """""J^JKK;"zDCŖ-[0h 4i=z􀯯/ 2 Pq&֭ȑ#"//...8|0z~ ÇGjjz%4*.UVVǎ?fh[n/kkkm?nnn2d|||M-++o  EfTbo۶9xFF>011_Dx{{㣏>Rppp^QFūܸqw܁a Mn߾mUV2d~̹sNhTm = """"""""z *n\WFII Ο?3g`ӦMؽ{7,Y"%4p)H37 ^{5N :uꤲ'.g^M36l؀^{M@ Mmҥ5h֬ӑWWWil+XYY^/QmiMUL.h1 "$$ǎñcfff/KghhgcBO.&4jHfͤ)S蝥񁏏F;;;JO:b^Xv U&4:wFRR5ի)1w\!`I&+غur@-4USY?< 6LbؿDEE.]*-CnpKdib̘ĉ}ҥK8r:O?TJh(СZ{ghhgcBO.&4j-  wzn͈F`` zF֭[* m]CqMNkC,=z߿SNaڵغuJzL[/^pSm!AR߾}n:,_?}0`^|Exzz7ސ+ǩb?7o#,, aaapvvƝ;wpY:t{0fL͛ׯ#00/"qQ:tRSNnܸH)Syq6/bBJJJBtt4) L>]z+ѣGz Mhhжm[$&&_~*u*Bǎcu}YءCs}4Wr憝;wšiɩٳg#((Ԓ%5fL<~ZFh*JO=PXX6CC8zr~*G߾}k.  =z􀭭-iӦaR?T=u놹s… ҌgcBO. """""zDaW(4i___K>|a=Xд*e+۶m.]3gΠh޼9:woM33Q~xܽ{WpnݺV̦MrVVVh߾="""PVVVOtt4_z 899͚5Q^^1>,X]tЧOڵK* j̘1Zl7|S6*WSc 0=BڵkծWܵkWsDDO\!˗JA DddܡDWLL Ewsbb |||VX@tQ:!ݥk+>lmmř3gprrx|ƌ/_5XQF*eY!!!Zicܹb|:WǎѢE 1sLq\cT~D=x`@ZJhrQ@ǨDbbܡ,((Hׯ;aADDDDDTxtl֬Y@XXQ\\\ SgϞ8<}rssѣG?, 6H͞=YYYիRRRP\\ YYY={TvΜ9Eݑb$%%[nZoaϞ=2O ұbիUŜ9szzz"66}6>Cի9{l$''wƽ{PPPbذaRիW.]‚ пkPb_z1׎1+777?~gΜgdd`߾}Ø1c7Q{9~ӌ&34;ШY'OD6mVļ<@HY\ IDAT7nvvvjW{OB!LLLcnnn8{J\)))hܸZ٤$IIIZg$$$hw~~>}*333Sǐe=Rݻ055U+-ފrrrĢEJ 4{U)1׎119s, ěo1]8C 8CDDDDDD._ta@˖-c:wڱKmmm:t^999jW|]1e6mڨmݺXŋ#-- %%%*JKKRϞ=U^ʾݺu йsge0}toA`` 6l;zHc'cz X~=߿oU3 """""ϲ0}tQjԨnܸ44k̠LL4'T嵨䑳3233qEmV:\Y:ₛ7oҥK*xjrJ;wlܸÆ Cesqqf 5quuEFFot]oyBHHBBBp5xxxT)U]c11ﱫ+^}Uشiڷoϣk׮ԩQ1Qݠ\Zk׮*s#ƄQ5BtكK";;۷ǴiӤrXjƍ˗C(,,ŋq!_'N uaXz5Zl/bʔ)y#** SLUТE ?'N4]l ҥKQï8kN圳3>39s/ѣ*%bĈX~=nP8eAeGgСCHNNСCKJJBRR3gTyݶm[9sF}:t;#qI{tbŊ033Î;PTTm?رc5߲e ,YD( :u ׯ_Gaa!z)tSNE@@J4i_ntLƌvO:(,,accct_nP&  SO 0&4ƯR6sgԩ6m6l\v K,o뷝r<((HcѣGc:fs6h1>c?qT4x`\v͠*3ft~?J=z􀉉 ˹Ɇ """"""Rw^ݻWe[ooVz=l0 !""".Lh,ѯ_?àGf׮]eELL j_K,ABBѸqc>ƾ2dVZ%CDDDD1ADD(++ɓ'W\\,wDT 2C ylUu.:C+Wbʕ!""""" ""ٝ8qB85iߋ2GCd۷oRRRdjDD$ K.rAիWjg*?$&+޽+wTØ """"""""";,]>>>rCdc"++ ڵ;aLhQ ڵk`~#2GCT?)NDW  `B`Æ xꩧjDDDDDTcN<)wF+//G~^;!QĄը "::Z07orADDDU'ю9-s4DSZZBH.bBjիWH~x*R(jlmmѢE `nn.Cd|u^mTT[5&Dra4>>>SDTmڴ;"""Рbĉ; ƎTà: ??Oӧqu,_\juHDDDDDDT]РǢK.ҥaPХK&4H+eeey&"## 6jLj8p 7:cr@  "22RP +((Hׯ;a 6l,韬Z͛7EppYٳje߿/ϟ/:w,lmmݻU]rE?^4iDƍ7xC\|Yc6m]v⩧/HOO;v쐎;;;ڮ7ʶ~W1tP(̄7o(++S)y/lllD D޽֭[5G7n[ZZvډ R+?*=vm1m4ѪU+aee%,,,DVDHH8v*TN8j!+W,GKLL ^JLLܡ[GD>}%|?O8C@NT߸qݻwGFFt,''سg ~-=UꈋË/(}cʕ+޽;27o?X?~*uJϋ"77W_ kkkDDDT_iС*/_O>KcлwoM-[ٳgb|ѧ*!}:@ݻW .… Ti/""""iժUϗ;ziܸq͛(w8RjDDTghK,Q96k,ddd ,, SL;z aaaؽ{7`HNN7k<055űcǰtRٳg#++ zիѲeK\x'OƟٳg#**J%={ᅦ7V^~ѣիWcڴiذaZB%OOO\= Ea҇sAnn1,!!Az^RR'OgϞB~`Hߔj;x ȑ#ݻ7 qE駟T511;;DYII Çe~:qXHH=zBTPPL@ppňrNk|8fd,.9ʒSNNN"55U|ƍu^cgg'uwwDBBRRRѸqcxcݓ>}Z:^RR" 011ѣGUu]@<ӧO\}333+_\UCVX֭c~~~bĈ"<<\bLAxGMT%jֶmd_&>?DD7nQT[CзVk÷bkC D5M!rrroCNN>sRlܻwOz~-@Νu^hٲqkMmo^znkk+=8?v1Wٳk;;;^\1($$֭~iit`Hߔj0e$&&رc;wO?ի1~x+' sss鹷_iii #!"z| pecWWWdddFݵsvvFff&.^mJ/^(LA*LWzcNM bcPΝ;7nİa`cc|)PUUy [y̙3q.]L>|O q}HW\jCٻ&o%B":-Z t+.TE*U۩*EtjJѩtZOqcku4.ԺYdKHBor]}}$/7NP͗ռb ̜9(((@Ϟ=E}iBDmYg#QcÇt:põ/eeep֮] mݐ/ 'OĤIF3g]Z\v s)o ,%F @̙3GfVL&T*?YflW$x'@VcС0av3=z Xr%JKKo믿FDDYZrh8;#..ӧO&8}Y##jWf6e!--M,--M –-[?СCw΋/())Amm-nݺe˖!>>q67:=Lw`ggW_J}'pi\=d2 ixyyٳ1c lllP(gj)i ,%'N_L&C׮]1l0MII̙3!aggA!55` ><1J9s_~Jz-ҹ&˖-Ê+8::bԨQ:6ŒHDSyy9֮]5kֈJMܪ]f PQQ!v(DDUYաA\bgTаX34=Aj +++!77W{nNN`ee%tE())1~uuRB߾}mں1ևs͜9S W\+Wa̙zzzz BEEPRR",^X{q ÒD8C} gh|vv9u}}'L /ghQbhvgi5ghP0c˖-[lA}}=BBB/^~>|8 ''Ei>+ƍOC*駟Ƨ~ /? ]v-[kvDDDD%3p[Á0eQc j)SbADYDÄuHM5n޼Y[yfM͛7y&jjjt5CcMrz>믿s\FDѸH$HLLd2u o|8p lmm닳gꝓ9>}/v@޽[[^WWKBPPfD}4Un$ &L]"&&#F=֯_oڵk\(TVVj\\3g\[n*G75!C|YθsNÇGfff$+0sLr+++IQPPX#jРNiС͛7woEVV?A[O~mPVVA[YY^S6S?qkMyC:"Q{r1?~yyyȰt=zCXXBBBBj[_|\T"33ΝCQQbk墦 }ɜ.\ok֬{g#G ))ɬ͉ORڵkʂZ˵e111BVVn޼2jMT?g,p8x '|R޽{fufghpQ3<ŭ:a90dž Bxxv߆+VԑdaBUUO? 'O6gFךuccc W_}%G} .3B``pUFz(f̘au䚶yp "qq{h.C{hh2hg]CK5[PR;k׮zo~޽K /~g뢢"'keoJc TWW :ϥR onoN|YYYYYYB)yгgOkso5տ\cWՂPTT$ L8Qغu^*k׮C:h{iY34Cj8ӧwƞ={`eeW^yEĉǏ]vիW=z4ZSO=x皜V+V3N8Ɖ'+VQg'4F{ 5WWWs;;;K*fmvaܾ}χ7 Ҵ}jpyGߣ0'>T T\͉wwwi_7<7T^z 9ݻǏc„ zrssP(Z,n"Ad&4޽;BCCQYYJN̜9S^Aje˖aŊ򂍍 1j(:tH%}$$$wf gϞŌ3P(`ccB={^^^fCDDDDׅj*}||yf\pHNN믿-wssZI7+Ge,Q(2'\h_;;;7\%7t}Mosbƍعs'Ǝ {{{:* MDΘ;1Ad&4Ci!УWzزe JKKQYY .`ڴiz5~mmm˗#++ 555w+zuF\c2T 9 PSS|z cT燤$TTT-jV;ƍΝ;-nԨQ@YYPVVs9** sENNjjjR0~x35WWWddd2'Xܽ{%%%EXX,$$JJJp] $$7v}MoCk׮X|9&OlNZZƍgqDD퉥348K|6b@DDSyy92Lh:ͷf(aGJJ fϞ+Vo߾7koc&Mo7n`fpB$$$ $$RÆ Czz<..JAAA(((/.]jQlOaCеT*0yLQ1`TWWcXj,!!p)ڄks͙3/GׯCRa۶mpmpƤ%O5K'jfiٳ#$zmy!%%Ɉ;v׌,["55ӦM;jEJT*w&3:*Y Qkذa%ݻwb mȸ_~; """""2 jUƕ+Wháv <<ׯ_ءPIL4LV+7P*Ĺs o#&&… xbȑ#ڵ+MfVB#$$}8kkk={k֬&4֯_͛7cӦMxg_ЈAUU ^}Ub:;v Ǐ\.ɓ sGDDDDDDD1cڵx7ķqu2d "r4 2ׯ_ۡΥqlظq#[V\ ___AAA۷oվ5.^'|G@@v[{/7nԖCRGD%4RRRc8rE#"""""""jZVmm-򗿠O>Xr%j!9Dh: A0%[3b:RRTyMMY>|o B4myNNz)]]/>ڄEsGDDDDDDD1A0aDKCG` jZ'YR__b}`͸pJKK_][k׮=yyy׹pvv6X8:3WWWddd%50w\䠦* Ǐo~G eeeז/XfQ[[\=BBB;wELL BBBGDDDDDDD$&4:.6l'p^S*N8 ((2 o^y{…HHH3 Kk|M̙33f̀=-OHH5<==[[[$$$kH,Lhtz7/;H$$&&2 ڲ:,]  ՛yuV 0]tܺuwi 尳?vޭ׾>- _&hRS˯͞=zul2dggΝK/ӾM3f =J>AT"22R h7wKJJӧO9>`Q>>>fgee#Gbȑ裏pرx".^wypuuRiB={'""""""""qSpjU55ŋ8q"ur^SL#se|HLL|ZK 쌯]m NԑpS_q B`` kZƼyo^@XX&NGGG駟}vرW\wvvFPP'\bֻw&˹d5ĄQnfiӦAVc߾}HKKW_}}k=z40n8tMlܹ۶mǝ1i$++94.]jx`yOF\\Ξ=*bɒ%4iݟcC?~5u|r|gPƍ!-ZD 0arDDD ""%%%HOOǶmpQ߿=1uT$۷Y{êU6n܈onnn+Wח """""""" Q`b`L[)Dh-xqqdgg#11CE.]۷Ν;غu+&LdF;!a5>|o B2+V9oooaWWN Q[DFp3OKݻ7~mۨ ud>>>ؼy3{Ett4BCCn#..ݺuC\\^~G888XDDDDDDDD8CbikdF7j(ddd UUU(++`20w\䠦* Ǐo ?5, "!!P(/-oܙ֬YwyGgiuム d2xWZ~DDDDDDDDd&4͑H$Xv-\\\ J:L&CbbK.B=BCCV"##!₤$MqF^^^شi291Qӧ /@.ؽ{Nۆ$QSƌGsb|TbXp!TaÆ!==][ٳgcŊ۷/㑚hkaQPWW}p=^555b@DDDDD"*//ǽ{,ZUMaj#iظ)xQRR=z233Eׯѐ)8QV7܋ٰaPAqC Y1d!|<<<T*v(DDDDD899I0 zn NH$&DnDTbĉz'NVР6M5ׇ]헗cڵ8y^ٚ5k޾U """"""34S3={سgQ[Ԫ.\-9j***?7$ g$u`)SO2cTDDDDDDDԖq*f-|aQ^^.?Yj0w\r<3۠K.B=BCCV i3k׮ r9PYYW'11dHLL4;~ pqqARR^ۦb޸q#`gg///lڴj 9sϫD"ݻ1p@gϞk'33Ç7:Ç#33h9C]}msKӇt<쳈޽{Q__o2NԪ+W 22bC@xx8_???C6j_?)W*Ĺs o#&&17ģQTv$ |r|:u;ǏC.cYj⋋Ãzk:6ߐcشi}YٳcbbPUU,W_}X~Nzz:= \u!::Z/9QXXwww}@޽QPP`UUU¯K./ñk.իE|+^H<:ݼy󐒒d&4,غu+RSSTWZZ GGGtzǏO>[nO>rOOO|ׯΝ;EQQN{MhH$deeK#S'//nnnz益W^8y,W/Vc{q45~c={J҉/00 ጚnݺF{{{ܿ-jYAvv6<<<t!cر8x |}}q%Ѳ^7o1nا (++͛7W_aڵ(,,Μ9{{Ɂ'MTbĉbaԣL/8q"[0֧^oo7[NtuuEqqqٰOwwwd ss^SO=e9(..֋$3z( $PcP(-1 UTT@TbȐ!ppp@.]0b߿ߢ>_`t 2 #F]:w]tPWWw^FFƎ=z@*O>Xje4988gELL ._~W\7qݻw ,ѵkWaxq8gVXXy pqq)Sp5.9EVyy9֮]'OQM]f 0 ۷/7rssÏ?m Ьa^^<==}\]]ڷ;]frм;;;lQJ}ST]""""""j;YRR|'N`„ f#F`` ޽Ɖ':ݺuUUUz*bccQ]]/:u_|E׷n²eK.5W=b̘1HKKÒ%K _sƍq-3}СCqmm_vÇq ك@߿U{#00{5z w{Ss"''555PT?~^;hV066wEII bccf:u*bccQRRw"&&Ƣ,XYf󨭭Enn%;;:񅄄X7;w4ZqY.=l neew}/_F߾}q!S1bয়~2Zpκ:ŋHJJ~7Ekm}6,Y,TWW_2V-7e/l —_~)EM&RSSZB-:Ru&+++my]] T*,޽[>LP(~^|Oݺu^yB1⫨f͚%888=z>C46|4 >>>T*݅7=~S헖 ӦMu&tM6mVc傋pu?PVVWF-C dgg YaرbBDDDDH$YNNNmakkkѽC } X[[7ن@8uY}{{U\bܲ2aѢEB߾}T3&?GiiޘMsPA&=gA6l0qD!>>^yPkgϞMqpph|AM$zMh֬Y# š5k/b ]t/^, ]v>#AV\]]] SLJKKu7uC5nØO?TlmmOOO>ӫ/}5F[ĄF܄FcEEEk EeZ[HVvJR?~ JR:&4'&4گ 4aN_@ԨkF TWW[wFjΘ1D Vz}4v0h :uJӋFؼysק9Ihp)j;Ǐ#//G޽{ 3Jaav.\ok֬{g#G )) Í333q9QgIĆ9ׯGrr26mڄ2|ݻ7 C^M>YYY(++ᅬ &5Ò%Ko>l)Q;Y)00%%%m1yVQ^^sԩSzu]]].\x>5{\6^©%4 ضm sC*7n8jȑ1b ܹ>E5SDDDDDDDJprrj3[[Vg޽+WDii)~7|׈Ыٛ_FFFQYY'ObҤIf9zh9sp5ڵk3gs2 R?3f͚evߦ2\xW3<ׯ7z^@@>j :&Ln]\\SW^^xQ[pp0 ""/^Dmm-p]fiHYaA"4}ssskv? ١VB@^^W&JS97:e|999xꩧLͅBhv?DmUTTZ]s`ɷ:*c4gϞXz5V^d[+VѣGqexw~8qO?EN8?~|7ص>|8v{{{T*ݍ5JSO=~=h{op ؚ34ݱAEEuaaa7ˠ)nnnP:S mvz*ʢ 'QKXlVX///F¡C>8}4V\{2 vvv.d>}ĉx!еkW 6 iii&MII̙3!aggA!55բ1#H`kk ggg!""{ʼn'ЫW&UT3gT ;;; 8-ҋ/!!A;3q~;iꫯZt34CRRz-jZs7nv܉p΋ܹs={"33ؿN=WWWddd`̘1-T͂ 0k,|'CAAJ%RRRtꥥaʔ)-7QGajXGѣ_T̙3z\N8Æ >DDDDDD%|r,_ܬ6tR,] SOL:[l-[tO6dgJsy3z>[nk+%%prr‘#G,?DϞ=!ɰh"۸q#\rkkk\x())A@@hKqI0"""""""z=g}&v;wNHD o7FÙ(**ҫ8\]]P[[춌1_~~>u5L>|?>nܸL 6 44clB@^^k<77 DDDDDDDDF5T* JmQp@xx8O.r4DiʄXDFFFs],X=zuMӧ!P 6@" 66aaa=WWWddd`̘1-Ԉܹs={"33ؿ?`ԨQXp! HPVVM^[oAVcѢEÖ-[0gX[[[hG:`;;""""51rH|wb["55 j4S9CX¢q%0ADDBL%DDDDDDDDg%vDDDhIA|t4: &4Yv܉;vu\rDUZZ àfz 5CNN!Qp7>}Y ""ݹs?"""""V#.L DD$nݺ!33S06mڄd@TT^{5#R(b@DDDDD":t(nݺ 6`ڴibCdPNN ĄC ; jYfiOE-b'''899 a<MBW^ŏ?ݻG駟py""""""" """Ȏ;SLNG#"""""""j-LhEo ԩS|Q37; "ݻ """2 ڄf)SHKKCRR8=4&j """>}pwwG``!C퍟=[(| 6l vDfaB̢ <44DlԩXjvQ;" ,\LΝ;<\b1TwFMMc:&4Ȥcǎ!??+~W9rDcBLl>ydu4eDDDDDDDD- """2_~S%1ADDD&M4 iɓ'u$&4ȤI&A*oAII^Z?OXYYaʔ)"DHDDDDDDDQ^xƞ={So>TVVbȑիHQQ]]-vmL&krez """L:N*FhDDDDDDLs֭[JMMŴi&4,!!!xpQBPJJJ_'O9J""""""j.'''Ch3ݻ'vdDDDdݻc̘1ػw/vڅ7xg`pvv9J""""""jDΙ+m7'"""i,1۷ouADDDf7nq B*ѣĉ:0 """d2Caݨß'8::u`LhE4KKm߾]ܔf)*"""""""%"cƌ\.Gff&Ǐ9*"""""""8C,ҥK2!DZÇ RO>$FڷD"D"i>}`B,p)TDDDDDD1?éSp}֢_5^{5CN """h3FH5_D^^?ѣ(++Cee%~'|hA LhŤRy.]DZSRR?| ~C&ވ‰'tY[[[ uݻw ,ѵkWaxqmKNi^gdd`رѣR)UV^B̛7^^^e㪪 愨LCq(ofv4z햖95M+f]3nLSL-%Pq***8 z~;rx=Z{=] ޽{ቡ<)8P˗/$MP$;;[Ν"=|$K.%ɓ'+--M=zѣ4yd 6H~W]rEYYYڵkfΜصZhh]xQgϞ՛o)I?ṳI>|X999:}ΝL`  FYf$ij׮$}?l*2|||~O۷Wƍխ[7 |a#T͚AFb_Ν;'xi@5﯃*""BFc7H !W_}U˗//.^(I:uTgq+1~G0`@!4%%%W\)n%2nPFx4Iһ{%6l?;w<裏ꚡC*..LHjj +|||sKݻWԺu[z(5>>>$4T(@[pz%l_CٹL$I))):|K>Xj룏>*uDaj׮}U@~[n$+88h֭[5|pGB(G7:'Ԭ4h``$ܹslǟRl$Nr@ñCUdd\Y!]KF 0@E#ع4%%%|Ŏ$Q"ePAL&$l6:JI*+,I$?" V\; Ν;sY',8yNUV)55US>}4uTk׮-Ҍ3W...z4}tڵKN:zg4}tժUlر;vaE"رT+%%viEEEiՊQNl2d8;;[QQQڰaΜ9c>{l(,,ovU 40: dtȇ` \&MRJJBBB4j(5iDҋ/\暀}W5f9sFݻwWxx7o_Vdd$ jl޼y7oa%BBܒVZ`7RSS|UVIBCCZӦM>sJ1cHΝkm +R.1@y nIRR!UZzzzg6???뱛C5Sի"T:t3x`ǗJMMURRZlYkjԨQhya{EBC쎳M]䤜ڵKwyM_5o< 6L~:t˗/ڸq"""<`viܹR=1uTOZt&,,LM6-S V۶mUV-ժUKz[1*ȍ۷;v6l0m{DB={ɓFQ4mTm۶5:*TS IDAT4:*eњ3gaTI$4zR[n!Ty$4P``aTj}Jat! `C(#$[Gskrss%I;v] X- FHhem۶ںu.\^z-:tt]w b2 ըQCݻ&L;ӀP]ʈ$G>>>Gsk|||'gggCzN:(XB6lP@@a`Sp fOVV6mڤ=z(;;[Ǐ7:]'aْj"22RCU``"""PӒ$GGG5_]3f08ʯVZ1:P``MN7׫gϞo]'N:u(##CwyGK.ձcǬ5kZ-1ũ[nl۶߯:u}jܸue˖q7ɓ'vYƍ+55fM6W^ֱWW >LAAA=zt$uThe$?P2|!T ɑ|||jϞ=ҨQ5j޽{k뮻}E^Z_:dA׮] pB5Jl"IZl~m͟?_#F$ڴics弰lԩ#I6{|bH۶muV-\\СCgTSuƍxIrpuu?I6ЮY{egg]vz75tR/RׯѣGUF y{{omm۶iZvN>FԩS]匄PڵK.\0:*K.ҥKƖ6Q`o@Vҽ3kذV:u(<<\6큁{޽{b… WԚ7LPvHh?zFRn ҥ 2h"effR$ݻo dt`EBpCWi-X@wy[x._\YF{Vڵ}-r_Jq=߾}$)338@A~{Sff|r_ (c&QRU`h<>,X@ VPP\]] * v#==;w֎; ߿V\)IrwwWZZZŘd$f \>F$/6=B>X3,̙Cn%I_?np4ۊ+$`7IRft1ڵKrww믵rJ988ʕ+iر TDD-oQ+x@ Wrr|ƌTi$$$HOۚ5k jߍ"nXO=ZnyI҉'+d2驧ŋվ}^_$WfPrss5m4IҢE+66* ܒzYx#֭['IjРT]$4 7׿U}֮]kMh:wFmM&\_q͚5K˗/סCto^G?/IS@@W^yE$k׮U^=ծ][K.դI?S-ZСCtq5kL 4Й3g:>S:p.].](88X,,~~~4hׯ~* ???޽[ 4:J>SPP:vht(U vRѮ];O?$IմiS}ׯ$ۄƖ-[Կ>}f;vhȑJOOWHHw.;vz>p@]|z~Kbcc%Iݻw&3vܩ{L)))6s_'i3~mըQC}U@@UFAJJ6lؠ_~YҵLwݺuc-:~맼<}JJJRvv?J>I҈#-Iرf?nuEuQ6lŋe65o:uJo>&M7( 4T'Th 3,>Ihذ26VXQ_hIhtҥ8KƐ!C MfdggkǎQuC^ꫯq 4TTh %4~KfΜ)MIҩS$]{MK땤Buօ^ccǎ[$Ypvv.vmJ 4p+Ο?/I믭_ͱ|LQHh l<qhB?{d[ѪU+۷O!!! QFt9%$$hƍZv6olIRNNfuco͚5+4_7e^xA|5kTO?}sPWa1yd=Ú1cZQ2|&fYh,Ba^^^Zl OhLLAAA|THh %{…B}heddy'9d 2DPTgXP+_F*Ti3,&O,I1c+<0ըQ$] =ztHKKJ@CB# .h޼y75{ijHhvqoAM>][.#==Jdݺu0:JmݺuFPH߼yO.///뫩[W_髯2: H$4СxèRڶmktU BBBbt@,I ŋW^G r$);;H`o.]dt@HhՈ233?^zF;лwo]tImڴ1:H$4j.]Ѐk-l޼Y...F|L&!Pm޼B*,CC*mJPI^#e6~F*d:xaTK aT*$4ҥK;v;ժUK!!!6W\ѤI_(##Cׂ Tn]IҖ-[4~xm۶MرBBBOZX`>߿_7֤IB:/itRIh E?~O>|XW^Ջ/h?m4k[^ukܹ'xB|VX!m۶MӧO&4fϞJ_~(55U. @è͛gt 3L7<~jtmIf̘KZ-X@ׯW&M$I:vhMh888h׮]P6mԣGg͚e˖cǎ-Zhp?FIHH͛RbSp3֟%)--M͚5?TnZ&I&IJOO^Z)))zպukyyy?ѣj׮]y"*"yzzcǎ7iD6ɐWZW_iΝp̙1cX5k{Hh(5n8={VgΜQppM?QFѣUll `衇Legg+33Sk׶+zgcرc=ztʁIyT~\\\-___?^~~~ݻ\]]5vX1ꫯ*,,L5}^zI#GUvmS]v-{Py)8"/ԗ_~im{׬5jĉ5qBG# /^xlP%d2h܍Qkܨx1L%NbP(Y5AeG-ZZ,???ʕ+1hOvղeKzjן/^Xw}ՠA 4HZl]/mb]/6J>>>?ƌ3gΨ{ W5|ˊ&4&O4CW6mt9R&OpI^wUJ3ʎ̋ȀjN:?z@޽u%]V>J… _իJ&""BŎчYYYzwtR;vL־5kZ-oڴmWWZ];v$effN:]v/$)//ONNN2L/6nX'OTBBڵkg];!!A~~~jܸRSSכ+޽{kGPX^3եKt͛7Pݕ~X͛77:חIFPPB, l-Im܈zܡCq͚>ο'ӧ%Imڴr^1J1m4mݺU˖-5oddd*nݺ)$$\cǪ_~Fc5t2IhX>ocզzzzEQFFɓ:pMUŁ%Us  >HӧOufqӧk̙ ʚU:x}YCIF{*//O{ըQl-$]{խ΅AtRٳ@^UQiӦz쩥K!1mЀ冦LUV)&&F۷kԨLb֮];޽[;wY>)\(ThTb 4AiŊF>L?Tn]ժUKwy"""ˆmۦÇK5k֔ m۶f|XX6mZ&slP,ɤ3fyruuՌ3l xɒ%:vm۶&>>fPҵr &KkO? koY7$)22Rwqu})99T^\[QL&x2335l0խ[Wu?eee\_7@an:u(<<\.\˗sN_뿋{kK ĉՉ'_۷;fVB D~WmڴIǏWtttqF;wNC ѣ 9y5kV}ڴiu)կ__A)**zw􈎎֏? ._~zJq?/~Gppua%%%)33SƍS۴iS8qVo0lׅ tyիWL_dդI "dɓ')IΖrssm]Ο?olɢEZ~Zj%IJKKSǎu)I__GlV-j*uС|6lX`qQ7nXÇճgOZ+Q ջwom޼Y6mR^n~\pAWzty@ _+Wԏ?~СCN17 bFs MfvIU u2yzz*==߱cGh˖-ڲe\]]mqqq{&$]tz=zzMJfl_*=v옼,.pKj֬i'O<]vUlll&M(##&rU1O=zʦoРA9rRSSe6m߸>._\h{QW%Yq#5I;vL5*<ڵkEMPuI3gk 75c=NCi5j(qƊWhh/_n3h 8Pf٦].]Yɚ IDATgY;0/Yf|a֖evww7߿ߦʕ+w}ܼys2/Ymڴ1iӦ@+mڴ1׬Yc^hQĘ}||̒l_ o9߅ ́f777900МQ䳼m߾}F333 իYyӦMM~7ny_~fIPlXat(<677?`t(U?ݻ+$$@PL,{lVI|Çkܸq 5:"<~gq7:jo$0`T.r (w:DQFЀ$ٳ:tHD^!Ք*ȼy$I 648ʇTSZҖ-[矓Ш ڼy6mjt(N (@5ԵkWoF :x!PLm5jԐz &;,fsPlܸQW\1: í]VǏW-dñ FիWu)EEEiŊڰa ,@5RL%IGQ.] P䯐xvءzKƏ 6PzN$M2EGS=l޼YtY#|HhV/^WZ۶m}]zNM4֭[m-ZgyFTV-jJÇo!븋/j֬YZd]*88X W^իO>D 4вet=j7І d6չsg+4h$ɓ'5uTZJW飩S]v4`CIhp4Ǎ!Z:t P͚5z7N999z%]Fֽޫ={\{f\|YCҥKղeKZJm۶-GQϞ=uucbb *XN>(^Z111ԩSi섧@é͛'IjذT>$4T/!fWzz:Ur%رCJC8qnno߮[ 'O֞={ٳg{l٢3gs4`m޼YZb<<}}}} ̙^d\g[AB@:G$777kKP2fs:uJQQQ˖-$}̔l.COOOIΝ;K~DDuYfOҮmId:uƍ奄S7v߾}%IFҾ}={+0aÆi׮]Sffvܩ>H]v-ª3,,U(KTDD P)Shƍڳg}ݾ}{믺tKҥK~wb mڴIڵ+rԩSO?)&&F;w.Q\͛Lè6olt UZQcǎ̙3mj߾}" TfM}VvoZ 6Ԗ-[Giɒ%JLLT^^tߦMkR#99Y_l2w}%^E믿7իԩƎaÆfSS uaI#F!~/F* 4)uQxxm ]&L &j-[Z 7K/_~YruuձcJR *,,Laaa7}'777è!*IuUhڵZvm5k*44ԀPў{BQJRaaҐDXj~͛73Çkt(֊+it(D~Hh\*OOOIҨQHh@tYqFPuԉgۉ+WjӦMFaHh@5[oа:t q58$4#Jd2@e2dI;vԶmlDFF;>%''\Eիj׮ٳgK\ &KkO?E6HhJqF;wNC ѣm?… ׯ{9W_}U?OS̙3%IӦMS||o߮SN~ {*ʒ%KԳgOQ И1c HMnn6~<==%Ioy[nj~ۦgϞ޽{KRRR$I ,դII{ァ;jܹ7{[o4l0t+..N׿ fs K2Cjժ]pAJLLܹsխ[7CuBB֠A4rHl6z&M(##&rr0Fbb$gQݺu6m^P\\X˗}ԫW/MӾ} }I[NNNrwwנAwc-ZdY~~~ ӕ+W /]_`߿xb}rvvV 4h %''kٲevwwwKξ8կ_?vmrttT˖-+Pm]tIח5yR]kԨQ SƍP-_"*vڥ=Ӻu}y͠AlWZ-[hjѢkWJӧիW+&&F:u͚5z7N999^;f͙3 2f(mذAgΜi={\\\vSq<6ɚ8q$i„ 7B*pruu_?~Իwojر1bMثaÆ:xM_۷WhhM2"=zhϞ==z̙36{M4I))) ÇӧOkܹTHH͜qqq蜜JYFWVVVV о}c̙3޽ۧ/?$EFFt-ZPtt.^g7ߴ>S TY%:_աC4x`kԨ'ȑ#>w\EAAA2LJMM8=rqqQ Ǐ/4.TSG)ѸnMo߯_2dի/jرƷiӦtk[㠠 ͘1CIII͵Wڮ]9zܡCq͚vlȿEi$;,ԩ#I6mCXz5f=l.RYK֩(&Ij2:JW5jTYԫW/ء2F ;vL͛7WrrrqPvl%T%%%e˖El2Iҷ~{L̴&Wg>7,뮯8,Ш&Ξ=۷`w'7*/BsNC(w.\0:@%֩S'=}\w}t犊gN\+ou3-e"6uiFb/]-15\57¤}x:|;z=9?S> =z@vPRR$ʘSbpqqoa>X~=&M8 p1$&&̙3h033\dž648Z*&4Zݻ#11Q0Z8$$$`Ȑ! ݻ3g4~[n!;;VVVJe޽{׿cʕRs&M8vRiRADDDDDD:.335KKKSZ ڶmHyTTRRRW^yFD9kVsbBRbx L8QhtG^^fΜ |Rl_jӧ{4 \HQ#nNDDDDDmܸ)))@~~>ѦMr̘1*c;,_ d2^{5,[ NNNb[[[9sػw/_prr׬Y}}}ڵ puuŜ9sW\h """""""""M<'Onٯ]vElll͑㾾JRM=8{wA%""""""""""DDDDd2!QcB^Z??,,,`mm+V(WUU!""vvv055ŸqCԩS2d,,,`ddܹS6l;x̍9K*QaB^Z())q%)GGG̙38{,ܹ6m 44Tl3f PPPbʕoUVaՈGii)?'Nhm~DDDDDD- 7'""""2S՟+>m68q۷,[ IIIb 6ȑ#,^nnnXv-@OOϟ uOOOٳGrJ޽nnnGGGlذ fKDDDDDD """"(eW$/ԩcuv LL[[[͛7Gk׮w}'յHDDDDDDհB^Zχ#ƍJ̄={ĦMؽ{70n8$/_+4?H0DR@ToLhKk ×_~ A)S СΜ9ݻob֬Y4hd2JKKajj*9s&>_}6fΓtʕ+rJPUVIz* ??_H&4HU_f%K`ڴiprr!ñc=<<4hn߾ 777DDDfBll,ƌvg̘###{Ά"##nDDDDz PO?>ɓ'}!4;LhK񈏏[jya޼yj>Ç LDDDDZx!ǏRC8TtQP&4Z({{{'|„F3ѫW/CR촒:"""""""""""0ADDDDDDDDDDDDDDDDDDDDDD1ADDDDDDDDDDD7ג 6СC]?//O?aܸqaeeիWKv}"""""""""Snn. ((V8W%aBCK222}v@^^ܐd&""K&A """"jvn޼ x!N<)q4T۷aBC к<̞=㽼PZZC !..;v8kݺ5;&uDDDub‚qwwwJ8pRSSѱcGCiv2HֽhB(..`DuM1K,--5͛juɫ#00111ʕ+=t&O*g^^^k 87 W\̜9MvӧoLqǖ-[`prrTTT?ķ~ cccDDD`̙SN!<<OFEE0w\;V;$""""zAO> fW^HMMEaBtÇ}꯸C ic/Gii Ҳ΄ƼypF_CJ 2 Rh/wcyyy8{V&=]mZYPh*M!zQCmؿ?>|0|ܽ{W\>Ǝ3o>ϙ """""jLhNLhh&a֭[sWqq1BCCZqNݿ6]HJJ=Νàz͛ӦMç~*>OLLDjj*lll< ۶mخݺu'Qݘ &憀_! Ujj#!˵f5jA.dBC.3Ah'ODhh(222PVV^PP٩S'bٲe裏 333aܸq jDŽtƹu&44IDGGcԨQ@II ,,,v;;;K.7n(ٳ'6mݻĄQ`Bylhݺ5v?RZ}]ω[[[$''cJz1ڴiccc,燐_Wj71k, 42 055ʜ4),, a-cM1̕8<'uHDDDDN]BBBBB;oqQQQ>}:abb (1k,b̘1000@~k׮&!QӺqbccVLh4C?pm^111زe 5PWҪU+X[[cРA@޽%Oba ы622W_} PXX(}>|xEMDDDD&Lwww 5aBCǎ1|Ġ\OAA֭[ѣGXr%v܉l<} ȑ#~~-}]wvv{gٳgCOOi'Aܹ;v`߾}8z(/uX 'o.] IDAT۷åKTکeRp)A??3m4^/դޓΝ;b \ph۶-ѧOJ5G"]0qD,ZXhF%uHDDDDDoߖ: zi%uT*c…W^yE֭[5kOݻرcѯ_?DDD ##@ZZ+WWTTҥK CtttV3A!55PYZش5eѳgO,X@LfHAѶm[Æ úu$%̬qi$&M˱e [nU= >rss)&''cĈh߾= йsg,YGc^Z=z_ddd 8y$tJ=[ JK$)) <ѣ1j(ﵮ}_lSi<.] bTTT ;;k׮E~ԎrDՔ)SpMb۶m:$"""""KNAЮ];c= &&111*cRSSNJt[lQ///yYY,X$ܸqO>42R3ݺu }͛7cꗃ"--M\[xTn+_j8a:tHXvv6zo߾(,,ݾ}_5?Qi[o<''DDDNsqEI_TTz w믿q;M6IcKֱcG\p{ѣw/;"??-'#lق75gvv6w߅[n֭<B yfXYY޽{XhRZSRR">sO> Ʋep5dTVV6d{1۷J~DYYҧG eee8̙T+VΝ;x7^{ fff022B׮]1e)O\.L&+۾};d2C>o~ٳ'bccQUUt,hݺ50p@رCmPC*4),, pBzBȑ#СC1tPȑ#*NRk<{ ߿?"""p-DKrkDDDDDD͂@Z$V^]c/ɉ'B֭ _pڵ:ooo/N:Uk? uVTA())Quƪ@xvkghh(O*O<|:t|b_k[ӹBsO=z|~@tR/ :MMMU[\\,`iiYj/777u}jRW{cj{5INN`ccv^666BNN f]Æ qqq ͛7Zn-\pA8\گ_?犊RGujH|}8yyбcG{nAa׮]cǎBEEE 3f>Cz y߿_ 1Bm @my>}Zh׮RBtts 1115ΑHM-OLL@ :"""""Vh8~x0i$?(--Źs_C;fϖINNFYYq ;V p|ژƵj 666;v,1`>_ꚢy_5QRRSNaݘ;w.\\\jݯݻ-S⹺T>O_YEE}Էfff8tRA7n@JJ aC 5U'gwL}gϊ}.\^zڵkx뭷кuk`HJJ)f9r$Э[7رCK|q w;jL6=nccvZΝ;נX .͛8~8mۆ`TVV[ceeߔ++ګ{~J].<[G000@=c„ J7ց?o3m۶_NΝahh+++q3($&&bذa055U:^VV9s044^9x `ƍի ЫW/qω&M2@`` Ν;;߿1?8߾}h)ÇUIm<}={6_b„ ģG0}t/% w5&4t1[[[9s_ ###{ ?u ڵéSxb+ؽ{o͚5_XXX{Fbb&L4E<==~z<|}ŨQͻky7SN˗QYY˗/# @4s MC*h_M67WIݐ!Ob_t]圍OW/(Gaaa022qLchScY1uVdffxN&aԨQ011Ahh(SSSZJe"YSD&aΝ޽; ӧO\My*DDD7n>|re˖fffXlY/*DhFj'A@vvv!66/_Fyy9k׮7@FFJKKQ^^45JcnnΝJlu=uMQt&&&066)%%.\+++)U . A .D ۷/q5=zG_]א! ̭[ M8X[[\t<++KocӴS`oo)Sؽ{7d2^իW!ɰk.M{C4d (**BUU0i$>}NNN|)$u}ZUBBB`ccCQVV'OڵkHHHPڟ4bE|4T ե 6L/*++믿]H5!kZHLLDEE.]wo***T>Th< 33 ,lllmb̙p1Rϑ!0`ܠAၛ7o7o 0m4|rtfff={6.\РMy 6`հ9/^]vc͚5pttD۶m.GDDDDDK&4鯨~%""RESX_7jl}O6668pF#Gȑ#_p!{:u4'NDhh(v fR(C/bHLLȑ#k`۷puu&EHLR'00)))Wτظq#RRR|M61c"Ud9HKKÈ#`ff7od|՘¹s B{܌; ##C~<`غu+PVV*ܻwRIf45")`ԩuAP_B}/5C,HDDDDDBڶmpK<4 6m7I}+''!!A鸯J3f࣏>–-[`ff7n`Rѐ&"hӦ &-1|p )SXtgΜALL ݫi+4HCaĈ>:w8#&&F4(!!10d[JhhUVJh뇇gϞ4h0}t tDD!C;88wEzz:F!uxDDR=ѡ7S\zǏWWl)M<oV9GS_UV7orss={N """""j5|p >\005/_#::ZhѣGK "&4H|/a$*//:""""""""""ALhh+.^#((Hp.//gF۶m5 `kk ===MFjTUUu'"""""""""Zbmm 񁏏h"abbҨ x=zh2zy VsxLٳ%qK]t>=gggj%.MRٳGB-իW>/^,q4(uΖ8"""""&4H'􊋋1d5zF\p燩S6uHTf VRROWVS@ee%*++Uz5;wx#j~nݺ%uDDDDDLhNP,3%˙EB{؈׭[066oͺ~\WߧO\x:L߁Yk5n߾$888h1:͘;w.RRR ˥Zggg^SIR˴tR\~ݻw:"""""&4HI'777hF}qwwGNNBBBxsLwww֭[x՛Pkgń\.GJJ ͥZ[[[@@@f;w.:t u(DDDDDLhQ28UrYYY׀)d2 Zs5uۇ{/'6&4H|/a$*//:""""Ұ˗/cРA[n*mݺuÀ'HDDDDDWWW\x n_D^^fϞm6jb`[[FoTMWUU@fDDD͑f"***?-}||w^&4Z8&4?jceHh4j{EE&â:(^*,,dffG ^[l OOO cL>۷oQydXbQQQq!..*}W !!...?ķ~ cccDDD`̙NԵLjL&Î;ׯ{ǫ2^y3gt߿?ϟ_9ˋ fff(--Çaii)u8/b 2DfCC+("Q .0uԦQ p|}}JJJT*>} DeeBҸ_/"] \~ 00aaaXj'99#ÇQRRׯ??ǐ˗/C&!((g}'55sѩS'q]\rnеȮ]p1XXX`ʕ ™3gTƫKy=cǎ}vFDDDDD/&4H'(Lhh"!lll֭HL Q\\Pn}^ͺ~\WߧO\x:L߁Yk5n߾$888h1:͘;w.RRR ˥ZoUmή]-[(p߼yxڴiO۶mÉ''%%5h}TJhٳ~!Μ9;*_t)m֠e尵̞= , \2„i"憀__Ш>AHHJ5-???dee]u%1ufyAAZd``611A|| M$L)S4ɹ&4Hڵkèŋ7xsҬΝ;spp%MtDԢuY u"?_/n5IDAT"jqqàf@W$"""""`BtJii)od@5/%WIENDB`AppRecommender-0.7.5/install_dependencies.sh000077500000000000000000000004471306751311600211470ustar00rootroot00000000000000sudo apt-get update sudo apt-get install python python-xapian python-apt python-cluster python-simplejson python-numpy apt-xapian-index python-xdg debtags python-pip python-sklearn python-matplotlib python-stemmer python-fuzzywuzzy -y sudo update-apt-xapian-index sudo pip install setuptools AppRecommender-0.7.5/run_from_source000077500000000000000000000001161306751311600175620ustar00rootroot00000000000000#!/bin/sh APPREC_DATA=~/.apprecommender python -m apprecommender.main.cli $@ AppRecommender-0.7.5/run_tests000077500000000000000000000000631306751311600164020ustar00rootroot00000000000000#!/bin/sh APPREC_DATA=~/.apprecommender nosetests AppRecommender-0.7.5/setup.cfg000066400000000000000000000000251306751311600162450ustar00rootroot00000000000000[flake8] ignore=E402 AppRecommender-0.7.5/setup.py000066400000000000000000000011171306751311600161410ustar00rootroot00000000000000from setuptools import setup, find_packages setup( name='apprecommender', description="Package recommender for GNU packages", version='0.7.5', url='https://github.com/tassia/AppRecommender', author='Tassia Camoes Araujo', author_email='tassia@acaia.ca', license='GPLv3.txt', packages=find_packages(), setup_requires=['nose>=1.3', 'mock'], test_suite='nose.collector', entry_points={ 'console_scripts': [ 'apprec = apprecommender.main.cli:main', 'apprec-apt = apprecommender.main.apt_run:main', ] }, ) AppRecommender-0.7.5/vagrant/000077500000000000000000000000001306751311600160715ustar00rootroot00000000000000AppRecommender-0.7.5/vagrant/bootstrap.sh000066400000000000000000000004201306751311600204360ustar00rootroot00000000000000#!/bin/bash echo "Install basic dependencies" sudo apt-get update sudo apt-get install vim -y echo "Install AppRecommender dependencies" cd /vagrant ./install_dependencies.sh echo "Prepare AppRecommender data" cd /vagrant/src/bin ./apprec.py --init ./apprec.py --train