commit 161e8923afad20bae00fcdcea571af3d67301b8d Author: Jonathan Thomas Date: Tue Oct 11 08:44:27 2011 -0500 Initial check-in of OpenShot Library diff --git a/.cproject b/.cproject new file mode 100644 index 00000000..016719ad --- /dev/null +++ b/.cproject @@ -0,0 +1,597 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +cmake +-G "Unix Makefiles" ../ -D"CMAKE_BUILD_TYPE:STRING=Release" +true +false +true + + +cmake +-G "Unix Makefiles" ../ -D"CMAKE_BUILD_TYPE:STRING=Debug" + +true +false +true + + +make +test +true +false +true + + +make +help +true +false +true + + +make +doc +true +false +true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +cmake +-G "Unix Makefiles" ../ -D"CMAKE_BUILD_TYPE:STRING=Release" +true +false +true + + +cmake +-G "Unix Makefiles" ../ -D"CMAKE_BUILD_TYPE:STRING=Debug" + +true +false +true + + +make +test +true +false +true + + +make +help +true +false +true + + +make +doc +true +false +true + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 00000000..029b2640 --- /dev/null +++ b/.project @@ -0,0 +1,88 @@ + + + OpenShotLibrary + + + + + + org.python.pydev.PyDevBuilder + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + ?name? + + + + org.eclipse.cdt.make.core.append_environment + true + + + org.eclipse.cdt.make.core.autoBuildTarget + all + + + org.eclipse.cdt.make.core.buildArguments + + + + org.eclipse.cdt.make.core.buildCommand + make + + + org.eclipse.cdt.make.core.buildLocation + ${workspace_loc:/OpenShotLibrary/build} + + + org.eclipse.cdt.make.core.cleanBuildTarget + clean + + + org.eclipse.cdt.make.core.contents + org.eclipse.cdt.make.core.activeConfigSettings + + + org.eclipse.cdt.make.core.enableAutoBuild + false + + + org.eclipse.cdt.make.core.enableCleanBuild + true + + + org.eclipse.cdt.make.core.enableFullBuild + true + + + org.eclipse.cdt.make.core.fullBuildTarget + all + + + org.eclipse.cdt.make.core.stopOnError + true + + + org.eclipse.cdt.make.core.useDefaultBuildCmd + false + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.core.ccnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + org.python.pydev.pythonNature + + diff --git a/.pydevproject b/.pydevproject new file mode 100644 index 00000000..f8c0075c --- /dev/null +++ b/.pydevproject @@ -0,0 +1,7 @@ + + + + +Default +python 2.6 + diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 00000000..5e3d4269 --- /dev/null +++ b/AUTHORS @@ -0,0 +1 @@ +Jonathan Thomas diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..2c524fd2 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 2.6) + +################ ADD CMAKE MODULES ################## +set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/Modules") + + +################### SETUP PROJECT ################### +project(openshot) +set(PROJECT_VERSION 1.3.0) +message("<< Generating build files for ${PROJECT_NAME} (${PROJECT_VERSION}) >>") + +############## PROCESS SUB-DIRECTORIES ############## +add_subdirectory(src) +add_subdirectory(tests) + + +################### DOCUMENTATION ################### +# Find Doxygen (used for documentation) +include(cmake/Modules/UseDoxygen.cmake) \ No newline at end of file diff --git a/COPYING b/COPYING new file mode 100644 index 00000000..4d9ac3ae --- /dev/null +++ b/COPYING @@ -0,0 +1,622 @@ + 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 \ No newline at end of file diff --git a/Doxyfile.in b/Doxyfile.in new file mode 100644 index 00000000..029c180d --- /dev/null +++ b/Doxyfile.in @@ -0,0 +1,1510 @@ +# Doxyfile 1.5.8 + +# 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 = "@PROJECT_NAME@" + +# 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 = "@PROJECT_VERSION@" + +# 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 = "@DOXYFILE_OUTPUT_DIR@" + +# 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, 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-Cyrilic, Slovak, Slovene, +# Spanish, Swedish, and Ukrainian. + +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 = NO + +# 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 is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like 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 = 8 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = 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, C#, 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 + +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 make 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 to 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 penality. +# 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 rougly 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 = YES + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If 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 namespace 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 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_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 + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. The default is NO. + +SHOW_DIRECTORIES = NO + +# 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 = YES + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = "@CMAKE_CURRENT_SOURCE_DIR@/include" "@CMAKE_CURRENT_SOURCE_DIR@/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++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 + +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 = "_darcs" + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = "*/.*" "*/.*/*" + +# The 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 = "@CMAKE_CURRENT_SOURCE_DIR@/tests" + +# 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 = "@CMAKE_CURRENT_SOURCE_DIR@" + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. +# If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. +# Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. +# The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = NO + +# 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 = NO + +# 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 = NO + +# 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 = NO + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = "@DOXYFILE_HTML_DIR@" + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the 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 = NO + +# 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 + +# 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 = + +# 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 = + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# 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 FRAME, a side panel will be generated +# containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are +# probably better off using the HTML help feature. Other possible values +# for this tag are: HIERARCHIES, which will generate the Groups, Directories, +# and Class Hierarchy pages using a tree view instead of an ordered list; +# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which +# disables this behavior completely. For backwards compatibility with previous +# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE +# respectively. + +GENERATE_TREEVIEW = NONE + +# 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 + +# 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 + +#--------------------------------------------------------------------------- +# 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 = @DOXYFILE_GENERATE_LATEX@ + +# 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 = "@DOXYFILE_LATEX_DIR@" + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = "@LATEX_COMPILER@" + +# 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_COMPILER@" + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = @DOXYFILE_PDFLATEX@ + +# 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 = YES + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = 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. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = YES + +# 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 = @DOXYFILE_DOT@ + +# By default doxygen will write a font called FreeSans.ttf to the output +# directory and reference it in all dot files that doxygen generates. This +# font does not include all possible unicode characters however, so when you need +# these (or just want a differently looking font) you can specify the font name +# using DOT_FONTNAME. You need 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 + +# 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 = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT 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 graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = "@DOXYGEN_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 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 = YES + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Options related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO diff --git a/README b/README new file mode 100644 index 00000000..bc63d127 --- /dev/null +++ b/README @@ -0,0 +1,63 @@ +OpenShot Video Library is a program that creates, modifies, and edits video files. +Copyright (C) 2011 Jonathan Thomas + +OpenShot Video Editor 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. + +OpenShot Video Editor 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 OpenShot Video Editor. If not, see . + + +################# + INSTALLATION +################# + +Please see /doc/InstallationGuide.pdf for a very detailed +Linux and Windows compiling instruction guide. + + + +################# + WEBSITES +################# + +http://www.openshotvideo.com/ (PROJECT WEBSITE and BLOG) +http://launchpad.net/openshot/ (SOURCE CODE, BUG TRACKER, TRANSLATIONS) +http://freshmeat.net/projects/openshot-video-editor/ +https://sourceforge.net/projects/openshotvideo/ +https://www.ohloh.net/p/openshot-video-editor/ + + + +#################### + REPORT A BUG +#################### + +https://bugs.launchpad.net/openshot + + + +#################### + TRANSLATIONS +#################### + +https://translations.launchpad.net/openshot + + + +#################### + ASK A QUESTION +#################### + +https://answers.launchpad.net/openshot + + + + diff --git a/cmake/Modules/FindFFmpeg.cmake b/cmake/Modules/FindFFmpeg.cmake new file mode 100644 index 00000000..495adb2f --- /dev/null +++ b/cmake/Modules/FindFFmpeg.cmake @@ -0,0 +1,124 @@ +# - Try to find FFMPEG +# Once done this will define +# +# FFMPEG_FOUND - system has FFMPEG +# FFMPEG_INCLUDE_DIR - the include directory +# FFMPEG_LIBRARY_DIR - the directory containing the libraries +# FFMPEG_LIBRARIES - Link these to use FFMPEG +# + +# FindAvformat +FIND_PATH( AVFORMAT_INCLUDE_DIR libavformat/avformat.h + PATHS /usr/include/ + /usr/include/ffmpeg/ + $ENV{FFMPEGDIR}/include/ + $ENV{FFMPEGDIR}/include/ffmpeg/ ) + +FIND_LIBRARY( AVFORMAT_LIBRARY avformat + PATHS /usr/lib/ + /usr/lib/ffmpeg/ + $ENV{FFMPEGDIR}/lib/ + $ENV{FFMPEGDIR}/lib/ffmpeg/ ) +#FindAvcodec +FIND_PATH( AVCODEC_INCLUDE_DIR libavcodec/avcodec.h + PATHS /usr/include/ + /usr/include/ffmpeg/ + $ENV{FFMPEGDIR}/include/ + $ENV{FFMPEGDIR}/include/ffmpeg/ ) + +FIND_LIBRARY( AVCODEC_LIBRARY avcodec + PATHS /usr/lib/ + /usr/lib/ffmpeg/ + $ENV{FFMPEGDIR}/lib/ + $ENV{FFMPEGDIR}/lib/ffmpeg/ ) +#FindAvutil +FIND_PATH( AVUTIL_INCLUDE_DIR libavutil/avutil.h + PATHS /usr/include/ + /usr/include/ffmpeg/ + $ENV{FFMPEGDIR}/include/ + $ENV{FFMPEGDIR}/include/ffmpeg/ ) + +FIND_LIBRARY( AVUTIL_LIBRARY avutil + PATHS /usr/lib/ + /usr/lib/ffmpeg/ + $ENV{FFMPEGDIR}/lib/ + $ENV{FFMPEGDIR}/lib/ffmpeg/ ) + +#FindAvdevice +FIND_PATH( AVDEVICE_INCLUDE_DIR libavdevice/avdevice.h + PATHS /usr/include/ + /usr/include/ffmpeg/ + $ENV{FFMPEGDIR}/include/ + $ENV{FFMPEGDIR}/include/ffmpeg/ ) + +FIND_LIBRARY( AVDEVICE_LIBRARY avdevice + PATHS /usr/lib/ + /usr/lib/ffmpeg/ + $ENV{FFMPEGDIR}/lib/ + $ENV{FFMPEGDIR}/lib/ffmpeg/ ) +#FindSwscale +FIND_PATH( SWSCALE_INCLUDE_DIR libswscale/swscale.h + PATHS /usr/include/ + /usr/include/ffmpeg/ + $ENV{FFMPEGDIR}/include/ + $ENV{FFMPEGDIR}/include/ffmpeg/ ) + +FIND_LIBRARY( SWSCALE_LIBRARY swscale + PATHS /usr/lib/ + /usr/lib/ffmpeg/ + $ENV{FFMPEGDIR}/lib/ + $ENV{FFMPEGDIR}/lib/ffmpeg/ ) + +SET( FFMPEG_FOUND FALSE ) + +IF ( AVFORMAT_INCLUDE_DIR AND AVFORMAT_LIBRARY ) + SET ( AVFORMAT_FOUND TRUE ) +ENDIF ( AVFORMAT_INCLUDE_DIR AND AVFORMAT_LIBRARY ) + +IF ( AVCODEC_INCLUDE_DIR AND AVCODEC_LIBRARY ) + SET ( AVCODEC_FOUND TRUE) +ENDIF ( AVCODEC_INCLUDE_DIR AND AVCODEC_LIBRARY ) + +IF ( AVUTIL_INCLUDE_DIR AND AVUTIL_LIBRARY ) + SET ( AVUTIL_FOUND TRUE ) +ENDIF ( AVUTIL_INCLUDE_DIR AND AVUTIL_LIBRARY ) + +IF ( AVDEVICE_INCLUDE_DIR AND AVDEVICE_LIBRARY ) + SET ( AVDEVICE_FOUND TRUE ) +ENDIF ( AVDEVICE_INCLUDE_DIR AND AVDEVICE_LIBRARY ) + +IF ( SWSCALE_INCLUDE_DIR AND SWSCALE_LIBRARY ) + SET ( SWSCALE_FOUND TRUE ) +ENDIF ( SWSCALE_INCLUDE_DIR AND SWSCALE_LIBRARY ) + + +IF ( AVFORMAT_INCLUDE_DIR OR AVCODEC_INCLUDE_DIR OR AVUTIL_INCLUDE_DIR OR AVDEVICE_FOUND OR SWSCALE_FOUND ) + + SET ( FFMPEG_FOUND TRUE ) + + SET ( FFMPEG_INCLUDE_DIR + ${AVFORMAT_INCLUDE_DIR} + ${AVCODEC_INCLUDE_DIR} + ${AVUTIL_INCLUDE_DIR} + ${AVDEVICE_INCLUDE_DIR} + ${SWSCALE_INCLUDE_DIR} ) + + SET ( FFMPEG_LIBRARIES + ${AVFORMAT_LIBRARY} + ${AVCODEC_LIBRARY} + ${AVUTIL_LIBRARY} + ${AVDEVICE_LIBRARY} + ${SWSCALE_LIBRARY} ) + +ENDIF ( AVFORMAT_INCLUDE_DIR OR AVCODEC_INCLUDE_DIR OR AVUTIL_INCLUDE_DIR OR AVDEVICE_FOUND OR SWSCALE_FOUND ) + +MARK_AS_ADVANCED( + FFMPEG_LIBRARY_DIR + FFMPEG_INCLUDE_DIR +) + +include(FindPackageHandleStandardArgs) +# handle the QUIETLY and REQUIRED arguments and set FFMPEG_FOUND to TRUE +# if all listed variables are TRUE +find_package_handle_standard_args(FFMPEG DEFAULT_MSG + FFMPEG_LIBRARIES FFMPEG_INCLUDE_DIR) \ No newline at end of file diff --git a/cmake/Modules/FindGTK2.cmake b/cmake/Modules/FindGTK2.cmake new file mode 100644 index 00000000..ee0f9d00 --- /dev/null +++ b/cmake/Modules/FindGTK2.cmake @@ -0,0 +1,561 @@ +# - FindGTK2.cmake +# This module can find the GTK2 widget libraries and several of its other +# optional components like gtkmm, glade, and glademm. +# +# NOTE: If you intend to use version checking, CMake 2.6.2 or later is +# required. +# +# Specify one or more of the following components +# as you call this find module. See example below. +# +# gtk +# gtkmm +# glade +# glademm +# +# The following variables will be defined for your use +# +# GTK2_FOUND - Were all of your specified components found? +# GTK2_INCLUDE_DIRS - All include directories +# GTK2_LIBRARIES - All libraries +# +# GTK2_VERSION - The version of GTK2 found (x.y.z) +# GTK2_MAJOR_VERSION - The major version of GTK2 +# GTK2_MINOR_VERSION - The minor version of GTK2 +# GTK2_PATCH_VERSION - The patch version of GTK2 +# +# Optional variables you can define prior to calling this module: +# +# GTK2_DEBUG - Enables verbose debugging of the module +# GTK2_SKIP_MARK_AS_ADVANCED - Disable marking cache variables as advanced +# +#================= +# Example Usage: +# +# Call find_package() once, here are some examples to pick from: +# +# Require GTK 2.6 or later +# find_package(GTK2 2.6 REQUIRED gtk) +# +# Require GTK 2.10 or later and Glade +# find_package(GTK2 2.10 REQUIRED gtk glade) +# +# Search for GTK/GTKMM 2.8 or later +# find_package(GTK2 2.8 COMPONENTS gtk gtkmm) +# +# if(GTK2_FOUND) +# include_directories(${GTK2_INCLUDE_DIRS}) +# add_executable(mygui mygui.cc) +# target_link_libraries(mygui ${GTK2_LIBRARIES}) +# endif() +# + +#============================================================================= +# Copyright 2009 Kitware, Inc. +# Copyright 2008-2009 Philip Lowman +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +# Version 0.8 (1/4/2010) +# * Get module working under MacOSX fink by adding /sw/include, /sw/lib +# to PATHS and the gobject library +# Version 0.7 (3/22/09) +# * Checked into CMake CVS +# * Added versioning support +# * Module now defaults to searching for GTK if COMPONENTS not specified. +# * Added HKCU prior to HKLM registry key and GTKMM specific environment +# variable as per mailing list discussion. +# * Added lib64 to include search path and a few other search paths where GTK +# may be installed on Unix systems. +# * Switched to lowercase CMake commands +# * Prefaced internal variables with _GTK2 to prevent collision +# * Changed internal macros to functions +# * Enhanced documentation +# Version 0.6 (1/8/08) +# Added GTK2_SKIP_MARK_AS_ADVANCED option +# Version 0.5 (12/19/08) +# Second release to cmake mailing list + +#============================================================= +# _GTK2_GET_VERSION +# Internal function to parse the version number in gtkversion.h +# _OUT_major = Major version number +# _OUT_minor = Minor version number +# _OUT_micro = Micro version number +# _gtkversion_hdr = Header file to parse +#============================================================= +function(_GTK2_GET_VERSION _OUT_major _OUT_minor _OUT_micro _gtkversion_hdr) + file(READ ${_gtkversion_hdr} _contents) + if(_contents) + string(REGEX REPLACE ".*#define GTK_MAJOR_VERSION[ \t]+\\(([0-9]+)\\).*" "\\1" ${_OUT_major} "${_contents}") + string(REGEX REPLACE ".*#define GTK_MINOR_VERSION[ \t]+\\(([0-9]+)\\).*" "\\1" ${_OUT_minor} "${_contents}") + string(REGEX REPLACE ".*#define GTK_MICRO_VERSION[ \t]+\\(([0-9]+)\\).*" "\\1" ${_OUT_micro} "${_contents}") + + if(NOT ${_OUT_major} MATCHES "[0-9]+") + message(FATAL_ERROR "Version parsing failed for GTK2_MAJOR_VERSION!") + endif() + if(NOT ${_OUT_minor} MATCHES "[0-9]+") + message(FATAL_ERROR "Version parsing failed for GTK2_MINOR_VERSION!") + endif() + if(NOT ${_OUT_micro} MATCHES "[0-9]+") + message(FATAL_ERROR "Version parsing failed for GTK2_MICRO_VERSION!") + endif() + + set(${_OUT_major} ${${_OUT_major}} PARENT_SCOPE) + set(${_OUT_minor} ${${_OUT_minor}} PARENT_SCOPE) + set(${_OUT_micro} ${${_OUT_micro}} PARENT_SCOPE) + else() + message(FATAL_ERROR "Include file ${_gtkversion_hdr} does not exist") + endif() +endfunction() + +#============================================================= +# _GTK2_FIND_INCLUDE_DIR +# Internal function to find the GTK include directories +# _var = variable to set +# _hdr = header file to look for +#============================================================= +function(_GTK2_FIND_INCLUDE_DIR _var _hdr) + + if(GTK2_DEBUG) + message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] " + "_GTK2_FIND_INCLUDE_DIR( ${_var} ${_hdr} )") + endif() + + set(_relatives + # FIXME + glibmm-2.4 + glib-2.0 + atk-1.0 + atkmm-1.6 + cairo + cairomm-1.0 + freetype2 + freetype2/config + gdkmm-2.4 + giomm-2.4 + gtk-2.0 + gtkmm-2.4 + libglade-2.0 + libglademm-2.4 + pango-1.0 + pangomm-1.4 + sigc++-2.0 + ) + + set(_suffixes) + foreach(_d ${_relatives}) + list(APPEND _suffixes ${_d}) + list(APPEND _suffixes ${_d}/include) # for /usr/lib/gtk-2.0/include + endforeach() + + if(GTK2_DEBUG) + message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] " + "include suffixes = ${_suffixes}") + endif() + + find_path(${_var} ${_hdr} + PATHS + /usr/local/lib64 + /usr/local/lib + /usr/lib64 + /usr/lib + /opt/gnome/include + /opt/gnome/lib + /opt/openwin/include + /usr/openwin/lib + /sw/include + /sw/lib + $ENV{GTKMM_BASEPATH}/include + $ENV{GTKMM_BASEPATH}/lib + [HKEY_CURRENT_USER\\SOFTWARE\\gtkmm\\2.4;Path]/include + [HKEY_CURRENT_USER\\SOFTWARE\\gtkmm\\2.4;Path]/lib + [HKEY_LOCAL_MACHINE\\SOFTWARE\\gtkmm\\2.4;Path]/include + [HKEY_LOCAL_MACHINE\\SOFTWARE\\gtkmm\\2.4;Path]/lib + PATH_SUFFIXES + ${_suffixes} + ) + + if(${_var}) + set(GTK2_INCLUDE_DIRS ${GTK2_INCLUDE_DIRS} ${${_var}} PARENT_SCOPE) + if(NOT GTK2_SKIP_MARK_AS_ADVANCED) + mark_as_advanced(${_var}) + endif() + endif() + +endfunction(_GTK2_FIND_INCLUDE_DIR) + +#============================================================= +# _GTK2_FIND_LIBRARY +# Internal function to find libraries packaged with GTK2 +# _var = library variable to create +#============================================================= +function(_GTK2_FIND_LIBRARY _var _lib _expand_vc _append_version) + + if(GTK2_DEBUG) + message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] " + "_GTK2_FIND_LIBRARY( ${_var} ${_lib} ${_expand_vc} ${_append_version} )") + endif() + + # Not GTK versions per se but the versions encoded into Windows + # import libraries (GtkMM 2.14.1 has a gtkmm-vc80-2_4.lib for example) + # Also the MSVC libraries use _ for . (this is handled below) + set(_versions 2.20 2.18 2.16 2.14 2.12 + 2.10 2.8 2.6 2.4 2.2 2.0 + 1.20 1.18 1.16 1.14 1.12 + 1.10 1.8 1.6 1.4 1.2 1.0) + + set(_library) + set(_library_d) + + set(_library ${_lib}) + + if(_expand_vc) + # Add vc80/vc90 midfixes + if(MSVC80) + set(_library ${_library}-vc80) + set(_library_d ${_library}-d) + elseif(MSVC90) + set(_library ${_library}-vc90) + set(_library_d ${_library}-d) + endif() + endif() + + if(GTK2_DEBUG) + message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] " + "After midfix addition = ${_library} and ${_library_d}") + endif() + + set(_lib_list) + set(_libd_list) + if(_append_version) + foreach(_ver ${_versions}) + list(APPEND _lib_list "${_library}-${_ver}") + list(APPEND _libd_list "${_library_d}-${_ver}") + endforeach() + else() + set(_lib_list ${_library}) + set(_libd_list ${_library_d}) + endif() + + if(GTK2_DEBUG) + message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] " + "library list = ${_lib_list} and library debug list = ${_libd_list}") + endif() + + # For some silly reason the MSVC libraries use _ instead of . + # in the version fields + if(_expand_vc AND MSVC) + set(_no_dots_lib_list) + set(_no_dots_libd_list) + foreach(_l ${_lib_list}) + string(REPLACE "." "_" _no_dots_library ${_l}) + list(APPEND _no_dots_lib_list ${_no_dots_library}) + endforeach() + # And for debug + set(_no_dots_libsd_list) + foreach(_l ${_libd_list}) + string(REPLACE "." "_" _no_dots_libraryd ${_l}) + list(APPEND _no_dots_libd_list ${_no_dots_libraryd}) + endforeach() + + # Copy list back to original names + set(_lib_list ${_no_dots_lib_list}) + set(_libd_list ${_no_dots_libd_list}) + endif() + + if(GTK2_DEBUG) + message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] " + "While searching for ${_var}, our proposed library list is ${_lib_list}") + endif() + + find_library(${_var} + NAMES ${_lib_list} + PATHS + /opt/gnome/lib + /opt/gnome/lib64 + /usr/openwin/lib + /usr/openwin/lib64 + /sw/lib + $ENV{GTKMM_BASEPATH}/lib + [HKEY_CURRENT_USER\\SOFTWARE\\gtkmm\\2.4;Path]/lib + [HKEY_LOCAL_MACHINE\\SOFTWARE\\gtkmm\\2.4;Path]/lib + ) + + if(_expand_vc AND MSVC) + if(GTK2_DEBUG) + message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] " + "While searching for ${_var}_DEBUG our proposed library list is ${_libd_list}") + endif() + + find_library(${_var}_DEBUG + NAMES ${_libd_list} + PATHS + $ENV{GTKMM_BASEPATH}/lib + [HKEY_CURRENT_USER\\SOFTWARE\\gtkmm\\2.4;Path]/lib + [HKEY_LOCAL_MACHINE\\SOFTWARE\\gtkmm\\2.4;Path]/lib + ) + + if(${_var} AND ${_var}_DEBUG) + if(NOT GTK2_SKIP_MARK_AS_ADVANCED) + mark_as_advanced(${_var}_DEBUG) + endif() + set(GTK2_LIBRARIES ${GTK2_LIBRARIES} optimized ${${_var}} debug ${${_var}_DEBUG}) + set(GTK2_LIBRARIES ${GTK2_LIBRARIES} PARENT_SCOPE) + endif() + else() + if(NOT GTK2_SKIP_MARK_AS_ADVANCED) + mark_as_advanced(${_var}) + endif() + set(GTK2_LIBRARIES ${GTK2_LIBRARIES} ${${_var}}) + set(GTK2_LIBRARIES ${GTK2_LIBRARIES} PARENT_SCOPE) + # Set debug to release + set(${_var}_DEBUG ${${_var}}) + set(${_var}_DEBUG ${${_var}} PARENT_SCOPE) + endif() +endfunction(_GTK2_FIND_LIBRARY) + +#============================================================= + +# +# main() +# + +set(GTK2_FOUND) +set(GTK2_INCLUDE_DIRS) +set(GTK2_LIBRARIES) + +if(NOT GTK2_FIND_COMPONENTS) + # Assume they only want GTK + set(GTK2_FIND_COMPONENTS gtk) +endif() + +# +# If specified, enforce version number +# +if(GTK2_FIND_VERSION) + cmake_minimum_required(VERSION 2.6.2) + set(GTK2_FAILED_VERSION_CHECK true) + if(GTK2_DEBUG) + message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] " + "Searching for version ${GTK2_FIND_VERSION}") + endif() + _GTK2_FIND_INCLUDE_DIR(GTK2_GTK_INCLUDE_DIR gtk/gtk.h) + if(GTK2_GTK_INCLUDE_DIR) + _GTK2_GET_VERSION(GTK2_MAJOR_VERSION + GTK2_MINOR_VERSION + GTK2_PATCH_VERSION + ${GTK2_GTK_INCLUDE_DIR}/gtk/gtkversion.h) + set(GTK2_VERSION + ${GTK2_MAJOR_VERSION}.${GTK2_MINOR_VERSION}.${GTK2_PATCH_VERSION}) + if(GTK2_FIND_VERSION_EXACT) + if(GTK2_VERSION VERSION_EQUAL GTK2_FIND_VERSION) + set(GTK2_FAILED_VERSION_CHECK false) + endif() + else() + if(GTK2_VERSION VERSION_EQUAL GTK2_FIND_VERSION OR + GTK2_VERSION VERSION_GREATER GTK2_FIND_VERSION) + set(GTK2_FAILED_VERSION_CHECK false) + endif() + endif() + else() + # If we can't find the GTK include dir, we can't do version checking + if(GTK2_FIND_REQUIRED AND NOT GTK2_FIND_QUIETLY) + message(FATAL_ERROR "Could not find GTK2 include directory") + endif() + return() + endif() + + if(GTK2_FAILED_VERSION_CHECK) + if(GTK2_FIND_REQUIRED AND NOT GTK2_FIND_QUIETLY) + if(GTK2_FIND_VERSION_EXACT) + message(FATAL_ERROR "GTK2 version check failed. Version ${GTK2_VERSION} was found, version ${GTK2_FIND_VERSION} is needed exactly.") + else() + message(FATAL_ERROR "GTK2 version check failed. Version ${GTK2_VERSION} was found, at least version ${GTK2_FIND_VERSION} is required") + endif() + endif() + + # If the version check fails, exit out of the module here + return() + endif() +endif() + +# +# Find all components +# + +foreach(_GTK2_component ${GTK2_FIND_COMPONENTS}) + if(_GTK2_component STREQUAL "gtk") + _GTK2_FIND_INCLUDE_DIR(GTK2_GLIB_INCLUDE_DIR glib.h) + _GTK2_FIND_INCLUDE_DIR(GTK2_GLIBCONFIG_INCLUDE_DIR glibconfig.h) + _GTK2_FIND_LIBRARY (GTK2_GLIB_LIBRARY glib false true) + + _GTK2_FIND_INCLUDE_DIR(GTK2_GOBJECT_INCLUDE_DIR gobject/gobject.h) + _GTK2_FIND_LIBRARY (GTK2_GOBJECT_LIBRARY gobject false true) + + _GTK2_FIND_INCLUDE_DIR(GTK2_GDK_INCLUDE_DIR gdk/gdk.h) + _GTK2_FIND_INCLUDE_DIR(GTK2_GDKCONFIG_INCLUDE_DIR gdkconfig.h) + _GTK2_FIND_LIBRARY (GTK2_GDK_LIBRARY gdk-x11 false true) + _GTK2_FIND_LIBRARY (GTK2_GDK_LIBRARY gdk-win32 false true) + + _GTK2_FIND_INCLUDE_DIR(GTK2_GTK_INCLUDE_DIR gtk/gtk.h) + _GTK2_FIND_LIBRARY (GTK2_GTK_LIBRARY gtk-x11 false true) + _GTK2_FIND_LIBRARY (GTK2_GTK_LIBRARY gtk-win32 false true) + + _GTK2_FIND_INCLUDE_DIR(GTK2_CAIRO_INCLUDE_DIR cairo.h) + _GTK2_FIND_LIBRARY (GTK2_CAIRO_LIBRARY cairo false false) + + _GTK2_FIND_INCLUDE_DIR(GTK2_PANGO_INCLUDE_DIR pango/pango.h) + _GTK2_FIND_LIBRARY (GTK2_PANGO_LIBRARY pango false true) + + _GTK2_FIND_INCLUDE_DIR(GTK2_ATK_INCLUDE_DIR atk/atk.h) + _GTK2_FIND_LIBRARY (GTK2_ATK_LIBRARY atk false true) + + #elseif(_GTK2_component STREQUAL "gdk_pixbuf") + #_GTK2_FIND_INCLUDE_DIR(GTK2_GDKPIXBUF_INCLUDE_DIR gdk-pixbuf/gdk-pixbuf.h) + #_GTK2_FIND_LIBRARY (GTK2_GDKPIXBUF_LIBRARY gdk_pixbuf false true) + + elseif(_GTK2_component STREQUAL "gtkmm") + + _GTK2_FIND_INCLUDE_DIR(GTK2_GLIBMM_INCLUDE_DIR glibmm.h) + _GTK2_FIND_INCLUDE_DIR(GTK2_GLIBMMCONFIG_INCLUDE_DIR glibmmconfig.h) + _GTK2_FIND_LIBRARY (GTK2_GLIBMM_LIBRARY glibmm true true) + + _GTK2_FIND_INCLUDE_DIR(GTK2_GDKMM_INCLUDE_DIR gdkmm.h) + _GTK2_FIND_INCLUDE_DIR(GTK2_GDKMMCONFIG_INCLUDE_DIR gdkmmconfig.h) + _GTK2_FIND_LIBRARY (GTK2_GDKMM_LIBRARY gdkmm true true) + + _GTK2_FIND_INCLUDE_DIR(GTK2_GTKMM_INCLUDE_DIR gtkmm.h) + _GTK2_FIND_INCLUDE_DIR(GTK2_GTKMMCONFIG_INCLUDE_DIR gtkmmconfig.h) + _GTK2_FIND_LIBRARY (GTK2_GTKMM_LIBRARY gtkmm true true) + + _GTK2_FIND_INCLUDE_DIR(GTK2_CAIROMM_INCLUDE_DIR cairomm/cairomm.h) + _GTK2_FIND_LIBRARY (GTK2_CAIROMM_LIBRARY cairomm true true) + + _GTK2_FIND_INCLUDE_DIR(GTK2_PANGOMM_INCLUDE_DIR pangomm.h) + _GTK2_FIND_INCLUDE_DIR(GTK2_PANGOMMCONFIG_INCLUDE_DIR pangommconfig.h) + _GTK2_FIND_LIBRARY (GTK2_PANGOMM_LIBRARY pangomm true true) + + _GTK2_FIND_INCLUDE_DIR(GTK2_FREETYPE2_INCLUDE_DIR freetype/freetype.h) + _GTK2_FIND_INCLUDE_DIR(GTK2_FREETYPE2CONFIG_INCLUDE_DIR ftheader.h) + _GTK2_FIND_LIBRARY (GTK2_FREETYPE2_LIBRARY freetype true false) + + _GTK2_FIND_INCLUDE_DIR(GTK2_SIGC++_INCLUDE_DIR sigc++/sigc++.h) + _GTK2_FIND_INCLUDE_DIR(GTK2_SIGC++CONFIG_INCLUDE_DIR sigc++config.h) + _GTK2_FIND_LIBRARY (GTK2_SIGC++_LIBRARY sigc true true) + + _GTK2_FIND_INCLUDE_DIR(GTK2_GIOMM_INCLUDE_DIR giomm.h) + _GTK2_FIND_INCLUDE_DIR(GTK2_GIOMMCONFIG_INCLUDE_DIR giommconfig.h) + _GTK2_FIND_LIBRARY (GTK2_GIOMM_LIBRARY giomm true true) + + _GTK2_FIND_INCLUDE_DIR(GTK2_ATKMM_INCLUDE_DIR atkmm.h) + _GTK2_FIND_LIBRARY (GTK2_ATKMM_LIBRARY atkmm true true) + + elseif(_GTK2_component STREQUAL "glade") + + _GTK2_FIND_INCLUDE_DIR(GTK2_GLADE_INCLUDE_DIR glade/glade.h) + _GTK2_FIND_LIBRARY (GTK2_GLADE_LIBRARY glade false true) + + elseif(_GTK2_component STREQUAL "glademm") + + _GTK2_FIND_INCLUDE_DIR(GTK2_GLADEMM_INCLUDE_DIR libglademm.h) + _GTK2_FIND_INCLUDE_DIR(GTK2_GLADEMMCONFIG_INCLUDE_DIR libglademmconfig.h) + _GTK2_FIND_LIBRARY (GTK2_GLADEMM_LIBRARY glademm true true) + + else() + message(FATAL_ERROR "Unknown GTK2 component ${_component}") + endif() +endforeach() + +# +# Solve for the GTK2 version if we haven't already +# +if(NOT GTK2_FIND_VERSION AND GTK2_GTK_INCLUDE_DIR) + _GTK2_GET_VERSION(GTK2_MAJOR_VERSION + GTK2_MINOR_VERSION + GTK2_PATCH_VERSION + ${GTK2_GTK_INCLUDE_DIR}/gtk/gtkversion.h) + set(GTK2_VERSION ${GTK2_MAJOR_VERSION}.${GTK2_MINOR_VERSION}.${GTK2_PATCH_VERSION}) +endif() + +# +# Try to enforce components +# + +set(_GTK2_did_we_find_everything true) # This gets set to GTK2_FOUND + +include(FindPackageHandleStandardArgs) + +foreach(_GTK2_component ${GTK2_FIND_COMPONENTS}) + string(TOUPPER ${_GTK2_component} _COMPONENT_UPPER) + + if(_GTK2_component STREQUAL "gtk") + FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTK2_${_COMPONENT_UPPER} "Some or all of the gtk libraries were not found." + GTK2_GTK_LIBRARY + GTK2_GTK_INCLUDE_DIR + + GTK2_GLIB_INCLUDE_DIR + GTK2_GLIBCONFIG_INCLUDE_DIR + GTK2_GLIB_LIBRARY + + GTK2_GDK_INCLUDE_DIR + GTK2_GDKCONFIG_INCLUDE_DIR + GTK2_GDK_LIBRARY + ) + elseif(_GTK2_component STREQUAL "gtkmm") + FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTK2_${_COMPONENT_UPPER} "Some or all of the gtkmm libraries were not found." + GTK2_GTKMM_LIBRARY + GTK2_GTKMM_INCLUDE_DIR + GTK2_GTKMMCONFIG_INCLUDE_DIR + + GTK2_GLIBMM_INCLUDE_DIR + GTK2_GLIBMMCONFIG_INCLUDE_DIR + GTK2_GLIBMM_LIBRARY + + GTK2_GDKMM_INCLUDE_DIR + GTK2_GDKMMCONFIG_INCLUDE_DIR + GTK2_GDKMM_LIBRARY + ) + elseif(_GTK2_component STREQUAL "glade") + FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTK2_${_COMPONENT_UPPER} "The glade library was not found." + GTK2_GLADE_LIBRARY + GTK2_GLADE_INCLUDE_DIR + ) + elseif(_GTK2_component STREQUAL "glademm") + FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTK2_${_COMPONENT_UPPER} "The glademm library was not found." + GTK2_GLADEMM_LIBRARY + GTK2_GLADEMM_INCLUDE_DIR + GTK2_GLADEMMCONFIG_INCLUDE_DIR + ) + endif() + + if(NOT GTK2_${_COMPONENT_UPPER}_FOUND) + set(_GTK2_did_we_find_everything false) + endif() +endforeach() + +if(_GTK2_did_we_find_everything AND NOT GTK2_VERSION_CHECK_FAILED) + set(GTK2_FOUND true) +else() + # Unset our variables. + set(GTK2_FOUND false) + set(GTK2_VERSION) + set(GTK2_VERSION_MAJOR) + set(GTK2_VERSION_MINOR) + set(GTK2_VERSION_PATCH) + set(GTK2_INCLUDE_DIRS) + set(GTK2_LIBRARIES) +endif() + +if(GTK2_INCLUDE_DIRS) + list(REMOVE_DUPLICATES GTK2_INCLUDE_DIRS) +endif() + diff --git a/cmake/Modules/FindJack.cmake b/cmake/Modules/FindJack.cmake new file mode 100644 index 00000000..910f450d --- /dev/null +++ b/cmake/Modules/FindJack.cmake @@ -0,0 +1,33 @@ +# - Try to find Jack Audio Libraries +# libjack; libjackserver; +# Once done this will define +# LIBJACK_FOUND - System has libjack.so +# LIBJACK_INCLUDE_DIRS - The jack.h include directories +# LIBJACK_LIBRARIES - The libraries needed to use jack + +find_path(LIBJACK_INCLUDE_DIR jack/jack.h + PATHS /usr/include/ + $ENV{JACK_DIR}/include/ + $ENV{JACK_DIR}/includes/ ) + +find_library(LIBJACK_libjack_LIBRARY + NAMES libjack jack + HINTS /usr/lib/ + /usr/lib/jack/ + $ENV{JACK_DIR}/lib/ ) + +find_library(LIBJACK_libjackserver_LIBRARY + NAMES libjackserver jackserver + HINTS /usr/lib/ + /usr/lib/jack/ + $ENV{JACK_DIR}/lib/ ) + +set(LIBJACK_LIBRARIES ${LIBJACK_libjack_LIBRARY} ${LIBJACK_libjackserver_LIBRARY} ) +set(LIBJACK_LIBRARY ${LIBJACK_LIBRARIES}) +set(LIBJACK_INCLUDE_DIRS ${LIBJACK_INCLUDE_DIR} ) + +include(FindPackageHandleStandardArgs) +# handle the QUIETLY and REQUIRED arguments and set LIBJACK_FOUND to TRUE +# if all listed variables are TRUE +find_package_handle_standard_args(LIBJACK DEFAULT_MSG + LIBJACK_LIBRARY LIBJACK_INCLUDE_DIR) diff --git a/cmake/Modules/FindJuce.cmake b/cmake/Modules/FindJuce.cmake new file mode 100644 index 00000000..b0002012 --- /dev/null +++ b/cmake/Modules/FindJuce.cmake @@ -0,0 +1,57 @@ +# - Try to find JUCE Audio Libraries +# libjuce; +# Once done this will define +# LIBJUCE_FOUND - System has libjuce.so +# LIBJUCE_INCLUDE_DIRS - The juce.h include directories +# LIBJUCE_LIBRARIES - The libraries needed to use juce + +# Find the base directory of juce includes +find_path(LIBJUCE_BASE_DIR juce_amalgamated.h + PATHS /usr/include/juce/ + /usr/local/include/juce/ + $ENV{JUCE_DIR}/include/juce/ + $ENV{JUCE_DIR}/includes/juce/ ) + +# Get a list of all header file paths +FILE(GLOB_RECURSE JUCE_HEADER_FILES + ${LIBJUCE_BASE_DIR}/*.h +) + +# Loop through each header file +FOREACH(HEADER_PATH ${JUCE_HEADER_FILES}) + # Get the directory of each header file + get_filename_component(HEADER_DIRECTORY ${HEADER_PATH} + PATH + ) + + # Append each directory into the HEADER_DIRECTORIES list + LIST(APPEND HEADER_DIRECTORIES ${HEADER_DIRECTORY}) +ENDFOREACH(HEADER_PATH) + +# Remove duplicates from the header directories list +LIST(REMOVE_DUPLICATES HEADER_DIRECTORIES) + +# Find the juce.so / juce.dll library +find_library(LIBJUCE_LIBRARY + NAMES libjuce juce + HINTS /usr/lib/ + /usr/lib/juce/ + /usr/local/lib/ + $ENV{JUCE_DIR}/lib/ ) + +set(LIBJUCE_LIBRARIES ${LIBJUCE_LIBRARY}) +set(LIBJUCE_LIBRARY ${LIBJUCE_LIBRARIES}) +#set(LIBJUCE_INCLUDE_DIR ${HEADER_DIRECTORIES} ) +#set(LIBJUCE_INCLUDE_DIRS ${LIBJUCE_INCLUDE_DIR} ) + +# Seems to work fine with just the base dir (rather than all the actual include folders) +set(LIBJUCE_INCLUDE_DIR ${LIBJUCE_BASE_DIR} ) +set(LIBJUCE_INCLUDE_DIRS ${LIBJUCE_BASE_DIR} ) + + + +include(FindPackageHandleStandardArgs) +# handle the QUIETLY and REQUIRED arguments and set LIBJUCE_FOUND to TRUE +# if all listed variables are TRUE +find_package_handle_standard_args(LIBJUCE DEFAULT_MSG + LIBJUCE_LIBRARY LIBJUCE_INCLUDE_DIR) diff --git a/cmake/Modules/FindUnitTest++.cmake b/cmake/Modules/FindUnitTest++.cmake new file mode 100644 index 00000000..b5556649 --- /dev/null +++ b/cmake/Modules/FindUnitTest++.cmake @@ -0,0 +1,51 @@ +# Locate UNITTEST +# This module defines +# UNITTEST++_LIBRARY +# UNITTEST++_FOUND, if false, do not try to link to gdal +# UNITTEST++_INCLUDE_DIR, where to find the headers + +FIND_PATH(UNITTEST++_INCLUDE_DIR UnitTest++.h + ${UNITTEST_DIR}/include/unittest++ + $ENV{UNITTEST_DIR}/include/unittest++ + $ENV{UNITTEST_DIR} + ~/Library/Frameworks + /Library/Frameworks + /usr/local/include + /usr/include + /usr/include/unittest++ + /sw/include # Fink + /opt/local/include # DarwinPorts + /opt/csw/include # Blastwave + /opt/include + [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session\ Manager\\Environment]/include + /usr/freeware/include +) + +FIND_LIBRARY(UNITTEST++_LIBRARY + NAMES unittest++ + PATHS + ${UNITTEST_DIR}/lib + $ENV{UNITTEST_DIR}/lib + $ENV{UNITTEST_DIR} + ~/Library/Frameworks + /Library/Frameworks + /usr/local/lib + /usr/lib + /sw/lib + /opt/local/lib + /opt/csw/lib + /opt/lib + [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session\ Manager\\Environment]/lib + /usr/freeware/lib64 +) + +SET(UNITTEST++_FOUND "NO") +IF(UNITTEST++_LIBRARY AND UNITTEST++_INCLUDE_DIR) + SET(UNITTEST++_FOUND "YES") +ENDIF(UNITTEST++_LIBRARY AND UNITTEST++_INCLUDE_DIR) + +include(FindPackageHandleStandardArgs) +# handle the QUIETLY and REQUIRED arguments and set UNITTEST++_FOUND to TRUE +# if all listed variables are TRUE +find_package_handle_standard_args(UNITTEST++ DEFAULT_MSG + UNITTEST++_LIBRARY UNITTEST++_INCLUDE_DIR) diff --git a/cmake/Modules/JUCE_CMakeLists.txt b/cmake/Modules/JUCE_CMakeLists.txt new file mode 100644 index 00000000..ebe2d29f --- /dev/null +++ b/cmake/Modules/JUCE_CMakeLists.txt @@ -0,0 +1,291 @@ +cmake_minimum_required(VERSION 2.8) + +FIND_PACKAGE(OpenGL REQUIRED) +INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR}) + +OPTION(JUCE_ASIO_SUPPORT "Build Juce Asio support" OFF) + +IF (JUCE_ASIO_SUPPORT) + INCLUDE_DIRECTORIES(../asiosdk2) + ADD_DEFINITIONS(-DJUCE_ASIO) +ENDIF(JUCE_ASIO_SUPPORT) + +# Enable stack-unwinding support in c objects on gcc-based platforms. +# Failing to do so will cause your program to be terminated when a png +# or a jpeg exception is thrown on linux or macosx. +IF (CMAKE_COMPILER_IS_GNUCC) + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fexceptions") +ENDIF(CMAKE_COMPILER_IS_GNUCC) + + +IF (WIN32) + SET(JUCE_PLATFORM_SPECIFIC_DIR src/native/windows ) + SET(JUCE_PLATFORM_SPECIFIC_FILE src/native/juce_win32_NativeCode.cpp ) + ADD_DEFINITIONS(-DDONT_AUTOLINK_TO_JUCE_LIBRARY) + + SET(CMAKE_CXX_FLAGS " ${CMAKE_CXX_FLAGS} -march=i686 ") + + SET(JUCE_PLATFORM_SPECIFIC_LIBRARIES + kernel32.lib + user32.lib + shell32.lib + gdi32.lib + vfw32.lib + comdlg32.lib + winmm.lib + wininet.lib + rpcrt4.lib + ole32.lib + advapi32.lib + ws2_32.lib + OpenGL32.lib + GlU32.lib + version.lib + ) +ELSE (WIN32) + IF (UNIX) + IF (APPLE) + SET(JUCE_PLATFORM_SPECIFIC_DIR src/native/mac ) + SET(JUCE_PLATFORM_SPECIFIC_FILE src/native/juce_mac_NativeCode.mm ) + SET(JUCE_PLATFORM_SPECIFIC_LIBRARIES "-framework Carbon -framework Cocoa -framework CoreFoundation -framework CoreAudio -framework CoreMidi -framework IOKit -framework AGL -lobjc") + ELSE (APPLE) + FIND_PACKAGE(X11 REQUIRED) + INCLUDE_DIRECTORIES(${X11_INCLUDE_DIR}) + INCLUDE_DIRECTORIES(/usr/include/freetype2) + ADD_DEFINITIONS(-DLINUX) + SET(JUCE_PLATFORM_SPECIFIC_DIR src/native/linux ) + SET(JUCE_PLATFORM_SPECIFIC_FILE src/native/juce_linux_NativeCode.cpp ) + SET(JUCE_PLATFORM_SPECIFIC_LIBRARIES ${X11_LIBRARIES} asound freetype Xinerama) + ENDIF(APPLE) + ENDIF(UNIX) +ENDIF(WIN32) + +FILE(GLOB JUCE_CORE_SOURCES + src/core/*.cpp + src/core/*.h +) + +FILE(GLOB JUCE_CORE_CRYPTOGRAPHY_SOURCES + src/cryptography/*.cpp + src/cryptography/*.h +) + +FILE(GLOB JUCE_CORE_CONTAINERS_SOURCES + src/containers/*.cpp + src/containers/*.h +) + +FILE(GLOB JUCE_CORE_IO_SOURCES + src/io/*.cpp + src/io/*.h + src/io/files/*.cpp + src/io/files/*.h + src/io/network/*.cpp + src/io/network/*.h + src/io/streams/*.cpp + src/io/streams/*.h +) + +FILE(GLOB JUCE_CORE_MATHS_SOURCES + src/maths/*.cpp + src/maths/*.h +) + +FILE(GLOB JUCE_CORE_MEMORY_SOURCES + src/memory/*.cpp + src/memory/*.h +) + +FILE(GLOB JUCE_CORE_UTILITIES_SOURCES + src/utilities/*.cpp + src/utilities/*.h +) + +FILE(GLOB JUCE_CORE_TEXT_SOURCES + src/text/*.cpp + src/text/*.h +) + +FILE(GLOB JUCE_CORE_THREADS_SOURCES + src/threads/*.cpp + src/threads/*.h +) + +FILE(GLOB JUCE_CORE_SOURCES + juce.h + juce_Config.h + ${JUCE_CORE_SOURCES} + ${JUCE_CORE_CRYPTOGRAPHY_SOURCES} + ${JUCE_CORE_CONTAINERS_SOURCES} + ${JUCE_CORE_MATHS_SOURCES} + ${JUCE_CORE_MEMORY_SOURCES} + ${JUCE_CORE_IO_SOURCES} + ${JUCE_CORE_UTILITIES_SOURCES} + ${JUCE_CORE_TEXT_SOURCES} + ${JUCE_CORE_THREADS_SOURCES} +) + +FILE(GLOB JUCE_APP_APPLICATION_SOURCES + src/application/*.cpp + src/application/*.h +) + +FILE(GLOB JUCE_APP_AUDIO_SOURCES + src/audio/*.cpp + src/audio/*.h + src/audio/audio_file_formats/*.cpp + src/audio/audio_file_formats/*.h + src/audio/audio_sources/*.cpp + src/audio/audio_sources/*.h + src/audio/devices/*.cpp + src/audio/devices/*.h + src/audio/dsp/*.cpp + src/audio/dsp/*.h + src/audio/plugins/*.cpp + src/audio/plugins/*.h + src/audio/plugins/formats/*.cpp + src/audio/plugins/formats/*.h + src/audio/processors/*.cpp + src/audio/processors/*.h + src/audio/synthetisers/*.cpp + src/audio/synthetisers/*.h + src/audio/midi/*.cpp + src/audio/midi/*.h +) + +FILE(GLOB JUCE_APP_EVENTS_SOURCES + src/events/*.cpp + src/events/*.h +) + +FILE(GLOB JUCE_APP_GUI_GRAPHICS_SOURCES + src/gui/graphics/colour/*.cpp + src/gui/graphics/colour/*.h + src/gui/graphics/contexts/*.cpp + src/gui/graphics/contexts/*.h + src/gui/graphics/drawables/*.cpp + src/gui/graphics/drawables/*.h + src/gui/graphics/effects/*.cpp + src/gui/graphics/effects/*.h + src/gui/graphics/fonts/*.cpp + src/gui/graphics/fonts/*.h + src/gui/graphics/geometry/*.cpp + src/gui/graphics/geometry/*.h + src/gui/graphics/imaging/*.cpp + src/gui/graphics/imaging/*.h + src/gui/graphics/imaging/image_file_formats/*.cpp + src/gui/graphics/imaging/image_file_formats/*.h +) + +FILE(GLOB JUCE_APP_GUI_COMPONENTS_SOURCES + src/gui/components/*.cpp + src/gui/components/*.h + src/gui/components/buttons/*.cpp + src/gui/components/buttons/*.h + src/gui/components/code_editor/*.cpp + src/gui/components/code_editor/*.h + src/gui/components/controls/*.cpp + src/gui/components/controls/*.h + src/gui/components/filebrowser/*.cpp + src/gui/components/filebrowser/*.h + src/gui/components/keyboard/*.cpp + src/gui/components/keyboard/*.h + src/gui/components/layout/*.cpp + src/gui/components/layout/*.h + src/gui/components/lookandfeel/*.cpp + src/gui/components/lookandfeel/*.h + src/gui/components/menus/*.cpp + src/gui/components/menus/*.h + src/gui/components/mouse/*.cpp + src/gui/components/mouse/*.h + src/gui/components/properties/*.cpp + src/gui/components/properties/*.h + src/gui/components/special/*.cpp + src/gui/components/special/*.h + src/gui/components/windows/*.cpp + src/gui/components/windows/*.h +) + + +FILE(GLOB JUCE_APP_SOURCES + src/juce_app_includes.h + ${JUCE_APP_APPLICATION_SOURCES} + ${JUCE_APP_AUDIO_SOURCES} + ${JUCE_APP_EVENTS_SOURCES} + ${JUCE_APP_GUI_GRAPHICS_SOURCES} + ${JUCE_APP_GUI_COMPONENTS_SOURCES} +) + +FILE(GLOB JUCE_PLATFORM_SOURCES + ${JUCE_PLATFORM_SPECIFIC_FILE} + ${JUCE_PLATFORM_SPECIFIC_DIR}/*.h + ${JUCE_PLATFORM_SPECIFIC_DIR}/*.cpp + ${JUCE_PLATFORM_SPECIFIC_DIR}/*.mm +) + +SET(JUCE_SOURCES + ${JUCE_CORE_SOURCES} + ${JUCE_APP_SOURCES} + ${JUCE_PLATFORM_SOURCES} +) + +SOURCE_GROUP(Headers FILES + juce.h + juce_Config.h + src/juce_app_includes.h + src/juce_DefineMacros.h + src/juce_WithoutMacros.h +) + +SOURCE_GROUP(Core/Core FILES ${JUCE_CORE_SOURCES}) +SOURCE_GROUP(Core/Crypto FILES ${JUCE_CORE_CRYPTOGRAPHY_SOURCES}) +SOURCE_GROUP(Core/Containers FILES ${JUCE_CORE_CONTAINERS_SOURCES}) +SOURCE_GROUP(Core/Maths FILES ${JUCE_CORE_MATHS_SOURCES}) +SOURCE_GROUP(Core/Memory FILES ${JUCE_CORE_MEMORY_SOURCES}) +SOURCE_GROUP(Core/IO FILES ${JUCE_CORE_IO_SOURCES}) +SOURCE_GROUP(Core/Utilities FILES ${JUCE_CORE_UTILITIES_SOURCES}) +SOURCE_GROUP(Core/Text FILES ${JUCE_CORE_TEXT_SOURCES}) +SOURCE_GROUP(Core/Threads FILES ${JUCE_CORE_THREADS_SOURCES}) +SOURCE_GROUP(App/Application FILES ${JUCE_APP_APPLICATION_SOURCES}) +SOURCE_GROUP(App/Audio FILES ${JUCE_APP_AUDIO_SOURCES}) +SOURCE_GROUP(App/Events FILES ${JUCE_APP_EVENTS_SOURCES}) +SOURCE_GROUP(App/Gui/Graphics FILES ${JUCE_APP_GUI_GRAPHICS_SOURCES}) +SOURCE_GROUP(App/Gui/Components FILES ${JUCE_APP_GUI_COMPONENTS_SOURCES}) +SOURCE_GROUP(Platform FILES ${JUCE_PLATFORM_SOURCES}) + +ADD_LIBRARY(juce SHARED + ${JUCE_SOURCES} +) + +TARGET_LINK_LIBRARIES(juce + ${JUCE_PLATFORM_SPECIFIC_LIBRARIES} + ${OPENGL_LIBRARIES} +) + + +# Install Files +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/juce.h + DESTINATION include/juce) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/juce_Config.h + DESTINATION include/juce) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/juce_amalgamated.h + DESTINATION include/juce) +INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/src DESTINATION include/juce + FILES_MATCHING PATTERN "*.h") + + +IF (UNIX) + INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libjuce.so + DESTINATION lib) +ELSE (UNIX) + IF (WIN32) + INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libjuce.dll + DESTINATION lib) + ELSE (WIN32) + IF (APPLE) + INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libjuce.so + DESTINATION lib) + ENDIF(APPLE) + ENDIF(WIN32) +ENDIF(UNIX) + diff --git a/cmake/Modules/UnitTest++_CMakeLists.txt b/cmake/Modules/UnitTest++_CMakeLists.txt new file mode 100644 index 00000000..e1bdae3c --- /dev/null +++ b/cmake/Modules/UnitTest++_CMakeLists.txt @@ -0,0 +1,35 @@ +cmake_minimum_required(VERSION 2.8.1) +project(UnitTest++) + +# get the main sources +file(GLOB SRCS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} src/*.cpp src/*.h) +source_group("" FILES ${SRCS}) + +# get platform specific sources +if (WIN32) + set(PLAT_DIR Win32) +else() + set(PLAT_DIR Posix) +endif(WIN32) +file(GLOB PLAT_SRCS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} src/${PLAT_DIR}/*.cpp src/${PLAT_DIR}/*.h) +source_group(${PLAT_DIR} FILES ${PLAT_SRCS}) + +# create the lib +add_library(UnitTestPP SHARED ${SRCS} ${PLAT_SRCS}) +set_target_properties(UnitTestPP PROPERTIES OUTPUT_NAME UnitTest++) +include_directories(src) + +# build the test runner +file(GLOB TEST_SRCS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} src/tests/*.cpp src/tests/*.h) +source_group( "" FILES ${TEST_SRCS}) +add_executable(TestUnitTestPP ${TEST_SRCS}) +set_target_properties(TestUnitTestPP PROPERTIES OUTPUT_NAME TestUnitTest++) +target_link_libraries(TestUnitTestPP UnitTestPP) + +# turn on testing +enable_testing() +add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} -V) + +# add the test runner as a test +add_test(NAME TestUnitTestPP COMMAND TestUnitTest++ ${CONFIG_PATH} ${CONFIG_TASKS_PATH} ${SOUND_LOG_PATH}) +add_dependencies(check TestUnitTestPP) diff --git a/cmake/Modules/UseDoxygen.cmake b/cmake/Modules/UseDoxygen.cmake new file mode 100644 index 00000000..48480e4d --- /dev/null +++ b/cmake/Modules/UseDoxygen.cmake @@ -0,0 +1,143 @@ +# - Run Doxygen +# +# Adds a doxygen target that runs doxygen to generate the html +# and optionally the LaTeX API documentation. +# The doxygen target is added to the doc target as a dependency. +# i.e.: the API documentation is built with: +# make doc +# +# USAGE: GLOBAL INSTALL +# +# Install it with: +# cmake ./ && sudo make install +# Add the following to the CMakeLists.txt of your project: +# include(UseDoxygen OPTIONAL) +# Optionally copy Doxyfile.in in the directory of CMakeLists.txt and edit it. +# +# USAGE: INCLUDE IN PROJECT +# +# set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}) +# include(UseDoxygen) +# Add the Doxyfile.in and UseDoxygen.cmake files to the projects source directory. +# +# +# CONFIGURATION +# +# To configure Doxygen you can edit Doxyfile.in and set some variables in cmake. +# Variables you may define are: +# DOXYFILE_SOURCE_DIR - Path where the Doxygen input files are. +# Defaults to the current source directory. +# DOXYFILE_EXTRA_SOURCES - Additional source diretories/files for Doxygen to scan. +# The Paths should be in double quotes and separated by space. e.g.: +# "${CMAKE_CURRENT_BINARY_DIR}/foo.c" "${CMAKE_CURRENT_BINARY_DIR}/bar/" +# +# DOXYFILE_OUTPUT_DIR - Path where the Doxygen output is stored. +# Defaults to "${CMAKE_CURRENT_BINARY_DIR}/doc". +# +# DOXYFILE_LATEX - ON/OFF; Set to "ON" if you want the LaTeX documentation +# to be built. +# DOXYFILE_LATEX_DIR - Directory relative to DOXYFILE_OUTPUT_DIR where +# the Doxygen LaTeX output is stored. Defaults to "latex". +# +# DOXYFILE_HTML_DIR - Directory relative to DOXYFILE_OUTPUT_DIR where +# the Doxygen html output is stored. Defaults to "html". +# + +# +# Copyright (c) 2009, 2010, 2011 Tobias Rautenkranz +# +# Redistribution and use is allowed according to the terms of the New +# BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. +# + +macro(usedoxygen_set_default name value type docstring) + if(NOT DEFINED "${name}") + set("${name}" "${value}" CACHE "${type}" "${docstring}") + endif() +endmacro() + +find_package(Doxygen) + +if(DOXYGEN_FOUND) + find_file(DOXYFILE_IN "Doxyfile.in" + PATHS "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_ROOT}/Modules/" + NO_DEFAULT_PATH + DOC "Path to the doxygen configuration template file") + set(DOXYFILE "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile") + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(DOXYFILE_IN DEFAULT_MSG "DOXYFILE_IN") +endif() + +if(DOXYGEN_FOUND AND DOXYFILE_IN_FOUND) + usedoxygen_set_default(DOXYFILE_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/doc" + PATH "Doxygen output directory") + usedoxygen_set_default(DOXYFILE_HTML_DIR "html" + STRING "Doxygen HTML output directory") + usedoxygen_set_default(DOXYFILE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" + PATH "Input files source directory") + usedoxygen_set_default(DOXYFILE_EXTRA_SOURCE_DIRS "" + STRING "Additional source files/directories separated by space") + set(DOXYFILE_SOURE_DIRS "\"${DOXYFILE_SOURCE_DIR}\" ${DOXYFILE_EXTRA_SOURCES}") + + usedoxygen_set_default(DOXYFILE_LATEX YES BOOL "Generate LaTeX API documentation" OFF) + usedoxygen_set_default(DOXYFILE_LATEX_DIR "latex" STRING "LaTex output directory") + + mark_as_advanced(DOXYFILE_OUTPUT_DIR DOXYFILE_HTML_DIR DOXYFILE_LATEX_DIR + DOXYFILE_SOURCE_DIR DOXYFILE_EXTRA_SOURCE_DIRS DOXYFILE_IN) + + + set_property(DIRECTORY + APPEND PROPERTY + ADDITIONAL_MAKE_CLEAN_FILES + "${DOXYFILE_OUTPUT_DIR}/${DOXYFILE_HTML_DIR}") + + add_custom_target(doxygen + COMMAND "${DOXYGEN_EXECUTABLE}" + "${DOXYFILE}" + COMMENT "Writing documentation to ${DOXYFILE_OUTPUT_DIR}..." + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}") + + ## LaTeX + set(DOXYFILE_PDFLATEX "NO") + set(DOXYFILE_DOT "NO") + + set_property(DIRECTORY APPEND PROPERTY + ADDITIONAL_MAKE_CLEAN_FILES + "${DOXYFILE_OUTPUT_DIR}/${DOXYFILE_LATEX_DIR}") + + if(DOXYFILE_LATEX STREQUAL "ON") + set(DOXYFILE_GENERATE_LATEX "YES") + find_package(LATEX) + find_program(DOXYFILE_MAKE make) + mark_as_advanced(DOXYFILE_MAKE) + if(LATEX_COMPILER AND MAKEINDEX_COMPILER AND DOXYFILE_MAKE) + if(PDFLATEX_COMPILER) + set(DOXYFILE_PDFLATEX "YES") + endif() + if(DOXYGEN_DOT_EXECUTABLE) + set(DOXYFILE_DOT "YES") + endif() + + add_custom_command(TARGET doxygen + POST_BUILD + COMMAND "${DOXYFILE_MAKE}" + COMMENT "Running LaTeX for Doxygen documentation in ${DOXYFILE_OUTPUT_DIR}/${DOXYFILE_LATEX_DIR}..." + WORKING_DIRECTORY "${DOXYFILE_OUTPUT_DIR}/${DOXYFILE_LATEX_DIR}") + else() + set(DOXYGEN_LATEX "NO") + endif() + else() + set(DOXYFILE_GENERATE_LATEX "NO") + endif() + + + configure_file("${DOXYFILE_IN}" "${DOXYFILE}" @ONLY) + + get_target_property(DOC_TARGET doc TYPE) + if(NOT DOC_TARGET) + add_custom_target(doc) + endif() + + add_dependencies(doc doxygen) +endif() diff --git a/doc/InstallationGuide.pdf b/doc/InstallationGuide.pdf new file mode 100644 index 00000000..0d9087b3 --- /dev/null +++ b/doc/InstallationGuide.pdf @@ -0,0 +1,3159 @@ +%PDF-1.4 +%âãÏÓ +22 0 obj +<>/Subtype/Link/Rect[90 641.58 147.48 653.87]>> +endobj +23 0 obj +<>/Subtype/Link/Rect[90 628.94 133.41 641.22]>> +endobj +24 0 obj +<>/Subtype/Link/Rect[90 616.29 127.91 628.58]>> +endobj +25 0 obj +<>/Subtype/Link/Rect[90 603.64 114.46 615.93]>> +endobj +26 0 obj +<>/Subtype/Link/Rect[114.46 603.64 117.52 615.93]>> +endobj +27 0 obj +<>/Subtype/Link/Rect[117.52 603.64 144.41 615.93]>> +endobj +28 0 obj +<>/Subtype/Link/Rect[90 590.99 160.33 603.28]>> +endobj +29 0 obj +<>/Subtype/Link/Rect[90 578.34 137.09 590.63]>> +endobj +30 0 obj +<>/Subtype/Link/Rect[137.09 578.34 140.14 590.63]>> +endobj +31 0 obj +<>/Subtype/Link/Rect[140.14 578.34 175 590.63]>> +endobj +32 0 obj +<>/Subtype/Link/Rect[175 578.34 178.05 590.63]>> +endobj +33 0 obj +<>/Subtype/Link/Rect[178.05 578.34 204.35 590.63]>> +endobj +34 0 obj +<>/Subtype/Link/Rect[90 565.69 121.18 577.98]>> +endobj +35 0 obj +<>/Subtype/Link/Rect[121.18 565.69 124.24 577.98]>> +endobj +36 0 obj +<>/Subtype/Link/Rect[124.24 565.69 168.86 577.98]>> +endobj +37 0 obj +<>/Subtype/Link/Rect[90 553.04 116.3 565.33]>> +endobj +38 0 obj +<>/Subtype/Link/Rect[116.3 553.04 119.35 565.33]>> +endobj +39 0 obj +<>/Subtype/Link/Rect[119.35 553.04 143.81 565.33]>> +endobj +40 0 obj +<>/Subtype/Link/Rect[143.81 553.04 146.87 565.33]>> +endobj +41 0 obj +<>/Subtype/Link/Rect[146.87 553.04 203.12 565.33]>> +endobj +42 0 obj +<>/Subtype/Link/Rect[108 540.39 136.74 552.68]>> +endobj +43 0 obj +<>/Subtype/Link/Rect[136.74 540.39 139.79 552.68]>> +endobj +44 0 obj +<>/Subtype/Link/Rect[139.79 540.39 210.12 552.68]>> +endobj +45 0 obj +<>/Subtype/Link/Rect[210.12 540.39 216.84 552.68]>> +endobj +46 0 obj +<>/Subtype/Link/Rect[216.84 540.39 230.9 552.68]>> +endobj +47 0 obj +<>/Subtype/Link/Rect[230.9 540.39 233.96 552.68]>> +endobj +48 0 obj +<>/Subtype/Link/Rect[233.96 540.39 276.77 552.68]>> +endobj +49 0 obj +<>/Subtype/Link/Rect[276.77 540.39 279.82 552.68]>> +endobj +50 0 obj +<>/Subtype/Link/Rect[279.82 540.39 323.24 552.68]>> +endobj +51 0 obj +<>/Subtype/Link/Rect[323.24 540.39 326.9 552.68]>> +endobj +52 0 obj +<>/Subtype/Link/Rect[108 527.74 132.46 540.03]>> +endobj +53 0 obj +<>/Subtype/Link/Rect[132.46 527.74 145.91 540.03]>> +endobj +54 0 obj +<>/Subtype/Link/Rect[145.91 527.74 174.64 540.03]>> +endobj +55 0 obj +<>/Subtype/Link/Rect[174.64 527.74 177.7 540.03]>> +endobj +56 0 obj +<>/Subtype/Link/Rect[177.7 527.74 206.43 540.03]>> +endobj +57 0 obj +<>/Subtype/Link/Rect[206.43 527.74 213.14 540.03]>> +endobj +58 0 obj +<>/Subtype/Link/Rect[213.14 527.74 274.91 540.03]>> +endobj +59 0 obj +<>/Subtype/Link/Rect[274.91 527.74 278.58 540.03]>> +endobj +60 0 obj +<>/Subtype/Link/Rect[108 515.09 132.46 527.38]>> +endobj +61 0 obj +<>/Subtype/Link/Rect[132.46 515.09 145.91 527.38]>> +endobj +62 0 obj +<>/Subtype/Link/Rect[145.91 515.09 174.64 527.38]>> +endobj +63 0 obj +<>/Subtype/Link/Rect[174.64 515.09 177.7 527.38]>> +endobj +64 0 obj +<>/Subtype/Link/Rect[177.7 515.09 227.24 527.38]>> +endobj +65 0 obj +<>/Subtype/Link/Rect[227.24 515.09 230.29 527.38]>> +endobj +66 0 obj +<>/Subtype/Link/Rect[230.29 515.09 258.43 527.38]>> +endobj +67 0 obj +<>/Subtype/Link/Rect[258.43 515.09 261.48 527.38]>> +endobj +68 0 obj +<>/Subtype/Link/Rect[261.48 515.09 295.11 527.38]>> +endobj +69 0 obj +<>/Subtype/Link/Rect[295.11 515.09 298.16 527.38]>> +endobj +70 0 obj +<>/Subtype/Link/Rect[298.16 515.09 310.4 527.38]>> +endobj +71 0 obj +<>/Subtype/Link/Rect[310.4 515.09 313.46 527.38]>> +endobj +72 0 obj +<>/Subtype/Link/Rect[313.46 515.09 339.75 527.38]>> +endobj +73 0 obj +<>/Subtype/Link/Rect[339.75 515.09 346.47 527.38]>> +endobj +74 0 obj +<>/Subtype/Link/Rect[346.47 515.09 402.74 527.38]>> +endobj +75 0 obj +<>/Subtype/Link/Rect[402.74 515.09 406.4 527.38]>> +endobj +76 0 obj +<>/Subtype/Link/Rect[90 502.45 134.62 514.73]>> +endobj +77 0 obj +<>/Subtype/Link/Rect[134.62 502.45 137.68 514.73]>> +endobj +78 0 obj +<>/Subtype/Link/Rect[137.68 502.45 162.14 514.73]>> +endobj +79 0 obj +<>/Subtype/Link/Rect[162.14 502.45 165.2 514.73]>> +endobj +80 0 obj +<>/Subtype/Link/Rect[165.2 502.45 221.44 514.73]>> +endobj +81 0 obj +<>/Subtype/Link/Rect[108 489.8 136.74 502.09]>> +endobj +82 0 obj +<>/Subtype/Link/Rect[136.74 489.8 139.79 502.09]>> +endobj +83 0 obj +<>/Subtype/Link/Rect[139.79 489.8 210.12 502.09]>> +endobj +84 0 obj +<>/Subtype/Link/Rect[210.12 489.8 216.84 502.09]>> +endobj +85 0 obj +<>/Subtype/Link/Rect[216.84 489.8 260.86 502.09]>> +endobj +86 0 obj +<>/Subtype/Link/Rect[260.86 489.8 264.52 502.09]>> +endobj +87 0 obj +<>/Subtype/Link/Rect[108 477.15 132.46 489.44]>> +endobj +88 0 obj +<>/Subtype/Link/Rect[132.46 477.15 145.91 489.44]>> +endobj +89 0 obj +<>/Subtype/Link/Rect[145.91 477.15 174.64 489.44]>> +endobj +90 0 obj +<>/Subtype/Link/Rect[174.64 477.15 177.7 489.44]>> +endobj +91 0 obj +<>/Subtype/Link/Rect[177.7 477.15 227.24 489.44]>> +endobj +92 0 obj +<>/Subtype/Link/Rect[227.24 477.15 230.29 489.44]>> +endobj +93 0 obj +<>/Subtype/Link/Rect[230.29 477.15 258.43 489.44]>> +endobj +94 0 obj +<>/Subtype/Link/Rect[258.43 477.15 261.48 489.44]>> +endobj +95 0 obj +<>/Subtype/Link/Rect[261.48 477.15 295.11 489.44]>> +endobj +96 0 obj +<>/Subtype/Link/Rect[295.11 477.15 298.16 489.44]>> +endobj +97 0 obj +<>/Subtype/Link/Rect[298.16 477.15 310.4 489.44]>> +endobj +98 0 obj +<>/Subtype/Link/Rect[310.4 477.15 313.46 489.44]>> +endobj +99 0 obj +<>/Subtype/Link/Rect[313.46 477.15 358.08 489.44]>> +endobj +100 0 obj +<>/Subtype/Link/Rect[358.08 477.15 364.8 489.44]>> +endobj +101 0 obj +<>/Subtype/Link/Rect[364.8 477.15 421.06 489.44]>> +endobj +102 0 obj +<>/Subtype/Link/Rect[421.06 477.15 424.73 489.44]>> +endobj +103 0 obj +<>/Subtype/Link/Rect[108 464.5 169.75 476.79]>> +endobj +104 0 obj +<>/Subtype/Link/Rect[169.75 464.5 172.81 476.79]>> +endobj +105 0 obj +<>/Subtype/Link/Rect[172.81 464.5 218.67 476.79]>> +endobj +106 0 obj +<>/Subtype/Link/Rect[90 451.85 144.42 464.14]>> +endobj +107 0 obj +<>/Subtype/Link/Rect[108 439.2 157.53 451.49]>> +endobj +108 0 obj +<>/Subtype/Link/Rect[94.01 377.91 146.56 390.2]>> +endobj +109 0 obj +<>/Subtype/Link/Rect[146.56 377.91 149.62 390.2]>> +endobj +110 0 obj +<>/Subtype/Link/Rect[149.62 377.91 179.57 390.2]>> +endobj +111 0 obj +<>/Subtype/Link/Rect[179.57 377.91 182.62 390.2]>> +endobj +112 0 obj +<>/Subtype/Link/Rect[182.62 377.91 219.91 390.2]>> +endobj +113 0 obj +<>stream +xœ­}[Ïu¹m^ +ß½Ò4¿à»èÁ’í¥³”ˇÖqšŽ=ñ¸õä.pƒ`VPúGúƒ+Rk½›”´( +ð¼úðl-Š¢(Ф¨?|üç¯?\übíñåëøøé×_}üáãø’ŠýrÖÿ_¾ûˆÆ~þþý»üøæãŸ?Ì—ÿóa¿ü¢¢þéÃ_þæãw|ù‡úsóþ÷/ÿ볟÷/ホëÿïþ~ÿrÀ*A?þ™ùbý—¯_»‚­­#¼œýKzåüåëóã‡ô?úúŸ€à9Þ˜W) ÿ•ˆ·ñÃÿFÄûƒ¿‘Á©'æ'">š—ó ÿ·2>¿³Oþó=¹öo7Æ[bÿ¥„w‡íéù•ˆ7©ç8¹®“œÈàüЉáÿ\ć˜ßŠø´Ã™4ós_ÜË9†ÿ/o¿˜Lñ&¥Wí>…W6 nEx1ü×Ün^¤-p‡à¿ñ¶âÃGïÜ+y†ÿkï+>0ü¯D|¨øÈðßp|Ùa¿ÈíåU®_¤Å/¢yþ‹C¤)Ù—å<úŒO=¾ˆø\^–óô—"¾Jh‡ÿ¹„wGŽ 9SñQ?gÎV|ÒóÇÙÜã,â«:±YÏçmÿ©ˆ_þïdü@ÏOD|Ý[ÜF÷ukéÈùö[ñÙõ?ù_÷¢ÿÇ"¾ø~¼ÿQÂû#õø?ñu/ÚWñq\%~ûûî†Ëæ:guÍ3æ ¹ôŠ`0•jŠx\%'ùû»SÍŸ'mÛÚˆ½þ ìûêg:Ž«ÃjîÆÛ€u/5÷Û‡——I þ7Gӈߋt‡¯sU¾×(o,Zcßk¸Ÿ_†Óó[o=jD‚ÿ™Œ/¸‹©ùãì+3x¯°:xèÉ‘Ùã«q;Ÿ]B}¾ÿ¬âVwmo†fU¼„ïúó–áÿÏ.Å×ÐümÍþHȈf Á÷[Ö Ù3|¯’;|~•Àðò„^Ið²€]Iðò3¬lŒ×&°](þ7DªB-· +j×»~2´ck#öúûƒï£ŸGY¨,Šv¾ý÷¢PO¼..¦’_!2¸¼´š’àeΛãU÷#Š5«©¼p þ›• ä)5À28Á_ÓÂFâqöMM¶?ï)taš9Ü7§]<Îfýu¹$ñ?ˆÓÓŽz./¤j»úÀð²* ƒÿíJtäÜ cË9r)½‚›~ÆÃGÆ‘NïÏÿàóóäçð=qÚ;j„Ïvz>-·MÎ-yŸª›… ;øøòicöêÁ †'Z0 þ¨“ü]Y8 ŽmÓÚˆ½þ¾–Ì÷ÒÏÓº àm¸VúZ¬›â|±!¢Z£øÞÏ0SkúþQ­Q¸¬­¥xÙ «6~pä8¼ÖÓãWJ /ï>ÂFKñ²òÜ6zúƒe>^*Éùëã$÷aau‡±Jköþû–äY?Æ¥×QÆöS?’\;ˆiî›lÐÞŸÎI®@Š_œMx´(^6{åÀðòÔVÉ·…áU¢¯î¿*ÙŽ¹ÿªd çÏ/î=„Mí9Nu]Æí{º{QxÞHÞÇ~cß8Ço¦Ð5>¿ÞQóüõw—÷×{f‡ÇÃ7ÅËÛRp/.°²É +œ](^¶ýc]ôœYÅ žiŠ¿u aæÙs6¿ŽIû“Ù”óÏœNa>ɬ÷søÚJWõÔ|v|Óл¢8>Çy®›¹á'oRU“Y7Ї1Á!ý$ƒ™Pç.NÚ±µ{ý}+íi?õ˜ÛõÐ~èçQiG K©ä/ó²È)~aˆðRüÂãc^¼û…¹‚–.Åßk’³òœ°Þ±ç¬–Ýø¦ásý°oœã7bÓÓ$Ðpß4ȪҙWH ¿p|ÕÍÚMùühÁÃfJð²nmŠ_ØmãÑÓ,n¦jzª®?òÆx£GâLna5V+0ÝöYût¥C­4´]k#öúûV³~.‹½o>ôò¨0B=q&µ×†Â^ +—žÃï¿ðÇ/ÿÝç9›°å¹Tp£ÚnÊEá¤Ýpïï¿Ïùô çøEï Ì1¶Ýœ"„ ø¦AtÔHç(,Ÿ·ÑÏøåô¦øÅaâìþé©a,:',‹¯œ&m7g©`hº~ˆo3—~ã¾¹ZÅ=M ðMƒB è6VVˆ¯Ã3¼ì°Œu‡àxYÃFÿâ }¡03Ä¢õR˜<Ó/oÕäÌyƒülÑ£–òzz6heçÆl•ŽâÙlØ—¼/ÐIß}¸º²ËØ4­Ù WÄð¹#ð×%?i?uõäƒÅ.’&® vøµ~á~OÙ¤ø…ÿÝ¢·àey°½ /{ªA§{‚_h=L˜á9÷ÏÉlˆ)m3Ÿ-átÿÙqê Wösø¦·¢´Íœ&†ÏŽoDw)œñ;š8×Ï‹ì/­†_IýWÓü(r 9G†áåóP=;»AO®†´ß §h ¼¬W!‘ãe=  ž|p D;]Ö\äΉF<™m3ÑG‘$÷ËâïðüGðüI3¥éiߨ4óv{Sð?DŠ«2t^?‰¶ž.á­ ÙÎq@îUâ¤m¦~àg·ýŒð/œãSÄ€ÀÐ6sŠ>;¾ip"Ïj‚7H„öF¿-œh9þ¿ÉøÜ÷/ÓSí¹À7À_ˆøt`¤f²Òùœ“9©¶š´Í|ΞçèÝñ 'ìçðMÌuô“¶™Ó$ÐðÙñMCŸ„Êñ9¿Ê|mÍñ%¼ø4ŠúÝU ­¾{w¤^5ˆÓ9¥>N§ý_ÐñDð÷9OÁ9™ɼí'ìq‚H·7Ÿi†h²Ú å¤ ˜ÿºÍÚ¹µøj|Z×Ó®à@ ,ÚO]=[×U-ª3¿ 8«¿È£3Añ‹Ø–ƒ¹ pÙø­SבóyægÌ9Gfù€johç93ó â.n ð4ü·ÿ*[ª-ÏÉø ÎqPp ÅOÚy>hÁ©Ð€„†…S!£õKð §Bxur¸p*¸j~áTp8p‚—Oa±À½ ‚5>…ó)8'S‚^«¾™ç&Ľ|?Àwì|áì?høònÒÎS‚G¾ÿ—òñÂu Ë+¯‡áÓÃz¥àiŠ.²Þ;8ñ9rÌp?iç9‡žwð ¨Õ ö(v&ø·ýOi:GëôÓ…ÿÙÎó1'×3ZÃÏÛÛ eŠã¿ Î27i‡9M¢ãÒòyì¯ wø„y6Ú Çú£W<²äã˽‚—Ñ™é¼s#Ï¢A³xh‡9OŸyx'óȾqŽßg™™´Ãœ¦gnà›1KÆÆôŠÓ˜L$x1w†÷/FÛÑ)ÉY(;sÀh¸ºÿ\zõó6gÙœ“9Ém,};ÌçìyŽnàDNØ7Îá›ÎÔ¦½›aN‘@Aî§EÔ’îÀ Ø3-Ï(:G³?Ûa:€g_è…9Æ¿pŽ_txsvl‡9E ®·?Å•u;µKËY )yꊾTÄ#‚sxå˜âï4Σsä™ÇkQc;ÌyúÌè´á¡Bæ+åöXpšÎFXŒ¿í0Ã3Í7Pi¢:0ÉíÆ¼¼K­V©P«¦ÓðòÚ­&yà;©h:0É9Ïå@ ”Apr›‹N<‚¸œú£­hBùœ°£ÛJAËÄä2tNdJò0ô÷(aŸ@²)Ýî Èx­Ê×ÜÉ´ío0. ú¡†¶kmÄ^ßI¹³~0_ÚNÚýLpu˜®jE%ŽóÑ~qŸÖ¢xü"17£E@ð‹<þ€‚—óã®$z‚ÿŸ2¾`’Á&È1ÞŸ“¹H(™CÛÍçJp|v|ÓðΟ¢ß8ÇoF‹þÚ¡íæ4‰7´"ç›ìó·C‚_$ÂÜÕrz6^ö<„ØÓóéc<:'< /;6Ýœ£Ï|w;Ì"ýÂÙp¥+:‚înïï˾)Èœ +2gÓt¥<à &"ü:s–Kˆœù›#nœj ,7N‚_d¨e Uhé‡Jl6ê%2¼;zdWÈÑB´óeMè5-MýõÅ€½|Òd=xeÇöÑÚ |5n·ü¼«++tl?uõè–÷pïNånmÉ¿¯Iþ¥xMò/Åk’)^“üKñšäßžsÿœÌæËŽíc>[«ä_JC—üKhàß¼$Çö1§i•üKiÐ$ÿR¼&ù—â5É¿úþ[ò¯^n[ò/Åk’õô´ä_==-ù—â5É¿¯HþU“%ÿΖ5¹s"‚˜;¶¹ˆ®’gËâ9ðÎU]—üKhîhŒ\öÛÇ| «ô_JƒœrhùÊ®@g{†ÈÛÜüäĈۻõÎézzÂ~µ®ÅèUlžÒ ‰ÍS¼&6OñšØ<Åkbó¯‰Íëcó38Ÿ‚s2%Óši>a«ØüTHèÎþƒWvl§)A‹Ø<ý¾&6OñšØ<Åkbój¼bó¯‰ÍS¼&6OñšØüLÀùŒã ¶pöØNó^Åæg2Å¿qŽßláà±æ4­bó”Ml^½á\±ùÙ"ÅæÕrxÅægóÎytŽaÏt•1šCñŸJÑÙèmóÐí4À3ÁNiûº8˜ ²@UÛ:ò-TúC}C@ ÆÎJŽùÃã@œ|9æ_|¯£Äõગª6þp?VmYúj‰æ¢ç7øØÒ̲ätNJö]ô÷õ¿d»c®“ˆÛóIàkÃÇ„Ævhí¾Ÿ®“iWx¾ “öSWÏ®“ÚE¾Ý??”ûNȵK›ï„àÅ‚à )¿ðµ”'gQ-_µ øE=é‚'õp=”Ó¦ðÿ.{ °z7Å/ÂÍc &§ƒß«„ËÎ9ÊRÂÄ­±æ²&Äœ?;Λ›ã¾¹\*M±þ³ã›ñüe2–ƒ¥xÙÑrùÔR˜±¢–^È/¿šžËo@ðòAü .;®„ç­Ôbä‚“OJS{Èã°-«éúû*Go'mÛÚˆ½þ¾²£¾—~¦ô#=H»x¯´Y§ðE‘S,²Nñ‹x4Y§x9ŽVÕuäxÙ¯ŽX†_?ƒÃÇ»ˆŒ«ü¢ÄŸíÇ»Ð×ðPÖŒ¸ÍùNNÚ¨2ÔÚ®\mßÏùûéêyGö~©ˆT·$Š_¤¿aU Š_làg€à +ðd…/ʽ&¨)Iñ (¯¼1ÚËå¯mU'ÿ–ç!÷Ó¨ý“ÅWÅ·4¾Ãºª'¬N€Åg¯(ü+ ÞÂòþ¯Ö Cÿ„®g†üW^á½ÿ\„×#@Œ ÿ[oHq øŸÉx|ÿUÍP==¿”ñÊXêÙãCÇQ2AhªY/V|e¥m:¸xøªB“=ƒ‹Ûy9ÀB§ðÙsxÎg.ና7Á’âÊc;·ö ¿š¸Ã‹BMÓ'íçïI1ˆŽŒÍvsØij Rü¯e|@À#«|Uî|fúÕ?èvÃ'>ÊøÇGAðUÄë^@ñ½ˆA_>ÚÏ㛯s2tÆvžÏïã„ÞÀ‰´òoœã7Ûc;Ïihh@BCÙb¿ÂzÍ3œ +;©í5íx*tR˜0v?›vΣsäY¶œ§w;ÏyúÌà 8›GösøæJÙô4=Óp ?ùV·Wç7æ±ØnµÿT†—~µ÷Ûwwls]÷?‘áÎEúîáÿ þȦÓ=“©}ˆèb…}ŠïŸíðœíŸå¡%.îòqÊ3¸x‚`mzÖ¡³XmÞáŽÇãÅ/ª5báçÇ=f-ôc ”ÂÅH‡­oäd>!={ª±ÓÙF‹"ˆGoɳ[b¿æßáGpU~ª)Ö„HL@ssh_Zé†÷JÊ ”n•3áíáPµ1 :jÄc°òQI xŒ->J˽Òùµˆ‡|{Ávñ¹_Û_‰øzšíVÓoD|]ÜÝjúkÅÕ4àëù4rm ¯o)¢ZY~é:à[÷êõ䢅ۀêõíÒÑ÷/W MO´Úõ‡³ùú{Àsi½i²ØŸwć ›ú`…A¶¬çM»®ª– Ö¾LN=|t&—‡xX,zÖcà-lÐoÓK8| p‡o[ëÉ©‡›’ŸUÏ€÷®d¨¥Á{¼e¬§¿.õÌé#g>ä~%Šž4™ßvczë©¡l¸ |r%Ðó²™Ì†ôg|A^ßýêú¯2>÷;¹<¿°ÉÌ)¹·ÝE<Üѳj-©w4ˆÌ cW›]jc8½ð f·š~0Ñbu²^(©±’ÀÅu›' |åírÁEƬ5Aá*ÇH“¡x9~r<ËhyNÕÄÉ_¼r•ÐÞ!øå«óÓ#Ç£ª?œžû¯7œþŽ„ˆNa‚—Ó ¼+¶¿x•×÷ôÈ÷êæÍèÇêñ¡lÌo5¿vر˜©žœ„ÅLõÃMXÌTÏΦ(~qÜ¡ZÓ÷ ܨ^½PE8sþˆ5éáñ¤Â§÷ߊ§ÃzÚêÄQð×£¡]^è³Ù¸ÎÉÓU Ÿ¿Ó‹Ú¼šTjr\z½2´Þ¾¢^ ’ïôÂf}~m¨¸.ÂÆ`ëRQ/›~̲VÙoȼÊeGöŒ¤€^g5ýÙô[|I!'¨>¡§vê òa§¶zò„z¼^ÀQÒɾ¸¶œvù` áϨ—fȘvvƒ~‹UÔâì 2AÞà§Ëú¹uðÖg΢„—ë¶Ey¬s((~QÁ s(ÔVxa:‹VžÛhú¥+÷Û:ƒºÞœ*F¯G\òý`幪6@gË¡úþåÁ°~“~r‹Ã¨vuWXEK¤:Û =ëÜÛ0ò9´šðnc_ñP…,éÇë¯pŠöˆàmém9ÜùÞ&‘Æ->¢îÞÇ—Ýà¾/½Ú\xaðõMµZóð˜é9Ñ÷FƒìtJøR¼Z3x(É´q^ôÕ ÷aC8«AÌÆäæÒ/Fyvá6×>ÔótÜØå fÖ‘ôü ÕÀ6E/P;pÃ( -ÏÉ÷¹× 6t3lBPf-(¦65µLàâÌ‚u—\inþ)­—Ë Cࢎº¼0.{1./Œv¬æˆhš¼ìµ¹¼0/n¹ÆÀÝ% +—Oõà´‰ä€)õ̇;Þèç2çg§hNAÒnäìY8aðIŠ—“šÁô;ý4ÝÕü©{ÊÁû—í/¸öÑ$ˤ— ˆGÏPÙ+7,ÂÆz‰s^öRU]R܆€Veâ·ð±ï_öºBósQ·!¢—P-p`BFý‚±`B&½ÀÙjB:§WåPçÁý|ÙªP6ÄÊQvº_v#¹£'_>ÙÃOE/P*sü¢0TÐ˼ïdì/–êyå,3?&(kª—„µ"ÔºÇ&×ïòd%¬-¡—ýŒµ%(~áFÊh"¼ìF*ƒ®]¸‘0_I+ËîhQ]­¬9Ó¢ºZUâÀ€Ü˜^gZX»×)[½êtÖÃmWõÖâêi±ÛKn¤ø2zéÇzô\õÈ÷žëÖž7L+¬ïõ«<=ÇÆê…kõQ¾¨ßrõÕì‡t¿ÁH·Ù0%1Ýf ŸúþµÝæ ¨ùYm»pÆý9d}¯}ckçM1zùÁ{íno}o¹-’bš×XËOL¢qzõs'Ñü¿[9{Žùº’nôøÁ²oÎ`Ò —7ÙùW×o)úõ…w•7ȹ7$ÅÝÝCzå§èhjPêÀl¬FHÑÉ\z)=/>¨û/-R}ð´› þ‡c°l— …»ªlÑ[E]aQáV¯S×-r27ºßhq˜õ¸bóF‹:!·1*ÑPˆ4R´œ“1§ë^<-á_Œ'ò)úÀwK´L»]EOŠÁ×Ô´˜‚~Ê7\~ÝØ¦®÷?‘0“lÕð‚þ¦7\Ôñx lc¨—÷E /¸c¾á¢‚‡‰Mª¨ß Dâ’ZMlwLßðų¿µ½×5õŒÉíþªV|3îLZñ-æe­~ à@±jþ“”ÕÊ /61ñ•û$Ã#çÔ´÷e´´ÛVAAËvkŽ˜EE͈ YÊi«LzyÄŠÚE-aÖ·Èä.Ÿô} Ljgµ½£]èg zÚãn‡7\ö"Ä–-¢%&µd-ßVïRË é˜ˆIj6G®6d‘GP6FZwàìÕ|Ĭ½s–ù"pÑÏéàu¤^L÷(jDW‰^ÂV'hÙqO£[=-uÇŽE?R¬š¡L‡Ù ¥îÀ!«Õ&ÃP´ì_‡GÔÃ!YE¯4 ÝýH«™œzY;¸ÿkôUž¢žPäI¿x¬ñ¤]§ÞϩơN)ì¾Z³¹¨Gêë¦Çµ€œÐâ æ$¼áâXïR×»LŒwݶ$®%Ì7ñjôíM­@úP:­!{¯Ú+êY­Ö,_Øâ‰Ó§Ðõ.»Nàæ®W«0Ÿ:Úµ´—æ×ÖÎjiD%ß1ÍD=©áháC%é°î H“ÆáZ½•@nÆ&Ë'÷–9Gàr +Öö¢p‘‰Ëh;/­//ÊV?TxuL-9¢¶ÁË7#l³7 ^>½]9ZA€‡Ä²ÑK<$¯¦Çµtf‚—s:êÙ€“#ß;ªg»!÷XR…³gñø£íÈY\ÛÉ{äÄ––§æ>T`áÜ”ï™$,¤£ž,È·àÜù³•cáØÎlûÅ"ç—d,rEñr¾HiÖ-ÁË G+PCðrLþÀ‡]ÔÓ ùÞè¥ K¡l,^xVËé¥ + x«—k3žFµÓkÁ€*zÝiáuZÎ~ùÈðÝеX%oÐï›ï[»W@ ”n]¤h˜~•NP…wñNƒÁ ­vyAÊEÞØJ!å¢S‹š)±W2=¥àj~|îD­¼‹ôãuGé—#sX›±>#\&JwÁŒIàŒ·¾(¾¯¥Åáx©œÂû"L¼äbg"…Ë5 «]š +ÃË5Ò“#V€«§ë_-¤«ŠŸâÅ•XÌ7ªº°ÿæÿ.,6 +^DZ•TŠ—3 >eBñ‹ªªxÇâeóÔ¡ÿ|ûþå G¨CSޭ쯮ÿ…=u@`”âå”àÁ³Lñ²9š`¼èùƒ{Ð~cº"¾×¡‡„eˆ)^®ëžMOþ òùbE3“ñ.Šß!2Å÷ä/êG8øQüâÝ1 ë›â˜ +™â'ÛGør'ÅË9‹pÊèÙAÏ¥Y|}X«½©æ'&°n°Ó•žüÅs^òíÕÒ‘•ÈÉ—k²¼U®VVpóø(ÓY.acºª}d^ùØ” ‡RÏÿŒñD=ÿ3õôÛ//ñ]¨Ñ–²~¼îH/Î~9Gj¿0¸\" 6ézÞMQ»I¿ÁôïW›4hM‚×¼-BñŠwY)\Vâí­Š_\{Á·B(~qmÄ‚kXO><Åû—7¹ºGç nBÕYÃðòžÕž0§xÙƒÜÞ¿ìj¡Š_ìÑðv'…Ë•_ ”ƒ/<ÇXÅ/2<øãôÜ,Xx‡â墦Þ¡xñÍcÜryÿÿ{µå¾Xþ~¹…½0cW§ç¿…[ÇA/ ˜ùÀù/ïA¬RÏÞ1áò#?YoÙXì,áŠ~õZxádƒïáªuléÉo°?BR=÷>?­ç>„šŒ^÷àŽõªwô Ý NÆ¢×°£Ž—ou@ù· Ÿ.¨ºê’ž~(»ê7¶.åßøü®m¹·J›á –m#¸ûj"Ã/¬q1Jñ‹ÇÙÛÁžàwe3Új¿xϤ9^>ØCAÚÂðòÑîʆ—Õ;(~u—µ³ä‹ +g5 Á/îšâÉžÀ—Î<—Ù*I®ë~q“ÿpd´Ù~qÓn~«É±Ç™:/ŸÌLcSKç}P×J?>(¾Óÿu°'øEä3ß(^Œ|€Úq(Jµó/Òˆ –§xy™_jŠàe¹±®ÈRü¢N¢Å#+Á/¹P1ˆÂe- GNþÂÝw $xYìá챂ûzî_Jàå£P2¸ýü"<‹G5óóñ Š_¸û<úƒ^Öi-‘Œâå=±e’Qü"ßÚÂóˆ/µà½Àèõ áÓÄé÷Dt÷qqŸ;´XB-Ípö褑Fúžˆo¸þOñ _;hå *z.oQƧ~õÊáîjZ®¬ñÓyã¿xÂcð@=Þ”úþÅ'ôàû®ÿE¼ÒôëQ¦¿”žžE©Á€îh‚—+´-š¡å¤IwêM”¸S^¬^=CéÀcc½Cé@vðik½@5Àõ‚2pú³ˆ¾ï_æ¼âk6æ·nw!nÐ[ø†àƒˆ¯ë+lè+ÈšŽ\~Dýï2>¦ïö/ývä +f;©Õ³¯‡o¿1\¤~¹¬»_VZo°ÎANð‹Ãnsü"Ió´(~qxÅK ¿x5Bî4Å/¬T¬¶Fñ 35£¢UÓß<ä.†!±8÷Nïí¤Kð‹¤@¼ê@ñ ««+ë¹y9Ô ^6;›UKà²ÕYwѸ#œuM|¸²# .sÏ…mau¶³1ÁËV¼jÍé_XGÇÙè4Æ¿0:-:Œ ^6:mÆMK=\‡•'Õº’ö"ïZ ÂkÕê³÷¬Ó‚¯Ò‚¯Ò‚¯Ò‚¯Ò‚¯Ò‚¿Èå‰"øEy<̆Õó3´ð>ÁËz*¶p=ÁË.ΈUæõü Cs¿8Ý;¨.Gñ‹[ÚCUêù‚š8œ?‹ã=¾BñEV„¶ï_>ÎUEè¸|о­[jÇ‹@ÿö_—Çõþ¯Ð¢V?Xx'ŠÏ—h¾ß¡?:€•fƒpm=ré4«4Åk4Åk4Åk4Åk4Åk4ÅËoÝCp‚÷/› hßé‡$dP¼œBÐ <Š_T‡@OO~ËR¤ø…¢òýt- ÂôêÄs¡¨Ž~¼²8Cš"ï_TThá†ÿ‹¥ß’‹³]*6.>‹4£§¡øE)^N#?¤ÕóÓ£žŸXÎa£û–FHñ¢a[­,õtÁ5‹²Ã~¨­µÃþhaßRkÈQ(ê“6´\Ë8Š^=Àµ ËÅ_¾f7b9^ÎŒÖëÅŠeé•?æ(pq[TÂÄ*°¿ÎQØØì\»{ 7ðZÆÍ ž’\|Äó1^ÿuüô¶×¶‹2 ±×ž²—­.ßí/ÃvÚGžßúå%ÏäØëW#:-ý;Ái7Ä!»~u-’`EêéÏ¥_í¢¶u%ÂyâÏ’X8¯«ùÏ’¤¢_ŽõÒÃîØ&PØrÇt†¢~Cû@Õ‡n³“ bx‡4õôBáÉNù/_{íÄAO(aÓ?áuØÕ…*»å"æù„9êêÍKIîГí/ó2ø6–/”’ |¼)ãñ +Žšþ1=ýfï±:>Ü—ˆ·G¿‰ì‡CºÍeQ 1cBµ÷Ö®K¬`~‘ǯ@Rüâ‹ñcŠ_ÔRÀû4/Ÿ[à²]Ø ¿îÔ°3ªé÷Ͱ%øÅ1¹§øEâFCà4tÐééxŸ†âדº»[µÃä V¥aQ¼|‡^žáÙŸ˜-ºÑ?¤=S¸\ÁáJà wLB÷Á/䳞õÔ·B^¿¸bÑ¢%øEVXÆu¥¦¿9‚)~ñúìŽQ=ýà/áü”ý ð²ÝùpÄ çâFJÞfÈåì_Ðò‹s‘+êõ´ óÔêY®’¤_è¶U ÓÓÓJ†©:FÏÂFÿ=Kú•ѳ#é—:6§_O£]ÿ ÅÓ¢ñj~b! +_d1áK]¿ÞÃÍEµô£šâÜ_”ll±{5˜AÏM8`‚?]ËÍ«~z5ÚºzKѳëðé’\­Þz5Úöð–Zú¡c§Ýdþøé®/?Qð]Dý|…²ALħP(^>ü%Ó¿,0T83†<´ªê*0¤Ÿ,(GÀ™¹6®¡HhÖnŠoðBé_m¿¸N~yhÉ»œÃ]‚àå} ¥Í0¼*¥à—±~ùÚï^,ãr‡~‘Ò^Ý|-\®N}®Š¨É©{"D&Ôä$|®“âåTã̉Y¼ ¯ëgª`¥OŠ—³åJˇ!x9ý +*úðþeÖáwÀx¥M=X|#‰/[Ù}gb?Ø…ÖbòÁ/nC4ÿ¬V-ØöÅËæˆÃ´¿ØÞ ºûÔãõX‘P-›°³1_ïÀQ¼œÛ¯Lo°Êùðé•­/¨Ïã7ð+ªµ2¦¾¥é*ø ¼^|ÀÛº1½Þƒ0z½‰¯FszÖ´Áë[Ê ú –“߯¸¿ˆÕ[4]~QsÏãB$øÅ~žÐÔ!øE +ù§&‚—#ÆW •à1Q‡Š‡àåMÅã¦úñ^§VuÿשU͸kœ^Þµ¢‡»ü/û TFÚïuÊ%xÙ›xr ^~w"Gô»«åÜq .;aJ ¨»/øLˆž=_±£xÙ^ÆÒ»ÝVš¤Pn:Eòƪ®®¸ÌGƒ%&ÔpȲ¾|<ŲÞw쀱7ÁËîüöâW£O­’ \õa7ànAi'õ*m©ÕXÛÚªW*\2)z€¬.¿¢„Õ½4ãÓ+º½ôÕE¤ ~IBŸk’õðгØ{1ìDàò•ζ›¸¼k´à5Ë1Ï­¨<Ä<\ÞdZDˆÀ$|À×¾/F̰Îà1 ð…]À`T÷W9 …/ÌÞ‚¾êY…÷&‚š3hó&µDÚ#€7ŸÀ•µqõ¸ì¶ku=´"v•õÐòÝÚ¨æ"l¾F¿P±JãâŸË›¯—…VØ1þ³1¥Í¥î®z2%³ˆÿ„nå-Â9fgåAyº¢Wàë:1‹Ç%2éÞqŸï¾úøÃÇñ%ÕoŸþî#Öù¿ÿ ÿþÝÇ?~|óñÏùÕÇÿiµÓç +endstream +endobj +20 0 obj +<>>>/MediaBox[0 0 612 792]/Annots[22 0 R 23 0 R 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R 32 0 R 33 0 R 34 0 R 35 0 R 36 0 R 37 0 R 38 0 R 39 0 R 40 0 R 41 0 R 42 0 R 43 0 R 44 0 R 45 0 R 46 0 R 47 0 R 48 0 R 49 0 R 50 0 R 51 0 R 52 0 R 53 0 R 54 0 R 55 0 R 56 0 R 57 0 R 58 0 R 59 0 R 60 0 R 61 0 R 62 0 R 63 0 R 64 0 R 65 0 R 66 0 R 67 0 R 68 0 R 69 0 R 70 0 R 71 0 R 72 0 R 73 0 R 74 0 R 75 0 R 76 0 R 77 0 R 78 0 R 79 0 R 80 0 R 81 0 R 82 0 R 83 0 R 84 0 R 85 0 R 86 0 R 87 0 R 88 0 R 89 0 R 90 0 R 91 0 R 92 0 R 93 0 R 94 0 R 95 0 R 96 0 R 97 0 R 98 0 R 99 0 R 100 0 R 101 0 R 102 0 R 103 0 R 104 0 R 105 0 R 106 0 R 107 0 R 108 0 R 109 0 R 110 0 R 111 0 R 112 0 R]>> +endobj +116 0 obj +<>/Subtype/Link/Rect[260.93 641.93 285.37 654.21]>> +endobj +117 0 obj +<>/Subtype/Link/Rect[285.37 641.93 288.43 654.21]>> +endobj +118 0 obj +<>/Subtype/Link/Rect[288.43 641.93 327.56 654.21]>> +endobj +119 0 obj +<>/Subtype/Link/Rect[327.56 641.93 330.62 654.21]>> +endobj +120 0 obj +<>/Subtype/Link/Rect[330.62 641.93 360.58 654.21]>> +endobj +121 0 obj +<>/Subtype/Link/Rect[360.58 641.93 363.63 654.21]>> +endobj +122 0 obj +<>/Subtype/Link/Rect[363.63 641.93 401.55 654.21]>> +endobj +123 0 obj +<>/Subtype/Link/Rect[508.52 612.83 508.52 625.12]>> +endobj +124 0 obj +<>/Subtype/Link/Rect[72 598.29 117.26 610.58]>> +endobj +125 0 obj +<>/Subtype/Link/Rect[117.26 598.29 120.32 610.58]>> +endobj +126 0 obj +<>/Subtype/Link/Rect[120.32 598.29 156.39 610.58]>> +endobj +127 0 obj +<>/Subtype/Link/Rect[156.39 598.29 167.56 610.58]>> +endobj +128 0 obj +<>/Subtype/Link/Rect[167.56 598.29 193.84 610.58]>> +endobj +129 0 obj +<>/Subtype/Link/Rect[193.84 598.29 196.9 610.58]>> +endobj +130 0 obj +<>/Subtype/Link/Rect[196.9 598.29 217.68 610.58]>> +endobj +131 0 obj +<>/Subtype/Link/Rect[144 292.17 162.35 304.46]>> +endobj +132 0 obj +<>/Subtype/Link/Rect[162.35 292.17 171.52 304.46]>> +endobj +133 0 obj +<>/Subtype/Link/Rect[171.52 292.17 195.35 304.46]>> +endobj +134 0 obj +<>/Subtype/Link/Rect[195.35 292.17 198.4 304.46]>> +endobj +135 0 obj +<>/Subtype/Link/Rect[198.4 292.17 232.03 304.46]>> +endobj +136 0 obj +<>/Subtype/Link/Rect[232.03 292.17 235.09 304.46]>> +endobj +137 0 obj +<>/Subtype/Link/Rect[235.09 292.17 250.99 304.46]>> +endobj +138 0 obj +<>/Subtype/Link/Rect[250.99 292.17 254.04 304.46]>> +endobj +139 0 obj +<>/Subtype/Link/Rect[144 204.9 162.35 217.18]>> +endobj +140 0 obj +<>/Subtype/Link/Rect[162.35 204.9 171.52 217.18]>> +endobj +141 0 obj +<>/Subtype/Link/Rect[171.52 204.9 195.35 217.18]>> +endobj +142 0 obj +<>/Subtype/Link/Rect[195.35 204.9 198.4 217.18]>> +endobj +143 0 obj +<>/Subtype/Link/Rect[198.4 204.9 263.21 217.18]>> +endobj +144 0 obj +<>/Subtype/Link/Rect[263.21 204.9 266.26 217.18]>> +endobj +145 0 obj +<>/Subtype/Link/Rect[266.26 204.9 282.16 217.18]>> +endobj +146 0 obj +<>/Subtype/Link/Rect[282.16 204.9 285.22 217.18]>> +endobj +147 0 obj +<>/Subtype/Link/Rect[285.22 204.9 311.5 217.18]>> +endobj +148 0 obj +<>/Subtype/Link/Rect[311.5 204.9 314.55 217.18]>> +endobj +149 0 obj +<>/Subtype/Link/Rect[314.55 204.9 349.4 217.18]>> +endobj +150 0 obj +<>/Subtype/Link/Rect[349.4 204.9 365.3 217.18]>> +endobj +151 0 obj +<>/Subtype/Link/Rect[365.3 204.9 383.65 217.18]>> +endobj +152 0 obj +<>/Subtype/Link/Rect[144 134.06 162.35 146.35]>> +endobj +153 0 obj +<>/Subtype/Link/Rect[162.35 134.06 171.52 146.35]>> +endobj +154 0 obj +<>/Subtype/Link/Rect[171.52 134.06 195.35 146.35]>> +endobj +155 0 obj +<>/Subtype/Link/Rect[195.35 134.06 198.4 146.35]>> +endobj +156 0 obj +<>/Subtype/Link/Rect[198.4 134.06 296.82 146.35]>> +endobj +157 0 obj +<>/Subtype/Link/Rect[296.82 134.06 299.88 146.35]>> +endobj +158 0 obj +<>/Subtype/Link/Rect[299.88 134.06 320.66 146.35]>> +endobj +159 0 obj +<>/Subtype/Link/Rect[320.66 134.06 323.72 146.35]>> +endobj +160 0 obj +<>/Subtype/Link/Rect[323.72 134.06 343.9 146.35]>> +endobj +161 0 obj +<>/Subtype/Link/Rect[343.9 134.06 346.95 146.35]>> +endobj +162 0 obj +<>/Subtype/Link/Rect[346.95 134.06 365.31 146.35]>> +endobj +163 0 obj +<>stream +xœ­}Í>¹qž ߯@"û›D¶ŒèUó›ô1°>"K¶WZKN$ß Ùv È—\òg䫨ïL±ºßâCÁX`w{æ™îb±X,ëãwoÿãë·¿””¿|ýÏoßÿúí«·ß½_Jó_Þû/ß¼eç?þK?ÿæí_ß~ùöooîËÿyó_~ÜQ¿}sÇ—Ÿ¾ý꟎/ÿÜÿÜ}¡þý_>Þóù—Ïw翟ïû ÿä ?ê}ïþ‹s_¾þMýÔ})ýG{ÔNåûÛ_üÁ}çëß±Œí‹ +›K}¤4°ß³°õ œ„ÿÄ„ÇGŒü¼ù‡üGÜÇãpþ+ßeÂÿÂÄ»üé5=7LÏ©>ê€z J|Ìýs¹H´IFçbiý•‰®æ$:[hwä‡Oþ7&ÜùG˜Æù3^±Jø/M¸w%ülx|¤‰1Í„÷hAÂbÃã#L“ôCGlðœºØEÀáŒL]Ι”eâû÷LxîœÁ“#¯¢Oø÷Mx錙Dælx|¸i¤mÂûÂó{ juüú×6¾=¢ÃùÞ—ê<Ö?¶áyg¬þðj¬gÃã#OÓú k°DzÒ¥8g¼kJqü­ ïK»fXçùpûcÎLçË#ÏÌ_¸Xº–™Çkîñ®kw7¿q|ïú]d34ºGÙ ¿=¶+–‡ß &”xS߸”Ùc….—=»¬àéí'¹<‹íã*‘V°ø÷¥vÄ¿ï 1m°¿ë†nû:»nÈ~c¸Ýè+;ÂÖµCi8ùäþ© §Ç÷ ¢œý¾~9àÚÄwí è·}];øé%§ŽÒÍ ¯N7‹ ®M|?×¥åèûÁ.Õùê';¥|Ly#ÇQÙ™_²Ë-ýèÂK·Iä0"Ã/:7¾«çoÞâáøèòìÇóþ|&?Ï꾦¡ˆô³ñΗޮ6‹ä_Úî®Æ÷ ïL|)8¿¿>ýcÓÞoÆTÇŸêg?æ×c|¯Ó8ãýòÍÐWJ/Ïþž&ƒ†ªù`󹫺VqQ dØà¹®ü†æ%ßU˜WšíDQF–}–'ßÕLÌÓ9óÿý:áÜAô³¿Ÿ¯—óó¼ÊÈü÷ë7ûb­¥Ÿý=M¯i—í0Øn³òhÖKˆãÄ!ðæa,¤CËæuHH—íÍö¦ô8fúfž¾ßð8ŒOég?¯yþÞÌûô÷Ë7Wz]ÓdÐ4ßÌËÄÐu°ÚÆl>¯ŒbÓeºÊž¥ÄV 5<êŽê©Mï8¶O³%­9$7á—óZ‘nóp­ÝñP§lÛ'ã²V¹ /acWˆÀ›±kш+ƒû,Qe»²QBj*ƒ½¸mG-“vÆú8f¼iû±ó/âb»bP'ÛŸ—/GC{zÉ +ü/IKóÂk|úõ`‚úÙm–‡…Ûp8ö`þŸž=˜ÿ§k%ÿéÛ“üùŽýíá6o©Þê½zï‡ÃÃFêë÷Ø Ò=¾‘/–±f Ril½ ¸yÎëö2±RÀÍc^7mI“¸)9ͱWUÀÍ‹¡ÖôÛíp•#±žø…G°ñ™YàmÄéáxÛAZópm¹td W|²(èj¯íÂêz<΢c»°È¼™eg¥Õ9oÌÝŸ\z9Àçñ.b©Ü× væÂzæO Z>ÿ³Ï|Ѐ姯Ýì7ä³/Þ7øÓW¯7›ÿ}ùúùý _áûB”~ß²j½Ø>µƒÃc`~>ƒ°þÙøÄ1^0ýÞ±9 ÓOfÛ<^ÛÇGXŸ_‚^ï _ÓëÝÆ"\Úà·ÛÊÌŸÿbûà¢^ï‹h¯ÂÁ!ðxó×ûY}9“'PÒðôàÍßx¿~“2±ÚÍs½§é5 (i0ËP9*œPp™¢"Gäx;ƒ2Þfž˜û,§°•[9™yô~åYæ˜÷ës½çék ¤á¿>i˜¾ñ~ýfãýõ¹ÞÓôš†”4˜G)ŠÛÉec^È[¾±Ú)®¦ÍôØŽŸnίšK3‹ÞoX–íúXïúšx»åÞõW›ƒ"È €pòû¶¯€v@|R®^ò·óÍàË0òs8òí3wW(j[°c>|`w:<ßôưHòól¸ ¼éᤠ£â‚ëãHaxÛ§ÒO­j£Zø„¼~¿yìói `zò¨ +ã›~¿yíD6 9*7suSW2%>§0ö¿YØ®ú‡$ü-8¥Úæ n–¡l|·)ágÂ+f$ü‡œÒêû¦(ñ&_\?LÖ:á‹çÀ‰ÿ™‰÷EÓcãûa/Eœ=\ºp¦Ç”1’ƒÀ‰“Œý¶‰mt.”ðca´’ØøÊhõ31fU9ª/ªˆ·o_º Ô™úÅí`£½DÀíM•Šiί·/›è²o‡ºì›à‹ê›ö@‰·mzªÞP6¸ÙÅÒµ ò»ª÷3=v¡I +èʸð¸äè®RâíÛ¦ÄI¯¸´Qy…ºA?•W˜à¶é>îâ$~}6¦«f-‹r\¼§¿”x»øG〘ž³Z&L™`J|ìÜEòYHü¢¼WRÄé÷N/S|¨¼BpôSèuÀµ•‰Ž–o߯…Êg\·-»~´Tô,n …“ÂÚ“,µ6ãí¸2Õ¶>@%¶6ô-‡k'|Arøõ, öut·ÁÂÌPÓäB; ¬³ +ÆSjÕ7ƒüiäÁìlÀ“Žas¢òÏ5 .Þ½CèÚØ¾B·ÊÆtQ8¸²ìû; +¸~ áÀ•mí†33rõ² |Ñïÿ–‰O‡f¦}½–²2­—MóÒžÛœ(µ–ýÙ}率p–#>]¥P$. ÕÑu +¬ª¸¼¦ßå4ýv­ˆÖ4ývúùÁ‘°nˆGÕ¦êâ:±‹¾5Rr~ÝP%Ù­¶jû6Ñs |k¤ëÇ­„¬?`_—…¦mû>«›þ)âòÆÁ×3CíëèTèhŒOkÏòlfǾ~Õûítõnû׺!Ÿ}ý*[̾Þ$w²ß ‡Üɦ@l;Ä´òØ8–RàuÞ8äS u 89É%ºZ†‰<®_+©ï»~æ3 E E’G`·„Û7Ž©-á¦Ö¯‘ ·ãÀ øK¸]©3òñRÀ¾6”xû¦jÔÒÄß?:¡H¼}ü­PàáRs“¼AN®-˜œ®‘ëÌÛùÇaBà—¥1KÝ ?±¯JÀq×ù1‹šÖÞí¯˜pÑ$×Mš…ÍÜÏ©%JKøÂrÝþ:Ê÷)-Æ/®÷<Û;¿¨ŒÉiùølõ£\ÍÓ5Òìaþû¾xã,Ív¦ñ1<Þ(ý\ê2áü$ßM)øâåö%mƒžà´r³}I”*W6øÙ7“2¯^;“<zõ.nÙïYèzáHí²ÁŸÄ¹œ°¼Qš½oüÉ\€—‡Ìøamë —Åå§ÔÇÎôV®*ñ¶«°råP|záLJÛ2›ï(;9s>áâh¯v8ýìŠÙØL9Ó¾àâÆ™ö3~‘9ôfºpÝŒP7£G(Ó~ÔáDû Û*5îìä\Q»…=½ýt–ü†øôÕ›gzÞ’ wÇEW”ÆÇoXº™­–‹=½T÷zÛ[Ò—oÚY^-èÝÎ<±·ÄmÈyK”ø›» yK‚Ç—/{Kæ÷/¼+A«‡E°vÓËqá.‰Úv¶½ž‹¾Àò@Þ•¶±QñÃcc7âLø k&ƶµ›ÆäÙûó3qr€ÄÛÞ¹ÌÁþðÑŽ›™Ô|ß^pcžœ%Jœ™íœ&««8Ò¤pvÒÅÉÆ9œý+‡…D'ót-2Y/ßEiB¯ç¥ÄqãµõAŠ#®%Úvhp +„Ûî’BÉ´nÎSã ^õÛÍ ÎT~áÿ¨¬DÞ>òv¥œÜ„_Dtg62Þ>’v¥œçñÚáÞ³Q‚NGJoÈgªÏô/"¥¦Ñz$júÑ(Üøoâ œþœôxmù)Ž’o%~™J~Ô y#ˆßy?w¿øExLÒôØÚTipczN…§‹< ¡àâÏ… NyL(¸e?7Ù˜^ß>’º¢éYľ]GÅ“â’ËLÿÂ#“´zXä °6çè•¿h؃ó'µGÁµ­Ïž=oÇŠŒTu\Ü2ç¥àø®MÚ¼¼Ì0Ó3U]âÍ8SN=ŸÅÁvøPêùÌûuÚH¨¸…ÓFBùÃÍ]gþØÙÆÔÝ5ââ¼ãؘþÑ ÚÚXÔÌ|ƒÎ øò¥â~jwÔ!ßÊEAù0/WãÎMì^NןÇUÚ«å{ÅWmŒ}ËÄÏ'@˜þÂ=œ_îF|=˜ž:z¯Äç‚oã6 +¦¿5µCùO µÿÁÄ»C¿ÿ6>kþÛŠnÜú†/è˜ågÑ>ÁéÝhÑž¡èÝhÑ>á j°µAíâÌŸ…‡¢jz +ÇCÔØŽ£Ë9¼û’‡BY{¶G&7½„é9ã?`ù©‡¦¢Öç“»×úçêB8´<Û1Ê?ß°ž9ÿ|¯O“ލßo»(Ü¡×ËÂE‘õz±»3øCëÿE·…¬w+u¤ˆˆ·pôS•ps)Vn|Ã]dJ¸’É pSÎjÓ´›l¤ô 8Áí#o—šnŸx-J¼}'H˜ð¶Çr¿ñyu]f¢Ûx}`¯¨Ä¯š©&R²ðÜr­¾y‹üHg‰_´;å D‰·=ý.ÊÜûaÎEñ=§éY™D:RK¼íáÊœˆ·pZ>^*ø\ðÕÅ–™;¤F:âK¼´C×\iƒŸ”DºAåáÒÆéDój_$€—‡RËö„GëE ÃÚü%J1/šµò‰''pD9¬k9ÂdC»ù˜É#ñæÜ;(X˜9Ù§à‹Ñ÷Å®”¿íwVðbä·AáqúGONœÿ£'§Ä›ÅÝ)‚ÅïÌoeo?ΟZ´)°È÷9èJ_]ñ‚ï½ä*ÊÓƒN>¼Ô†¯Þè…ë7ºHña0û£?ô澨Nx9¹Øîß(¼çOàs.¬üc?Y¨ƒÝÒý”wø9ß +ç¥ÏòcG€¤L8ý©éÍzÑ+‚o+`uK29áê–z?ìLoÉú e³“²ê;kÖÚaQý ëâô·DÙb°-GÞl˜~òV©ñ.¼O²™\Ñ[©Ý㽕®]U³,›[]¢.P8ïI-WNUYÛ§gKÀÍ]·PI‰¸í{âr _F÷Ìps‰Ÿ®*·} 'ØJü"ªðñFà}A>N ¬gßÖL¿íËpt=“CÁ=Ÿ+êRZÝ„_”²qìŠÙÙ7 #mÐÝÃá²ãúþ“7˜ß·Ÿ²!øÜ¤tž,ÛSHÙPÜŽLÊuƒ“%êE»èXQ¨ + N eBÕ ^֪׭½[¤zwðx}_¸GÀÇK=(ކ/¬³á(<^r;ùYÖl¿„Kjá.¡¸&=ÎÏ5éaÑ$·ÓL½íÅ ¼©¼Á}Ê›r¸çóûQC|¯+΃ªô$¾çkäAáÓ5ò p~fn—-ñ¶×¯pGüýÝÈójùÓ•W«Ìã]'Ne\Óú~m;óE‰S~c5’W+ãóË^­Šó‡§ŽˆóŸjØìh+J´r ×Vg¢Ìrk©õkóÇsûnXþCà¼_X]q¦ÕLfÇeo6ì$ÎÌÚØM©LŽÒ'Åħ¨,Û¯’¹ +),þäÖ:2®9ìiCýPÙEÏ¢ç§ÍâÓ[)* —ºàš¥Áöʵq‡¿Ÿò¸fòm·Ç1¼~¨•Íy\f-åe)«|QÆ&kífÓCý´<.žäÖ:6æ‹ÝTV ‰ýèîûjó|ÙQXCñåEy\µáÚ“ó¸®=#Ý¡íð‡îо¹E©Ç—#5éPGv;j«/÷™Ë"9mCz(äØo¬–ÆY°0žÒ²Ž ÝÏ JgÝoîÕÜ tCR]ƒ•ÕQ‹×¼@N>iò—Ž$:k"<Γhs™ŒÇn»FÈ“€#!O(¼q`¯„ÛR•Wˆ€Ûž€c\L¼‚2"ª|Q#gDT ¼ƒsFT ü«Åeàà©zº‘ÞŽ;ÝH0=a˜ãèä²Ûiæ§íÖÝ:`i8»uàô'®c ñ‹ª=üxÛ3ÊêàóEeuò†8S å€ë*¡ìÃ?+çÜáüä~¦89ä{¹ɮ§yuÙ΀ӕ„Ž–]Ióhí¢¾zƒÃ¹CíRÆtú~ø‹óxÍà ·KÝX]”"æ7V¥ˆ…НyªïOªÇ§ÌlT“S|TÂ59µ­Ènc¬åà[*Tr-䂯t_²Ö<¶ã†l»„/E®…œ6èoÃô…Ùß‚¦Çv”\›ž/Ê?s Ÿ/.VÜpqãŠ:k‹‹ÏkËÐñYï¤öQ:pm~xm‘ã&팗7;óEŽ˜ùê;oéY Îz§¶ƒ½©ýiÝÐ'œ±6dWä-nƒû¥h#xáXáö†87û¾òÆ`·7„W{hÜÞ¦?ö:m¬ÆØwê£áôPºÚÎÎN޵ÓÙŽ€¾óªn™®ga³Ë冠ßo;>(™{ãEñEjçµIqÃÈ£\µcc« \5µ5ÚÄPí» #•rÕBÜ Ÿî|&ø_ÚN•H‰ñ﯊€WÛKÂUíqêi#Å÷uŽSÁÕ8õ1UXۉѷÅ< šyÀ¤àœ ¹Oþ¢Í]‚|*jW·c¨ã8n„¥pQƒK—MæömŒýcËÝÀ%ÜäLáfàn÷RרnJMá¤n²ýôÙ¸i›ž>_„ +±å ÷¼J8k¨r›©_øl¸ŸÄ/CÜL¿YÙ|0ac¸}+);à S7ÕŸëÚ>βðWKÉw²Óä,rÈF¸ŠÀ¯ Ïì\{T6ȧ ¶´Á~Ìr;³ÛF\=<»-+òÏþA”›g‰7íòÔ™žEÒ–g‰Àÿú7öŒ0ñ«n‘d¾Ô;íí®Ý"éB.ž%ÿÜÂŽn‘þ#Nmö$ú纣9úr.&üW&žŽ¶39vwI?ì-˜ž®Ðœß 'pá4‰×µ(T÷G®D$ñfïMj›vø™†[MàWÝ%ãÁ:í²£2É3Ü4Gƒ ·/Gö¹¸©ÌFƒ 7Uq+ì¡p[Sû©:áílÞc„NáøºG…î´ oê2ÞÇgzlÕMfóx3µÔ‘pÛ #Å\Þ÷Ë;©_‚Ûnäæ«o'ËŸÉïoỏ‹‚J¼]M sw4üýݰ~c¼9ëñ.â„GNˆÀÛWMTS¹nÌoå‚W8Îät˜?T.ÐoŒ—:&œ~®Øpz8®8áôx7ÒBþë•éâgzl‡».5T~¸ÃÂÿŸùìðx)Rxæÿ¢{åÁ–,<_1hýc_Ä …ªgîv¹!ÿ|qýC]Ú˜ß\ùjžßrpä&ªoÏæ˜ø|•Æ‘×0F3MœžÊÕ‹ññRz‘ßàV$,äÈšùc‡>’'«àëåy!„n×Ô½RÉÿ¢ aÐûéâ‰;ÈÁü !éýÑvéS$ï_òf\Ü8wÃõšy%iôM‚ù“Fß$x¼dÈ—@7uë¹=½Žx?PøéýpS‘œÞ·ci¤I¸íl8‹¥À/‚Wy›$~Ñì2ð2ÁßßX,~Ñê!ð‘Qàíæž]lŽþ¯ùiÓØÅ,ñö‘:#Ž^iïO²C¡+´Eü›Aåí`Iv™»¥ãän*ñ ÷'%K¼ä]‡E ó¾«ü¶ÃÎÆu%ðµÒ¼^ê‹Ýa1 ¼äÚ·ˆèp~²{ec¼Ô3m¨Yòß»Ê&!ÊO*¡çñ¥KôÂŒ·cŒ7oÇÙª~ÿ"p…³žqúcQ«q·r°Š®ŠsÉšŠc¶Ùêö ŸW¯íí)N +w”Í+NöÆx|1²7¦l,ÆZõâZç=ïÐÓ‚¦g‘ÇÌM$ÞtQÞóL΢¦×ÂoŸŽ]Ôk}åÂ]0`i¦´gµ¸loEÅD\·qTÌÆÞrÖ«ƒÅÃ\®¬Bò[«—únªÕ»è“pÙ‹lq;½10ÿOo ÌŸR´jËCåøxkÓv§íü;½+¿Ê \8bbMÿ]×aÇ—ÿ—·Â¦Wââ×ïoš§oΧÀ× ßœÈùé‰ü×·ßô—þøÍù-½¼ÿó³¾ñ·UxçÿïzПþ|úM;žÿO¿ù|¿™ÿf<éß8²ah,÷èÜ¥ ‰™¯¿#ãÚ“'yÓ>~?ÿñ“ÈË/c^ÑI.àO:M!¢ƒå'|‘P8<0Ÿp;°ý˜O¸}rrã*õnßÔºq“о½ŸËæ¡~8÷)·+ë/ôßÎÔn•~ʱ'‡÷S8ùá)· ›¤ ¯æWýžz¦Oò1ýàã÷—¿ŠÈå÷¶ˆPÈxº“æÕgÕï©wP™èžò‰¸¼âIùðÂö3Ŷo‘ +ÕI–L×"Yγè-ËÿĉšÅ5f~̋Ҏ¯NBòܶÃóC— YÁ>Ák˜‚½Ã´Ê±ÛÅß0Ò}îÁsqÒ5Æ÷Dbx>?ׯŸåz[ËÝÑ¿¢dwúÉ'âúŽá½ ìuGF[¹]xÀ·‚ŠILäO?øøýõOâ/€v]Q$Û6ӸÛwr”ô<É‹m´tñjÓÒXý=¼½…ÒØ$eJ· ++ º.sðvúéªä;Iy!`B?~Ǿür;CGPCµ¯.(ÃH¢ÍƒÙc¾ñ%|é~ +ôÿŸÄº‹õQ%X1ä‚v\n{ãÎëñoâgI¼NuVxnŸ ñ:7÷â·%W©ÀÛY“‰ãâ%~Y ’‚þYÅ£ÛN®eVðÙw]Aõßú¹â¥t‰[ÆÉW-º÷6ÍŠ¥8ÌC³íTª=>ÁmóŸüò<“æEyuÝŒ· ;T.ˆ'ñ‹>'£ž~‘¿Èñ^JîÕXôš~ÛÂ8¸¥›Ä? ˜…U꜈ÝÄÕÞI2J#.‘XW.‘d½ª‘ÙVe5¸ –‡È—B¨HR`Ý1ãlÒï_Ê9v¤ ¼íÛì¡ä×Êîj•J!¾£!b¹iÕ`‹XñZËÿÞ"VÒ–Ö£h½­Gþá­ç)^`CĨÓÞ†Ö£è;¥5ll?’úp«5^à‹^R¶q×%ܲa³;Ïa!¨È—ô@~_‘ ®ê1.z¤zŒ‹VÁAÍö!ûËNcGpQ•0‡Ë YŒÍájƒÎ&J-|ÈCX`zÒ¸;‡ù™¹g¬VC!;7ô/d²p3\&»î)å?F& w߯e²Ÿ’|Ùàa zh‹(ĦíRû^¦%Êþ–x;°}ý‹̪YmGu#F½öÇÕ!`þSBe½_#¶ŒQf¥2í +TÎç®õãyEð‡ÿW~å‘é;ýŒÂ×€•]¢Ÿß¼Qw³ãîÙç>Ø¿úòUlý§›çW¯º £žƒY„m$6ðÜŽ +Ilßãp.b%àÏsã<Ò÷ëÈ ßÐ^Ÿý=g^3ã ü áÏìóTWûm6&£ÓWÌwð™þ÷ëxh)§›g?Þ×ã{?H°ë•¦(¶áÔ!ý=Óÿ~3žúˆ×G?Ú×£{?ø“ÄÞõ÷˺@WR7‹éõ9O¢éP‰Ìz`fV¾ß°6‘áp}ö÷¬Éëàe®çO¼_?Ù•X»{ö÷$$œÀABÜa[À휧©XÖ§¼ß ÈÞbô€_ð ¼(,{Cåý‘: åyƒ|½ÿ|‚íÚyìËó~±ae£ÄÛµÄv$ÞÎÍ\1GâažEÓc;Ë¡é±é/^óÇv–ªé±=j•“t%~QqŒãNñ÷7vI¼™Fy«¥á@˜;A˜Š E gÝ£Ç9M}eê8õ +§§|ãŒ_höF‰œoû³µVƇ8“Jâ—˜u–·e f ô†Ûn*·ÁÍè*Dâmïc®zùÚÃ-‘Ž<8ù•«ƒâôW®™ƒ³³tC«jìgé_DJrÍx¼Ô +8n¨g*–"ÎÊ[Íiƒ~ω·°<°ªàò@n¨Ð6øVç‹PÉ¢Õ¹ÍϾ¼òÌÿ…*“›ÖÎì¶òãÍÜÑoáŽ>8ÿKÖêÄöVU¾ÀùY[œèú"—‘Ÿç×vMÓjƒŸt¹7vSr1Õ†ó3ºg&ì:2ÎLJ[ug&ù—|À;¹•BÚ`fˆ–ŽÓ +aæ‡F!%ož ©óîŽ2‰ƒ•$Þ¼—§î¡à‹‘:éî(óX­ÌÍv,ýļÁÎÂÅGaS>–Ë^´h½†õ”™WºäL-eÜÎb¡Úíà/;—YÛ1\ª6 ©iM؆D–À†¦Jî {W˜ýÉå=z\ÓôØ9½>Q@2,miç›Bx$\+'*Ö¿að ?óÙz zº˜~Ñž511ogv­Sfzì,N:±§ ¿Èœä›=‰_dNr²Ä/b`8Y§‡blâÎûeóH¼íA “¡lŒ—|¤aÂ/bl"eóHüâÀžÙg%ðviÇ¥a`~RpW6èq•šŠâôxÎ.’xÛ-ì { Ðùõz‰I¸í… œë/ñ¶Û9fM¾=½Éë嵈OŠüeØ6¸Ó1oÌVá^=¸ô7ØS8Œ^¾&vÃãmN¯ÛýÔª^-‹ØÇfÊŽñ¸¸ÇMaí%“ÀÊŸâïÕæ²3áB/ðô†À]åpöôÕè#®(ÌÄo,œŸßo‡<Ĥé_„¥P!xo'wÀüvû4ÚÖVMõ¾ÕV½¨αŠðb¡ÄÉ4wYÀû˜ñ‹ÄÉLA>øxikßÎÓ€²'\ž&‡æH;ûÌ»JV7áSÃÇKþ€âpÝCe©ê†ðSY*¥km~Çùm)™W¾1rUœþ¾U+KÃæ_½qC<©ŠUÚ`ON´§Ov¬R?Ü+Åo;ªêEqÚ¾¡ZÙ±ˆnD‘ê\R¹l¥JÇcŽçƒ™ŸŽ¼µ¶’ó‚/-ªH¥Ì˜E‹ÙÂ~WtßJáЇEÏØ¬—ÖúÄ;š]­× õ²ËyÂÛwª)ð:øeXUéYœ9kBâMY£®X‡›ð‹;ðÆ—JðxË02ÞöÔqé ð¦ðPm¡ºÁJ*ñÞ.cÕ¸™*<]Tqvò9àâÆI+8÷9õÄm︴Ä/ÎÇox~Q*(±€J'%˜Ð® ³“âŠâBåŽÀÛ'Æ9¢Cà7ΔMŒ“ß•CLì¤M·lLoWyf¿]ºˆn´7”ßhç i.•/A`þT.T ¯^¾¯ülA­.ûüz^hÃxçôpí Iº Ž¸tòuÆÙIµ|ê†6¡lµz«’^½ <ÇpÃâÃ^‡k+>ðÎï·cöçH¼}dL…/ðáñæã7–çaÌóky ·i‘xóZ‰R‘}7–ú¹q-<íà:qe¼xã,ÀóeÒ5Å™›ãH¼±ìGP˜Àÿµç2ÿcŸ´ÞÎpîRLAd˜øX5=6ý)±ÓOw&3=ºÛ²ÂsŸK‰×Ýœ•…ÇÅ$þomüPÊÿŸLüh~ôwBZJàÕ&=k)ÿ½3Æ[æˆ"ñªEáÊÆ·WSsg]¦YÔm‡ò1'¯Dñîz„6„W¢x5Ï<å~¾Å+~(xx¼T üµ$Þ\w¼ë)çÕ»M©ò´Jý-þ`ÈË|Ú4ÒÄÚ&oâ4„éÝÎäÍ#E•FŠwÜFjª–6„‘r”w„±{9lc7öÊŽ0R„}Þo_ÜÁáÒH·'ÕáI™Âêýµ´Î²= k²i‰ÿ!$ñÔ㈸ēÙçþC$ž B·¡©ä†pï†úå<Þ ‰§+°¡~ùJcCâùJcg¼¥lˆ{ÕúÔ–ö:›vµ¦–ô>c;t¯MÈEKŽÄ÷Þ7&ž-êñL$ŸRI€0ÌæWÙ§[úïòá›7 + %óâòœÆóŸÙ§·¯z¦J^ž_½êµ§ôs4Xú©ÀCù§8~$  +¼Î@ý`…ý™XyyN÷ÜYf  +T‡rPoðóÞ¯C:³+/Ïé~ÈË$TA”… +ãGê |ÂûÍØrÒé~ÀË©ÞKŽìÌÜavãâI1 3þÉ6»#-pú©è¼~íû‘ÊI8ÿk~(ý¿0hùqy `ÍYÞA#… f‰··TJ’8=”$.Ô+ %\‚'ÿ ¼¼k&\èò \èò o,Gº"ȳøØÖnìÛ×·/MúêmWn\Š3nß­£mO»»Û¶~hVÒfã«×«kQf3R |÷ ëHâ jAdË5¨™Õá"ÁkscO=ÓC7 +jw_Ôå,Úz°Û;{î¢ «ΓH8ÿ¹ç9”V‘qíûî~lhÿØwwpíûiR'vIâÔx=ÆÄ©¿(³µõ°L•86ŒIJ•H W·±4:Gâü¯^[6ÿ+‡èÁú66Ñ×KËtSë+®„0ÓoÏ\Ù àú?9§·ÇEeƒ õ§ÉŸäÙÙË[òY¯—e®ð\t!åJyÂÛGµó(.ð‹ÜŠqxsñº<cgn/!ñö¹½pµ%‰_¤ú¼Qü"Õ?óF3¿r~%N…ÅMp»{_ZI8ri%ñö!ðàÒðlQaÚ'PnR"ÜniwóÇóŸÏ—ûW¡×çW¯z½¿}ŽŠp‘x$ÂeÏ.¯"\>Y¡G?¢6®Ïñž;«Iá"áH„Ë~ÂûuH#nãúŠp‘4 .8ž#\îàóÞo†Ä›¬~Œ÷^E¸H +æAÀôAºì­þæ9Þ´ˆp‘ß_$=zV¦¿ììå*>!g„‹ÄÛ(ÔØ³mÐÓ¹ÑáëÜZ‚¿èóÊulp~Rã<ÿ¶±FµvÆKeæñÚç£ö Ä/\Ø»ø~Q(S”ÄÛU™2gàóÕmGÞ¨oØàgå¸c|~)†ÃÝÊϼ‚ßoV4‡g\ŸãýŠwò^uÌü÷Ë7©=Ì.Ïñž&ƒ†øIÃ"bŸËÂr5B=îÔÆ<„÷›!qÌÅõ9ÞùõýüxÝ/ço¼_¿É—ÇxO‘AÁ ü¤À´t)éÔÍÛI•Áóý4<‰KªÝ ÿ4â÷+8/ðúod„„ ÜUðç/¼_¿¸°~5E 'ðj(¾¸µzƒµÃ6R?M´Û÷/Nt8 ò ªùÒkÛûŒ…m<¶!ðP؆ÀCa…m<¶Ó†m<¶!ðP؆ÀCaðûϰ ÇÂ6Ð x†m  }†m ñ Û€é9Ã6 +Û€é9Ã6 +Ûx$lî¶!ðP؆ÀCa0=g؆ÀÛg‚n“ºñéçè4‹Ã¯l|å‹_t„ušžEmËøØXŽÔõµîHO š¶tÖFut`uâû‘6ã³E•*ËŒ_apAiX;sІÇÙFAixvƒ§d;xr©fšñöþÞ¬¹à‹‹m® ]H&’ÒvIäTc|¼•‹Ïn?&¿1»é¢jm–‚6féYäij-~ˆ½iœÈ,ñvL ÅxøÙíÇÕæ7„¹]Tí"ă;¢ÁºJ[º„—JUúYúíò~Îsˆ +JtI/v»Ôc¦Œ‹gô‘¯m`þ„ᶆM«’¶Ý½.*Ç\ÁQó<|yEÚªýÆ|%nÇ ¯*m©ö";F¥ÛÔÖnwsÈܾggßÚ‹ÛÁ_6»ïšøz<æsÚ|­xÅWŽ‘x3››b0Ôz´¯S7µãÆãƒ#US@.Æ"Õ-hûÒ}ô+pS“œí +ܾߡ3c“ðEiEnV à‹`àM¥n5Š„/ê6rS_D;p‰S·#5úaÎᜡ³YpðPýѨ ¨€Ûúª*¶•Of–1ê!à`™¡äNû„Ûý· pÛl·¶Oøâb!p,4ʘnÖ¹i¨¶[žZmÐN· +—ª–ƒ³}´pûp>: À|¤ÃXÄGJ!ô^ªÜf`‚/î«R3‹.‚N)»*PçZ‘Übž%޵Ï0étÊ ÓÛ‡<Ïû*¨C7û<Ì—Ð7»™ûFQù“ÄØ'ê”aã ûëSª³8ïc‹FŽOƒ  +£ÓWt8g(L+à"C5+.2¹q¶Ê÷’”ÈØ.iö¸„U§¶íé+uÞƒ +›m íÜP·N¨Ÿ€OðÚãŠ=øŽMQõžÔ袢Å>PH=n)qD=¾à·¾ðP#·ÙCW…ÇãÆõ ,)%Gãf‡Òã6!ʇOj‰ŸpûLYŠÚ±íGT€:Œ¢â+¾Ÿý P»ŠbèÛÆ4ÑŽa¾§¾cÏjcѰðaœ¦tfÇJ‰ýÍ‹Éîàƒ2Pí¾ +ž»… ø²Ünót뱞Òv|)|Ê&è:„ø»ˆðu\XMÀíRµ]uõŸ¸]©¶«.ï%Ü. ;¢‡ÜÈ|%à §@&'¯€ÆgF¼¼´¦°Î‰§¶G||‘„éžïOoýù%O¯ð¬˜†ýÒuî4ˆ¨ß¯Þ~×ÿ¸tñÎ/ùæ-;ÿñ_ú9E&üòíß:ò«·ÿ×—Õ +endstream +endobj +115 0 obj +<>>>/MediaBox[0 0 612 792]/Annots[116 0 R 117 0 R 118 0 R 119 0 R 120 0 R 121 0 R 122 0 R 123 0 R 124 0 R 125 0 R 126 0 R 127 0 R 128 0 R 129 0 R 130 0 R 131 0 R 132 0 R 133 0 R 134 0 R 135 0 R 136 0 R 137 0 R 138 0 R 139 0 R 140 0 R 141 0 R 142 0 R 143 0 R 144 0 R 145 0 R 146 0 R 147 0 R 148 0 R 149 0 R 150 0 R 151 0 R 152 0 R 153 0 R 154 0 R 155 0 R 156 0 R 157 0 R 158 0 R 159 0 R 160 0 R 161 0 R 162 0 R]>> +endobj +165 0 obj +<>/Subtype/Link/Rect[144 707.53 162.35 719.82]>> +endobj +166 0 obj +<>/Subtype/Link/Rect[162.35 707.53 171.52 719.82]>> +endobj +167 0 obj +<>/Subtype/Link/Rect[171.52 707.53 195.35 719.82]>> +endobj +168 0 obj +<>/Subtype/Link/Rect[195.35 707.53 198.4 719.82]>> +endobj +169 0 obj +<>/Subtype/Link/Rect[198.4 707.53 230.8 719.82]>> +endobj +170 0 obj +<>/Subtype/Link/Rect[230.8 707.53 233.86 719.82]>> +endobj +171 0 obj +<>/Subtype/Link/Rect[233.86 707.53 249.76 719.82]>> +endobj +172 0 obj +<>/Subtype/Link/Rect[249.76 707.53 252.81 719.82]>> +endobj +173 0 obj +<>/Subtype/Link/Rect[144 622.15 162.35 634.44]>> +endobj +174 0 obj +<>/Subtype/Link/Rect[162.35 622.15 171.52 634.44]>> +endobj +175 0 obj +<>/Subtype/Link/Rect[171.52 622.15 195.35 634.44]>> +endobj +176 0 obj +<>/Subtype/Link/Rect[195.35 622.15 198.4 634.44]>> +endobj +177 0 obj +<>/Subtype/Link/Rect[198.4 622.15 220.41 634.44]>> +endobj +178 0 obj +<>/Subtype/Link/Rect[220.41 622.15 223.47 634.44]>> +endobj +179 0 obj +<>/Subtype/Link/Rect[223.47 622.15 239.36 634.44]>> +endobj +180 0 obj +<>/Subtype/Link/Rect[239.36 622.15 242.42 634.44]>> +endobj +181 0 obj +<>/Subtype/Link/Rect[144 571.56 162.35 583.84]>> +endobj +182 0 obj +<>/Subtype/Link/Rect[162.35 571.56 171.52 583.84]>> +endobj +183 0 obj +<>/Subtype/Link/Rect[171.52 571.56 195.35 583.84]>> +endobj +184 0 obj +<>/Subtype/Link/Rect[195.35 571.56 198.4 583.84]>> +endobj +185 0 obj +<>/Subtype/Link/Rect[198.4 571.56 231.43 583.84]>> +endobj +186 0 obj +<>/Subtype/Link/Rect[231.43 571.56 234.49 583.84]>> +endobj +187 0 obj +<>/Subtype/Link/Rect[234.49 571.56 250.39 583.84]>> +endobj +188 0 obj +<>/Subtype/Link/Rect[250.39 571.56 253.44 583.84]>> +endobj +189 0 obj +<>/Subtype/Link/Rect[144 519.06 162.35 531.35]>> +endobj +190 0 obj +<>/Subtype/Link/Rect[162.35 519.06 171.52 531.35]>> +endobj +191 0 obj +<>/Subtype/Link/Rect[171.52 519.06 195.35 531.35]>> +endobj +192 0 obj +<>/Subtype/Link/Rect[195.35 519.06 198.4 531.35]>> +endobj +193 0 obj +<>/Subtype/Link/Rect[198.4 519.06 224.08 531.35]>> +endobj +194 0 obj +<>/Subtype/Link/Rect[224.08 519.06 227.13 531.35]>> +endobj +195 0 obj +<>/Subtype/Link/Rect[227.13 519.06 235.7 531.35]>> +endobj +196 0 obj +<>/Subtype/Link/Rect[235.7 519.06 245.18 531.35]>> +endobj +197 0 obj +<>/Subtype/Link/Rect[245.18 519.06 274.51 531.35]>> +endobj +198 0 obj +<>/Subtype/Link/Rect[274.51 519.06 277.56 531.35]>> +endobj +199 0 obj +<>/Subtype/Link/Rect[277.56 519.06 319.15 531.35]>> +endobj +200 0 obj +<>/Subtype/Link/Rect[319.15 519.06 322.21 531.35]>> +endobj +201 0 obj +<>/Subtype/Link/Rect[144 446.33 162.35 458.62]>> +endobj +202 0 obj +<>/Subtype/Link/Rect[162.35 446.33 171.52 458.62]>> +endobj +203 0 obj +<>/Subtype/Link/Rect[171.52 446.33 206.98 458.62]>> +endobj +204 0 obj +<>/Subtype/Link/Rect[206.98 446.33 210.64 458.62]>> +endobj +205 0 obj +<>/Subtype/Link/Rect[210.64 446.33 228.38 458.62]>> +endobj +206 0 obj +<>/Subtype/Link/Rect[228.38 446.33 231.44 458.62]>> +endobj +207 0 obj +<>/Subtype/Link/Rect[231.44 446.33 289.52 458.62]>> +endobj +208 0 obj +<>/Subtype/Link/Rect[289.52 446.33 292.58 458.62]>> +endobj +209 0 obj +<>/Subtype/Link/Rect[292.58 446.33 307.87 458.62]>> +endobj +210 0 obj +<>/Subtype/Link/Rect[307.87 446.33 310.93 458.62]>> +endobj +211 0 obj +<>/Subtype/Link/Rect[144 373.6 162.35 385.89]>> +endobj +212 0 obj +<>/Subtype/Link/Rect[162.35 373.6 171.52 385.89]>> +endobj +213 0 obj +<>/Subtype/Link/Rect[171.52 373.6 211.27 385.89]>> +endobj +214 0 obj +<>/Subtype/Link/Rect[211.27 373.6 214.32 385.89]>> +endobj +215 0 obj +<>/Subtype/Link/Rect[214.32 373.6 230.22 385.89]>> +endobj +216 0 obj +<>/Subtype/Link/Rect[230.22 373.6 233.28 385.89]>> +endobj +217 0 obj +<>/Subtype/Link/Rect[233.28 373.6 247.34 385.89]>> +endobj +218 0 obj +<>/Subtype/Link/Rect[247.34 373.6 250.4 385.89]>> +endobj +219 0 obj +<>/Subtype/Link/Rect[171.68 248.26 226.12 260.55]>> +endobj +220 0 obj +<>/Subtype/Link/Rect[226.12 248.26 229.17 260.55]>> +endobj +221 0 obj +<>/Subtype/Link/Rect[229.17 248.26 244.47 260.55]>> +endobj +222 0 obj +<>stream +xœ}M¯u;rÖ˜H„0GzG@P´³üm3Dén¡»oÒnHQƒZwGj&Løü~®òÚ甽Ö.?…è»ò>Ç»\.—ëËå?|ü»>BþVRþöÃ?|üä‡_|üáãøVšÿöìÿ{|ûñ#;ÿù¿ôÿñã|üúã?Ü·ÿõá¿}ßQ¿ÿpÇ·ÿðñ›ÿz|û‡þçîý¿ÿùß?ÇùúË×XÇùÿ¿Æûÿ_ú£NÐ_üÔsîÛ¿ëCÑÿµç;G{ÔNæóã_ÿÑÿþ³~OÔò_=2ý‹‘!ôƒ_ÿýã‡OþQÝõ³òç@Žÿ&2ÞⲄtý¼å~çpç¾û«s÷àt<ˆkÿk®XðùáÄÿÕ‰Ÿ¦ú¼Ì¼¸Gò×ÏzÇ—÷¼øôõóÿB%7§Ç̽®Ãë#æ[üDÿó2–¦É¾>ëÝdßÏîkÐ×Ïÿ•ÜÒVru|- 7^ð‰þçu:õ/_õnªïçö5äëÇÿôóÇ¿†.?æÃñ¨—¯zCˆòËu™õO5&ù#<ÚÿO*Ü…Ç1o ¿Ôñíáê„ÿ*ÞÇGžñ??ñ’7Ï §á/Ÿõ†o9÷5äºdÓðÏ˯Åö(7ŸõŽå×?}ýü/UN…öh3¹«âcxäY0¾MONày™z2,³}?½¯AW]³?Ó2í&?Ÿioþ®ìâ'üæ°É:ÿ×:¾s¬Nø¿ÓÕq|”ÿOt|Yéù¹®?ûVOþ7[}› ã×ôHe«ªÇ5GºDâÿ^Ç—‡k^=¼ýq<üL¿®«Žü“°}÷]·ùGœ×ëot||´€óÓûΟˆËéN‡‹§÷ù‘".ž>x9!-䨫ë£{xo 'æu÷êÜ$½5sÿg:¾®»EŸn·ÕgÎn«³´éú¾[KΠ|‰ Ò_Uúõõªù‹a¾µ=R0Ì·óÌÕ2 G¤s žopǺUúC·|ZÅå-øcu¹‚ïžI6Ów¯ŸÇW¯Ðwo0(ŸêªüuúûöM3=ßëøòȆíºçVfqþ…ŽgC¿oÇeyUs*äFæ.n%‘ýƒ¯o©«8«Ú<Ô®> ê$tç(T?[xÄf‡ÖO—„Óÿȳ:ù÷:>­ê_¥'vu1®ïÊ£Ö7öÃwQ窣}W‡ùŒý4ÍÕÀŸ¾KÀå'ÆËñ¢3‘Ü Ãþdÿ¬˜Òz|ý‰ŽïˆA>cvä ÃÆjÌÝøO¸¾Å?Z1ð§ÛG3ÐSã#5ƒ¼µc_çOßï.ä­ïwo÷Ô·{ð¸ºMÇE=ë¾9‚Ý¢)0õÎ(¢ÄëŽEçñ¥âGŸâre«ºÙ•! ð| è ôtS¯z=ͳîø#Øç;ãuÏ¥;vµáôûcf¦îWt¯n^+Uïx—X ¼n–»ÊzSàu³¼Ÿ+¤ÇQÞs+á²àCf=Ó»ñ†µŠ~•å[Wlô$·Ò£»!©ŸÓu«zÜçãaP ¾ÁÈïfd˜§«Çº›A|ºY˜¾}7 ÝŒ×ãµ}«/ãÿ3ßU§a¾Î‰y¾ºYÛͼäðí\\·ãÖ«+__rëªün¶™õÔ%¯Î²[BßíǬMT+½À‚ïöеÃB¿¾¼}·/ôèü¡üݬÝÔ“—¼ÀEܶ^à"nºøP + Wn¡\ó„V«dãѵÕ*Ñ=̾uý<×ÿ«ãã*úºOáWÃV‰GXéÑ-`òèf¼jBF +×fœŸ±ŸÔ©æë/'ËßÖñUÕC0Y14è¡{<À™Ý᥃ÚpðÆnd/ªJw(è 6¨†ØêE5èâX^/¾:XœËEÕªª0V¿Ò¯Æ_c­«jÓüv1úuqhU«’±]TíÞCëÖ’÷ˆuzh¯..ÕyP´GàUá¡T]›àºÃÂu¾I¼q¡ƒÄë‰ÀRئ…ñ]t–ñÿTÅ“šêvs®À:µã[Ý( Œý£ÿ#±înà/ðwYwÏ)Ä ÿoU¼?ÿs?"~ÿoT®t EÈ~#ÀÛ +ÿÇ'žj­ò6§»nKÓŸê S^¯|I…½ßfªÛ¼¯àýÁ·é"GQOñ‡¿ýúK£îe¢÷®B-“Ùü*.;?¨Ö ŸàþæÛï>?^ej÷C½B2—ïwC½×a_³jÕ$©U3à¹VMâ—Zµ/V¬³?ÔåÛßsgW°&i +Ö$)X»ÃÏSx^§4 +²®ßþ~Ê»ª5IRµ†ã¹jí>Oáy3¥úˆ×O?á]隤`.]L?è»oÝÍ·¿%hSÁ&_qÌ_ïÈ^`¹Èn‰ÀÖMM~Þ0 °÷|ùö÷ z_<õ^—dþçõ7O/àòíïiRh8_4èùûÓ½x½>Ü›tÏçiÏëœ6çÂ:g¥ï^õËæ¤c+ÌÇÚûSã Œ© Q˜QâÿJÅGšÄÿRÇWb»ÄëÅ`1‘ƒ)ñ›°z¥0¼Ä…Õ½k]w-–}IýëgÖ{¯œNã6 ¥* ×ã8³bã;w_{žšª0\žçµ)lë:ê¶Ufÿ^Pî²L¹¼”«ç(ßþVP®øöhîVP6Á”Æ™ÓiæÛ¤Bê¶K·µ¤Aü+p~Ð}Æð¸ýöãÛÉWRá~¨3ú}ý~7ÔÛ𘠔Tx$©`ÀsRAâ—¤Â+ÖÙ@ùõÛßsg—T4I G’ +wøy +Ïë”F¨üúíï§¼K*H¤Žç¤Â|žÂófJõ¯Ÿþ~»¤‚¤`N*¦ôýxŠáæÛß´I*ÜÉñ›0[\D×¾Þq],¼±ø"}Å7:]¤Ÿ‡ßDß¹rÿR¾3GŸ7Žä¥]¿ýý +(ÑôÏ×5ŸãyýÍĹõë·¿§I¡ás`Œo‘ ß\ªdKügÒbšÂófJú¹³Nùý¿^õ×>i‘²# KZ0”´x$i!ñHÒB⑤…Ä#I ‰× Çr¬ôèô÷E]ø£Žtp¦G/¢‚ 7áÕ0£«|)”ŽJüÆ6m…mGtø†‡A ü¨…ÂÚQœçVzô<ÝÌzF¨Eâ7YµHüæ–GzÃt)r’pù$5X‹AXgY"å ü¤¼ÈŒ×‹èv_1È]Û˜7˜ž· kÁ0ßÂq‰ß\®wä+I¼~ÌUŽûãô´‹Bׯ‘4.E„Šo=iTþÑqíœg efp‰}$˜ïVå³I¢D¶…az<ïèaB`Ó&?ðMvœüèyž®žCé{ýåR¢N8úfOÍÀ ²ð½úá^g~n²(™Š)q~Ö×´¡fºŸ+ªPG´&¾E +¡ ]òXR=Æ~p̦'mÝ+›J¢„/|PPJ¤"¾ä1Ëæ&‡RØÍC…s"¸Þ¤”H5èqºÒæñ7wB<åÛñåÜ„g¾ ìI…Ê;$^Ï¡dîªë˜/ŽÅ&‡’Õ¬K[íÓÅUì§ôá Ü¡+ÅIwöÝLÏ>ƒYÙb”nu68ƒòþî_í2(¤_^OXx϶ŽÀÿFÇó½‰ßdhB¤UøïUxtìl üÏu|¡4¦Äë Êb¤ ¯;»}O‘³(ðð=†.9d)‰?ÕP=B{¿tW¿7PÝëÛ¥»ó“›S–îêøÆõÔãÅu;˜L“wkw—ÊÈ÷k§Çfüá©]Ð4“}¤¢a“¡žðJ\Œ?Bß"Þ]¿]ß ~}|æ@n‡zë×ï·C½6}ÍË<”Áñ#"ðkä“ëìϸþúýÉ…;Ûˆ É8”¹ÁÏSx^§tFö×ïÏ).SÞæ@ PÆÈ |žÂófJœ;X>?'¸Lx›,9/¦ôãfñåû‹‚‰ ]Dü>p±Þ&T™ÜæõØ´×c +ã>¶Ä¿ZSÌ zÞ0Œï§]¾_[ª\‚ˆ+Í_1äo<¯¿9BpËç3E +ç°_lúÁðµ +‰YüEÏ 1Q©Ìåû“âyJf j¢WèQàÿÛ‹Þ‰¢ç•Bjƒä®ßŸ/3PzŸѰ©Â ×£‡£—¡ÄëM·»ò· ŸG‰¼qóªôX]ñT~GμÏ›)X¿?WhY±÷+ôø*Uóo]¹ªë¼+gº…ÜŽstµu‚뎩Â&ázÅbJd™¸žè¡D’—ðÍݘBv†€o.—¾i§ÝÈÆðM÷µH­É\÷èÈi8gº +ô#÷þG‘ðmF—„¬ ÒÕŽ×a§x›Ñàïª +]‰ÿ…Š]‰ÿkÏã$~s…®Ñ>•ø¢â»št|“Ðå’n‰ÿ;_)ž‡“ŸæÁÿ©®t+õ-þ.`Ðu‘Äom‚ÿßæ£üP™†ÚeGVAï¤äŠÏt¸K¼®â¨Èz¦G%P‘u{/å×ϵ48ý¤)Ò{1¹SÁYðC‹¾ó+~¨Ñwb~ª¨zºquD\r)Tó-^rKýyáö¹øØ7mÖŸáí3{NÿEqM.†Z>Ê™4ÿõJ¾¯{懗ëß¾7¾è…²ídÛ xζKü’m?ç>Íx䎗²òb—^—? +¤×%I¯ßáåÏyœO­ëGY'¸Ë§ËÕõÝž¯ë'º<óL×O•^ˆÁå€Ú™'žL7á7¥9•b1¿Ï†‡[zÄJ=—eë»8Çõ£¬ ú>Çô9Øç¾Rbèçò;¾²ù2”•‚÷?ú9Øçnó™¢w;ö"öYC~âéÏet™0®e¡’7 öù£_—?‡~.¿CñC¿~”•ýd4ÈXàÒq‰ßÜV ÔðÞâôõTïˆ_ã’¸w¼}æRE‰W«©}æREœ?Ýñ[TÚ&µÍõ‰¿iGÆõ‰wó¢ó\äˆú–Ôõ£¬ö^¨>»Jò×ÐÏùwÂQè‚ÓòQV +Þÿèç`ØáÀÑpAàÇ;ïAùs™Æ[{išàûôðç`—SY7Ù¾ ‘̠ɾ{o\}¡ô°Ä#éa‰GÒä‡%IK8í!畞Mn{$ ^:®ÔÕôÑųFŽ›—ò@Î nô öŒ×/ÒƒÚç?§f8º¸YéW3MÑEº© +‹¿¿í øq‘Wâÿ\ÇG“v8/òâôPª}Oý5;zßÛ ÎÔ¬´d\ܨYi­†ùŽ›¹°%̹ö„owên Û…»›¶ u7u†³:v[ÃÍò£?G¶ƒ…?• [ñù¶´Úº§Gµ ¸«F~©k”ÂÚÏ–ƒøyÂë~Ñég +üæAµág +¼îGe~1Zâ7I#sSà79ýƒ™)ð:3Ç[¿Éò[8=ãíM‰ßäÞøh‰×Ýœƒ_†çËÝî„GºÝÁë5ºÝáäœe×_-îʼd;CàHŽoTç&ñzDÕº­÷àï¼ +îRÓ­q‰ÿ•Š÷Ì‰× ,=—õK¼^OØü’øCÅ' $^í€ç’'ßUâ7y­ªÄM–#õÓ‰Úgv«î5I{¡‘›*‡Ro4Q!T›Y§)ùà4á7Ž˜'ËõíÒ_ñ•γ·Ku¬ºÂ{¿òW¿ê \ºÄë~0½ToÉ?ò¾ŸOWdÓßíKélk˃’ü+_%„éȧü­£o>ãøÐóãUOx?ÐYwý~7ÔÛHƒ˜ T^(ñHy¡Ïå…¿”~±bý(¨»~Ç{îìª % @µ¡„#Õ†wøy +ÏË”(]ëËÍw¼Ÿò®øPÒ°Ñ \|x·,o.efáF/4òà%~£ëA×[tôýíÒ-ý3OŸ7<ŽäÏ\¿ãý(u{Ÿ·åòÇüÏëo†ƒ2­×ïxO“BÃçÀкóËÆ³l롾o.á_Ë)Œv”=ÜÄáËEÕY-ãâC­DÃrÑËÐGÁwoðyÕV›Ö#2šðvÔ9w¦G„w )Ä?Ä@I‰×ÿãXûS`Þ´3s2¬?‚ïzIz!gSÍÕ(,ñz5W· ‹A›sç‘`7ê< ìoqµ 7yî¬/aóŒ×«¹¸Ú +fÏY=ïö³z +–ž³zJâUÿƒâòͰ»¨Š%Zèeݽ:;cXÅSŸo·5–ݵ‰Ësûnøp‰Ýx¨ñÉœÓÄ] zØ`ùM9”_÷˦Ê? ¶m¬u5Æ6/ŒÐ¼¾­pÝ/‰Râmžº-Ÿ¾^‰ž +8ûÙ|·ð‹Î©ÀoüØaùüÆ!S×ÝÌ3¼)ð›KF…vß\:8' ð›~.\h.ñz“ÿÊ…æ8¨eðzì² óÌ~½–®Ër—Ww\(G\ññýÑ í ¾é(yPÛÞ³ß"𷷚ȡ†• _¬3€ˆ®Õ+Ø3?ð+œðÞõñÀ“=^ 1±QU%. Ýåiß´¥æ²/OA€ïó—GŠîs*ã*ÍÀÎQ—…‹ÕeÍóÝÔqq¢–üÐ7®›w–^Ë2ê²$^ïNØwbI8?C߉µàëufIü:¾Pø\án’ÉÀOºp3Ó¯»P1™Îų6 –®Íª¸n 4Ñ@] É†åâR.x÷†ÑöÖœtÆU\Y±Gg°zØ£›éÑüVöl<À¶žê›R+¾oóç¼oÓÃh +ÎOî=9Ó³y©Î±K„òŸ.Äg ‡J³ +.o1+ýº uºh¨vc­àÚ–\4_ ëE.Z3ÈOæÞºø| ÷ÖÅç[FéŠÀë¥z5­§©N­«¿ué–ÓWŸ/U9ϧ‹ZãÏ.áôe—ΠnÙE |°áOMàõ‡ÒÈåšÇW•õÏ,zN—Kà7.TàøÀëU6¥p|¦‡R3ý­Q¾Yâ7ÍžÇK^_ÜÆ÷‹$^7ã)w8óSOVÏåpz¸%ÓÌÝÔvã¯çê|¢Æó¿ñº*+7T¸Ò<¾núŸn”ÀëØCYù¯w“ðõn$iœËçÙø—‡Ñø_âu7–nÜýűò‡ùÓ÷{sþÆI8FÏ#‰×“§ë…âé1œe|Ýø<]/”ŸÜJÁèq‰ú‚HüT×MÇϤ¯¨üzôϼ +Ï +.ž]åxŒ¯¥Ú–nFµ þ ޸ߙ„¯jg8eð%ú/õI†•˜µíï‚/þøµ |Æ»LµÒøøžcCøøô°l™ðëC±3¾+µ0¯®+=,ëg~fŸ¸B@âׇt|[–ëïUxæÇ($þoU|·1æáªÂë±JÃz)`Ássœ›ÛûJü¿Ôðôbë2¾ÊM®Öœ¥íg:¾­Ò¬ªLÚ噳ŒUÛŽîË#áj ‰:]Ä ®RÒ:Û$\¿vÂm›%\5¥Z¡º W-‹Æ-|$\¯;8W"ñz.ãà>‰× å.%àÌqŽKþpz<çJpz| 2MxméªMÌ^Ï}Εàó •¢*ðò’<æñuÇ&–‡7“øy/œ +2¨¡4°3¬.Åœau»J3=º[FïoÏÒ³içÇÕ½|]éÙ´>(†ó³r?U‰ß<ïÍn./Žáóíne2ˆ_¡þ4\7wÜÌœM…Àºué + W äSFƒð“˜ ª|¾cÆëŽÝç³°§»|Áã{‹\¾`Ðl”l‹ÍF­ùj5°'=9¯ôlÞ’k«nظˆÜÀ§§p[V|üÊ-dðíBf‰aºë'aÕI¥Å. Ý|LÕFõ¢Ù`8P½h6Ì—¼É’ðÝEõŸ5ãÚê?›Ay=I7ŽUynú8ðÅ}‰×sÍ…ßàÅÇ/Ü çÊÀq~Öò0Ôtñ6eÃòöƒý0(Jþ¹yyõ—ÏŽºšå›dž[µž¬re5ËõdU7û-fyì»wÑ>›îvž€8?»Ù¿ØÙz²*ÆÕÜÔgòEl‰×»ö훢?}ûf ¼Qîö×éá¹eºz9dñëY­³‡Î^ÃY«[Ïj½|µò»Ž¸84¾îˆo¯îåG|wQªð0ì®tÔU›è©Å~–fÃî¢XLb}¾§¥°h•‘ôý<¸º­j£¬¢„ëžDIE ×=\~%áºów8ö?~ŠÉ&rÜÑVztçØeÊqJ¼ž£¥‹`ßÊ1àü! ©MxÝ ÞF…bf~ê½÷»N¦p7LOä—ai£2æ ëÛurhø^¡2æyºz¬!×uo½È!À«iGq¬ +ºsÙüÙ€áë›îSGvš/ßu|âÏoîß±ÓsÙèõ[óM¸fÅÿBïð㸄հî@½Ð¼ëÜ4uà;U°n¥JêEâõ%œf‰ßDT†S€òÇûãVwÏ ü¼YpÎ^_¿ë½@((   á³ÃÄôÏëon{¥I¡aÑE§|ÃÕ +µJˆ³þZîã÷-~ÎÝ0‡ñwiØÑÆáª»î°ÇAWŠûÛ?ÓÀu¤õ^MDUÎê ôßhèÆý¡$\ÍZÑ¡M†³ÀëYºƒûUI¼ž4t#ê#ðzVÏüŒÀë9RzD`fšÑ¦Cu_§?p+T‰×“ª1¯ãëYÒÄ^âôSŽ×BO.¶ù–°Ž¿ËbÒ©ñ,¦„YL ²˜d1%\5VGZRÂuÛ„®† ¯Ÿ””fœ©×Óž.‘”x½•Ýu83ɶ=ÎM¶m«ž‘fÄùIÝô'¸^žùJ>Ýnª¶h˜.EÿÚ„ß>ë#.m”74ÑC87¨™¾3Ð_2Y¯»RÕSž¿ïõd ¿q“X|y»]Y>>•ŠTƒ.¡æbËîÚ<¢å©úMâ7vh¥ê[œžîÉzœûôFWž‡×-¶náõÃAâ7Å¥~Ýz¦¨Ÿ¹Í |È"\¤ó¨WZ¥Sw’£h,n” ôÕ@>¨¦Câ7¯lò³X8?óåðÒ‹‡ ³ xê鉓S¹–SâõÞh•;¯àẩC\š©@i&gÓ7&˜6#•¢z|q©9»O87©5|±¨oLu¸. >¬›qs©ïX7—žë.V1bœ7œñjf€,Îr²„|¾ÿðß~ºŒ¿üÙá2ß`yò»Féá?~5ýKw^ôOâóü·ùÏÆ×åŸÞй êÆ2³I¸zÞŒ¾l®—àqIÂU‰jq%F?¼»k±PóÙýTaçôo)rÄçùoËß½Öaù·7¦é¼ú{°1°O#ðz÷ÜØØ©A—‚€~^ ÝpL\R-ñÃñXéÙ´“æo‰ß´=ØÍBe‰ÚOÇd¦îS¦y½¶í§óLÿæ½ÙJ9 œŸƒS¿‰xŠñÃôÓs°9ZðÃTCùI= «AÞÈÒ y£îq¦_7Õ<7ÕƒåvÙè ®¯§7«ÿ.5“†å%ð›nÕ½z€:—U÷ê¶Qá'C჆zÆb ‡:³4\=)xD~ôs—x½ ÝKjynm%hÓ"R¸Ö?TEæqq £»3Ì* +‹ߎd .ÛqSDÖÖí¨›ôšóLÞ”1TÓqGM—ãNçO,ë~Ô«¤R$ÛŸo?~A?„~üúù8Ú´Hëq§×ô(£…ê“pýÆÃ_8=ã%/\ÞèÎz5ð¿Õ‡á´ ×}ÜLŽzZDzйÔOtÜó'ˆŽë€«ê!f¼Þã¡;sË~×{Ðq:3TíÇk[ðúÆÑÑçÏèèë·Ø÷o˜õƒ^÷4ZºàôdncË?u\Ìgþñ:N?õ€1˜ÃTGV“a½¨ŒEžéÍeo˜/eqæõUݯD¾'N~:òzœn² }®¡Ñ¶§ÝE~ÂTâu×…š‹Íãož„M,˯ßüÊÜ@â7å7…]/ßt«wl{ +üænSa× ¿ÙøM7ÿš9)þ`ÓF°­Öë«Ú8|^7žûéB‘9ß\>‡¯ÀoúÛçÇLþÆô+9›‰úI¼Åv#ÊO×s"|ºÝV]èß\‡j+=›ëM|?HâU[•²±ø¹2§‡^ˈqOFK¼^l•ø¾ÄëY“ñd4>_jypý@¾iKþ”¶ê·M{Ïg5ªo©û`.úßI¼j+QÞÁ7\žÃxÎÞÔ}0f|?r; ‡ïGJ<,ú|ã;Ž% ë|e[ÝÔ»c9/6œÛèú’¯é äÇU;o<ÙÆ#¯&ѨWa10Ÿâ¼Þ°¸9S¿'¾šfKín²÷…ïbâ̯|§§æU÷onCµU÷ë—õßÅ„—‹ÓpúéÙÙE7ë½»#[#®è™Z?¿}¦Ö`Ò+µÉ Ô ¿e{|]Uƒîç‡HGpöt79YØCQg{b]-Ý«ëþM¬ò»—ܼA:»gq,º=µX>¯šß²ø?VñÝr°(«Ho_ØCNu2HO+9'¼¬†ê¦1c\ٯ߸q(îHÑõ,oðÈ­ömžœ_µ³º]uVÅÔµC¶øä…P}$¡xyùyù¿Iø«¦§ï]:)~Sé8¬T˜þn8ÌðßèpºˆÞw")~ß¼`7b¯—áÒ½Çhàfãx’€o^ +ÈÔFâ7C<›¿ñð¹1ÌNêZÙ.lžŽé¯¿’L¯‡ºYú_Å:²<¦ÿwåÀ÷¦nfªå é¯ÆÇú·tQŒýK•É œÐªØø¢­„«ÑF¹†€«> ýŒ×÷ËÁÛKÀ§R›{Vj3âsüÛüg¯%˜ÿ彄Ae6X±ù*³9À’ÁW™Í¡½Êl°ðUfs€E€¯2›,|•Ù`à«Ìæ‹_e6°Üe6Xø*³ùy–Ù {˜os8?©Ì†®?¼^'Ñ÷™›×W/kéǵ…JƒÇÅ™ÔnÉò}fw*èñçPiÄ—Ëw£©Íx=”I¡Ïd ¿o÷” Ë•†;‹Oî8zhÐS Ëvß´^¡Ox|ªµÐO£WT5³l_½ €^@ʸº¢Ðç²}7e0›}¨

þðq|+ÜcŽ€?~ä¾›_ÿ[ÎÞq¿þøÇŽüÅÇÿ¦z! +endstream +endobj +164 0 obj +<>>>/MediaBox[0 0 612 792]/Annots[165 0 R 166 0 R 167 0 R 168 0 R 169 0 R 170 0 R 171 0 R 172 0 R 173 0 R 174 0 R 175 0 R 176 0 R 177 0 R 178 0 R 179 0 R 180 0 R 181 0 R 182 0 R 183 0 R 184 0 R 185 0 R 186 0 R 187 0 R 188 0 R 189 0 R 190 0 R 191 0 R 192 0 R 193 0 R 194 0 R 195 0 R 196 0 R 197 0 R 198 0 R 199 0 R 200 0 R 201 0 R 202 0 R 203 0 R 204 0 R 205 0 R 206 0 R 207 0 R 208 0 R 209 0 R 210 0 R 211 0 R 212 0 R 213 0 R 214 0 R 215 0 R 216 0 R 217 0 R 218 0 R 219 0 R 220 0 R 221 0 R]>> +endobj +225 0 obj +<>/Subtype/Link/Rect[284.09 261.02 302.43 273.31]>> +endobj +226 0 obj +<>/Subtype/Link/Rect[302.43 261.02 311.6 273.31]>> +endobj +227 0 obj +<>/Subtype/Link/Rect[311.6 261.02 369.69 273.31]>> +endobj +228 0 obj +<>/Subtype/Link/Rect[369.69 261.02 372.75 273.31]>> +endobj +229 0 obj +<>/Subtype/Link/Rect[372.75 261.02 388.04 273.31]>> +endobj +230 0 obj +<>/Subtype/Link/Rect[388.04 261.02 391.09 273.31]>> +endobj +231 0 obj +<>/Subtype/Link/Rect[391.09 261.02 429.61 273.31]>> +endobj +232 0 obj +<>/Subtype/Link/Rect[429.61 261.02 432.67 273.31]>> +endobj +233 0 obj +<>/Subtype/Link/Rect[432.67 261.02 452.85 273.31]>> +endobj +234 0 obj +<>/Subtype/Link/Rect[452.85 261.02 455.9 273.31]>> +endobj +235 0 obj +<>/Subtype/Link/Rect[455.9 261.02 475.46 273.31]>> +endobj +236 0 obj +<>/Subtype/Link/Rect[475.46 261.02 478.52 273.31]>> +endobj +237 0 obj +<>/Subtype/Link/Rect[478.52 261.02 498.7 273.31]>> +endobj +238 0 obj +<>/Subtype/Link/Rect[498.7 261.02 501.75 273.31]>> +endobj +239 0 obj +<>stream +xœ•}Ë®mËQ%È ¤m l÷‘ À%ÁòÌwfƒò ã×µ¯_øÒCƲîA²…Tú ¾…頻˜sk­È‘*©¸Û{ìy"###ã|ûçÏßRýÐJýðù¼}çó·ÏÞþøv|h#~ø8ÿïñáË·â§ÿKÿû—o¿ûÕÛ½…ÿ÷-~øÁDýá-~ôöÛ?>üÇüóðþߟþóÓwÞÿòþ­ãúÿïßûÝüï̯ýs|øÙ÷ÞÚü›0n­ÌÌÿ®=Ýr™àŸ«ß„ôéú•øñüþ³ë§‡_ÿè¤xrã[ßBøðùïæ:è ZûÐŽ|£ÿñãÛ7ÿì{ÿçó?§žbç7i±þ3>n1+øw=øÈ·¦á߸àÞÂÕïJ>$ÃÄçïÌß}â˜ùÝSòBÒœjÞZBN·¦Yõ¯>~ܺ^ü]|‰·Øþ—>¾ÝšÆÅÅ×ÃÒó/>>ÝúÀE#´ãv…ÿ‰´9°¤†ÖoEï×÷]|Ï·ªéÿ…ï·T6ø9Â-ü,„Qo#àüŒGºIá?óñãôþþÊŇ)o +þm>ÙqqŽñ¸µºA~¬·¾!þ1Å[Úÿ˜Ê-g\Üb·R6¶+·[m¸8Ä25¯ÆÿÚÇOÕ«Åù§.¾v{¼Üã[¶ÇË߯~Øãå‹ÛÔÅæ.ðåm^5½n|ÄÛØ‘ÏQn©âû›ŽyÜ;ΟtLyÀÅ3…É΂³'…zkÛ•b´ÚÜÿ‡Õæ>ýó8×¶iÇ–pñLó8šÛ˽]RÎö¸øü,ÇmCy¦yzsÝ žÞÒ7Ø_'{6¸?{ÓÒãÞí©Mnü°¤©bÙà~«·«:õhÉqu¢«ZãÿÊÅÏ«:í°sÚ­9mÐ3Æm$\—ç£ÞŽ 3:‡yi¼kzæ0uφòÉtWoØ™îê þdº«Ó=S9¤‹[NÍÒãêòêƒ_åï×4Íû†-–çñÚ*“¹A~Ÿì)¸öÉó¸kê]Ë'f-O—;eÚÆòt¥¡„WmeÞÓaCµ•8Eaƒ—äÂVòD*ââäƒô‚Äû.T®äbJüç+v(¸«ü¨ð¾‡\ˆ/w^¢!n,wÞŠ1+üÂ#mdBJ¼¿WÓdž£ÄÇÇ×[I +ÿž‹ÉeÄ š6ð¡7̵zÂèäbJ¼{Å)ÅqCÞâ4‚SÇé!‘OoX ƒ|:‰÷}ºXȧ“øßú>f Ÿß°˜ªý\Õs¼µ±ÁÐÜ)æ ñ¾SWŠ=‘þ”~;ô†ùNݼ¸"® â¼·RÄå3¶t3úÐßß6nY³ók+6”í¢piÛØ®Áv¼]ä“–€Ÿ}Òˆ+Ð4íÎ8ðíMÓîÌøv¥ivæ õ¦ÙY:~ÜÉ'm¸0³KZ6>O.醴¥ÜnCsÓµúÙÇܸNÉÇÔÜtÍ$ö7„“|À¾#œ=lˆBÏ>À%m·Ð7¾?Ò-ê›ÑwxçI¬ßÛqÝL5{† EÆ&ß6֛Ò³HðÔ[͸@çyàͽëÊCž÷º‘g?3û;¨|ætp25›3U&l˜I™*ôùòýµ\¬Ù,ýµ»û0ÿ» ._8_Êé ôŸ]?=üê¥ÏY<Öë  ]Upw›ÉiÓ_wwœ¶ b¨Ý*á_€Óxå¾`§ç߉Ïß™¿û´æw¯ýBAä +<ä +<äÂ̽üB‡üB‡üB‡üB‡üB‡üBô$ÜýB‡üB˜Ÿ—_(ð_ˆòóî +<ä¢gùò ò Qq¾û…0ù—_ˆŠÿÝ/D·ëîÂë½üBTœ£ù8äÂÄŸ~¡€/Z¹ÎLÌû+SïmÍ\‹ÚåJÂ˪$ŽïSY^ÁU—åÕ Y›ªdÔ z¦*9âÆzÉùì¸*‰ã¬SCUI:¢U… gµSæg +™}÷}ÃÐØ×Cù“b v– |¾iò¿ø¦ïKjÇuCJÍêß·½R[¨épOmÁë%Ó!mÐse¶PuuÏlÁü©Õž_ß·½|Oßì÷®áqKyƒÿ—ë ¯wD{—©­cCþ©ø/lèç¥IÞUäæSO—Àûnì<Œd« +¼Oü<Œäf +¼ßó6Oõt ¼F ·]ã=lgâþ~ׄ×;mm½]Ý÷ª£ý¼¿]TURÞwuŽ3o ð¾éu¤ ¼U¢Ž42…QöÇy5œû1Æ[Ý žúÑ4þ/WNøÑwðý¶!ûìƒkrü‘$…ÛÌá³Kå˜Àû~WlG +¼Ÿ5¼\ôŠE«xü­mg¯ÌLš§Ò7dÊ?Óý4OegsižŠåûøE¸È fNÀÀx¢7×Ï(Ò€”Н7…Áj(ÿy ŠÖ„¾ÓB Ô±±^J † úçÙ º„3®;üÏÍ®EB4Úû˜¨R8ž ¯w^¼£àÊ!Í‹7ü¼¤yñ½¿‹må ÌOšy²±Ü^¸£f?<Ù¸H©ú³ãª<‘‹QÑÓxwIÞwhâɆÙÃ.é†vã‰'øMÄO6¬Nx26¬ÎœG `òs´ÊÁß®ا€×[ûðzëÙ~Ÿ|@½½þ–vößÁâЃ=->=½Y3ϯÙ˜y¾4S@xƒüBaM¾r1É­‘xJp7êufè·<è´2J‘èºèL¾±@æ¡Ébýkj$à¿õáƒf øW\xHt½ øßºð˜Ì×}ÚS lÊÆ@åMÂâÃm¿€Ï…çN>Ì™y1+ô?øèb6ÕvoÕ¦þÒ…·hØþ+^ 1¿pághÞÔq˜¯ׇwJð£´S¾XãŠLœg_sæg.<#î6ÅÈÎ^m“ÕG¤_(.‚xÌ~Óp×,î\¦&á®f¤-* +î×ÏT²ùே©w§Í'ñ~0ä(tI¼?ÐgZ5MÓ㋦U3¯1‰÷kT¦U“‚Âû5Ó‡1ôøÁ±éÃôþL59Òý)PâÁ=.jƒÅ!äS™ ¼?ï(ŠäK¼_£2Uk û;}˜®‹_£2µkŠô×FE8ÿë°ô,jŠ +™¹ø~uŠï×4ËJÝ·©ª¦ß&Oýо¿ñ !¡°:‰G%«&ŸJ„Œúq35T"dÔ +¬h|¹S=äúc¡¼,Ì~—UúÆ÷§z¨šþ¿÷ã“Ñ~9-«áÚ<–lO‹«žNUÜaÏtªÌé]” Q’„ûìZ¢€¾Ü6¨'¿ó0+ø°ÇyxûØØ­Ñ¨ ¾¼¨Å#$\ÚÒÁC<%þ[.~žÆ»ŽŠrÌÝ»à|X[`ÑlÎ3<%Þ]GòòÆa¤ødÉìÏœ†ÆùC•á¸ôPMŽþú"Ú-5þ$´RíÍëS_8.ŠNö¾±»ÆÌðÛ¸—'~ºYîGJç­nnÝÅ`°no]¿mpù.™ƒë7ðí¦?ýPfµ·Ü¢zgX+`1¼ùÁ©ðc]ñÁ©pE9Ó-½q«çiôç†ëÁ­ÚqæÄ8؇™“x9,›TR6.ûTS– +~Ô©UË\~ ¬pá¾Þéø—eªA WµôL—Q͋ޫÀŽ(ÌŸÆ• ðá¢A#m¬·så.oƒ+py˜Î\Ñß_Ì%8KÐ"Ì“,A‹0Ò êføÀÓ õªÎš)d{ øfµÛbˆzºéóë>b³úg9ƒÐè?h†,>)G{ÜýØe|6,«D&l¨Š#õP}ü ²,X]ј¬ùã¿tE¦Ã†:§Ö®K•Z»Œ©áG§—ÃÆ÷§:1êÍÏ«æDàý*@ªRøé¥1!FúÎ7‡¾^R6´‡ðåRlHsQæÖ¸h½,ò<ì)ã§—†Šä æOÛ¡gü°äÌ}À°î¡ª¸cÃ0¤ÈPØPýô Xé¸*Ï…«âpz*÷ ãwcžÚ!Œ †NÇ"… yè<„ +_@OV»-Êô†‘~?RE¡¡»+OG!mÈ•é™Ãî²§ÝöE¬'[SÆ•7Ž áâ_"¸…]‘û–«PRØrJjÆ2YF¶¦³;°Ôéð ÷cU™zÆà¯O÷•\w¯Ó¢=41n›ê$I« ü¢ˆ‰»—%~¬¢7™$Üf„%ñ~pâŠU¡Ì¼× NÿiëoàÙÖ—øÅLPn ſ߆•ÿûÛBq~ö)ÿ +¾ÈKçÛКañœóÁñ/˜î Óü÷“aó<‚ÓQº•g?™GÉéŽë6JNW\°Ñ°!”kî Î5ü8ÆÌ#$~ñÂÀÙSx$¬Ìc[âL¹æŽk[J5o(Ï8 x#Ì>÷©µ8mPß¹H +Î>ö¤‡îÆÃ8x;|¸ÈæIü¡Ç·sÆ¥“ú FÆ¥'ÍïDŒ<ÍÖ<4²³ÔüƵB9cCÌâ]ožéï,%ãØ 'ó(œ™%[É÷w¶òL/\Òæ9ß¹&¨™`ëÞ¢Y';÷Vj÷–;Ð1QÙÆ½EYã^7D¿W»`ÏHÖ®ZtTzšŽþý|k‡-—ìÝÃôªì…/Š7lrj(¤PŸÞ*òÇ4±ÍèçðÎz0œõÓÄz«“TG&àõÖB)Wø– êý´¡{r;={˜Ÿ+oq~vžE!ñËœ«¹ý阣ZQö÷k {‹®s´šÿÿàã åháý*gy¬û l¸j+ÓÄŽ—Êc$Í÷®à¤nßÀ§p‹VEV¦HC©¡V¨;\ÂýK*áþÓ+<”ZÂýP 'u%Ü­Ýßh×3ü’„ûá”n;xîo€É¡Ü +0ïÞç”[Éšžå\Š¡éY䀹%Lâqn {¹·á_ù~x›ë1q.Š•x}·xî~·xî~ŒÛô z(ýšðéù…øúd=à;¿#$ñ‹±Õž­EØfXq^4{¼ü8ÀÁ=X°8ßÃ6¨8ó\‡‹3%oÎÎÝÔ×Òð†á^ã—ÒÿV ¸§ ‡Þ[ +Aâ‚Rœ79qLÕúô4Ë(ô—Ä!ow n¹? nlÖ´ÍÙr †cånc‰_Ä — áÂIy×¶!==³A KÏà™DøY7#…yÂk]û4l³±Á4§6ml0‡yôûÞá4ÈÞ¯xždÜ ‡ìÇŠë‹U&¾«N)wÝ'zšegw¹=@ï–ú POÁ¥™B=©mpŸêýÓûçÍ~lœ–TƒµLO¹4v·`é§j*w½ûÔºý¾OÏ91Vçip{¬Î)Sûÿ··Áò™~ør©ÿØ0l¹ß1$ñÍŠ³ïÝSAþ†ODsgsÇÅÿš½ ñ½òþèµ(7}ð£ c0öÏÿÇwpº¯ \éÊxß|$•™~áÝœ•`¿˜ºW,=‹ŠÕ`éqM*Êb_$±OëWàIlž@€ãÏ)œž)0A/×w+?é ñë¡xac{ëàQàÝØ… +˜aq ¹?ûh@¹¯ª+EfÜïjgù©À/‹+š&Ç/Þ˜b5~1ê“§tWX¼ƒç/|G ü¢â+%~¡o¸YâŒ<õÀûÓO9”xÿ¥Ø³%Sâýh·dJ¸_>ïòPÞ—³-ù>{ +O-”øÅù†|_[ÖbÉ_Ô´ðÐB‰_Ô´4ræÑÍ%©?xš(õï`Lê’z‡¤^àê¦søVà}1 õ¡éñc‚T›µ±Ü³±Xâ}åšù9b‰÷µ_IöûîSJ¹G*O‚¿ÞyR|6è‘=Üõ¥î¼Û1圥ŽÚÉW¯*4>µª¯/§§jbüF»³1•ö“¹ +\£ªÌƒqÒ¹‚åK‹Ó°êtÁ¯Wy¶ØI¸?¼ˆ[ì$Ü¥„æ¦&wK@¨Ò(¸+]ƒßQ“pß?g–øÅcËüŽLÎõ8³Ä/Ê>¹b-=‹„Ð9íÞ-Éh‚|/8q«1ÎÐó‘‰_”àpÅ$Î Ó éYT.ðS8J»Õ y `KÜO +·ä òé±åºAþ9g?hêýô8sWx?ìFC:®ªè™ŸpþÓ³=FüQ.|ÙÀ7ªK†ùÏ¡ý}7^K]†7`ç T5=nÄözmYé7dË-Ðn+? ÿ4EÖœÇù¶ñùÑuŽ^€£²û–¿ÈÑó{äï/$žA+ñ‹’J ‰÷5ÚäxiôgN™Iü¢”vZ +¾P˜ýÙJ ñ~øñ|O–Ÿx¾'‚³s$F=ø¹û}ŸŸT°q~ãùܾÞó¹|½­Q·™Äû½Þ=Øó~ÿ>h–àŸþóŒÁ‹×áGóó—oå8íô‡ŸÃùó'üõóïß~·üf:_òxüÙùæ‹%^@P¥Qw´Ö ËæèXwðÕj´»›ª—üñ‘4ØæñÇðœA/ò øNÛ1˜¦×–5¿áãùM•gxµ‚ š—IO~Oüzîýß_LõkFåúaÛÈež° +MqX•è÷3'½7~ó0™'¸:I™G}I¼ÿ’]nT~…ó¦$J?âk- ”x?Â>Æ»¯W ÏÇGajQé¨O?‡çÂöZºîÀwî6¸þ7>>þ›{/ÏizMÃZ½Ô3Þ놜LùÂlÔkøø¸¦iQ)=~ÿ9<_óë5ÞOÔˆú7>>ü›³¯áÉÏá9M¯i¸•õË,J ¸üÓ[v½ãç‹Þ²šžùøaÍÃÅÛwŪîåcvƺõ#é‘ÀÏT³Þ³{˜â©ŠìÏáù¿ÜÓOÀG¹ÒÿÆÇdzpGÚãÏá9M¯i¸Ñ}LÅòÍÏ eN¢âûH5¤§r¢×üñ ¦ÅüøcxΡ×¹ŸìŠü>>üƒ­œWˆý9<%È!àÄ7#e¿Œ£à'…&ú ºa‡\“e‡pç¥4žÛ<šAŸ0¬SÉããÏá9C_sð|²…êßøøøoòS-?†ç9\@ôXõÃrmñ˜b³Þž¬FäøÞ³c%WüÑ2`åP½fÈ…{ÜöîÈ·{,”€£Ÿ°«’ÓÀ÷¿hÀ98:ð_ô}rc’€û]òç;ʾèvN¬³ßá~7rœ¨Ci§)II—%°ql|½¾ûQ=jÜSœY¼Aq°˜£´Oq¬j©n ›Ú¨«Zê?ùÃDMŠî—å.jµMÉ…S|_i¯lv¿Ãéžé)J´É…¦šÁ"@Ï,+ÒýÀÖ‘©À])…9kQŠÀ‰xjLM6~‡/¢–ÜÙŒ* +r_ë4Þ|–(Â#¾Òé¡ë“êæë¹ª>¨TÔZ#¾ÐÊS”Ü5‰¨¶%|¥-°‰ó÷s}-çZéÝã€sfžÔ’p‰g"ñîFÐ8F¸!`" /ááÎ]?þ Îá¿øR~áƒs¬/võ>ox­ò~êÂçI­ùå6=ÀÓi¡KM™ÊÂ^©øôš´Ø^ÉÇàØëÃ÷§ØX{)bðn”’¿Ô´Rú‘Î4ÝfL;Ã/LŸGxùҹ>íÕ2Ÿ¦çkÁ eú^$ö®<µÀûÆc8£ïÛHÔK~am6}~1úêÓprÎ s¿°73u®áä—SAÂß/§†x€V©d* ¸Ÿ•¯§Îx?ë?Ïi1_ñd œýO߸ŠhZxÄî'‚…j¶£f¾LG²‡×ÏïNÙ?eÎÐ ÊŸ9r /7ž±”‰¢`Zü”pâá«7¥3|ƒêê] g…š×âÆYI…_‡ï^®éñ«%Ènw,Ÿ§†{ÙÁç›s=—§¼:º¶{²–Œïï‘i¢à¾¿7øyÞ—»õˆÐÌþr§/l4§ëÙPBÕHƒëóåÀoWÁôg²^ Û<ò€;x¹9>x-®ß—£ce<€ÓƒËâº}”tìiƒ7Óec±óäú¢øŽo‚×[ùíÙ—·ú#žžð{©Øàí°F§.cðüL9¬øó)9œ¾ñÿ[øsügmåÌ‘ ü"}PÙwx?î]¯Tàý¶…¹QMã ‡féñkÊ[±ß÷éogˆWà“1x~ÚþŒ‘Àëí•-$_ÌÒàÇX%Þ÷^)•€“Co9e%› ïæ8»XPq \ÂÑqò9™ à¾1NÉ„ îÇÈï—Hüây¦Àå˜ïÇÍSã.˜žLU¼87s½… êóàH"L}9Þ´SEÞØÜZ8l +s‡ +²wÖÛ‚=[¾+tiq˜þž¶ÎV¯ölù9š~vl¢ª-~ºJâ}OzªsýÇi~º +V…iÚkuƒ?äœÕ«BN_lð'…³ÁåygF9øü™ÞVøq¡ŒGÐô,Þ™N§Á 34Gn€AÏ;½æÔ. äžõ»ú6úÁ i¦»=MÛÄÐï P-–?Ú0õOÒìGZ¶Ø6ô³?Õ?ônwз£[‘¦B —u:GJÂòC Ÿés]MŒ@ÂçŒ%|jLxÊ==¦ éY æáàò½â<\âý ýùœ‚Ä/¦ÖwÒ +ü¢5‘ßUÃé?’x? Ry Ä/ª’M¹Ç×;OÖ±ÃÏy²‚ÿu+ÉÓ%Y`~nAÉç^눞+|´8ø–F8ØûøÅ\¼Ä†•Àû9Š+'ƒ²“'ã¥õ^9x½±Ùãµè” ¬ÈQýCfM¸¸‘ß6Ž#ò†þÅ«¬ñ¦?ïÛÁó=v¶kÞ£aCúï•°ø4Û‰‹g;L÷SzLxw{±Êañ„ëé4Âì;PexO‚¼­Þ^ÜØ•Aùs%APá¼'APé¹'AàåλúØØÞ{RCà}+ïJj Ê„¬ì¡éñ­B*ðÝ8©òkô8?+ÛÄé©ÃÚ‹1~…û¬PÛ$õ°u÷¦Þ¶î^~3W&iDk{ú§q k{úmVOé„ÙIoBÅíÍ!ØÓëÓx®'¬èi6s|ýî—È£:qú©Lóß ­s»–^ïº]+ãÇÛµ +~\¸]«lð‡š«ÚÆz©jG(H§ùï7OQýĆï•ér×òàwO5y¢Ú¦¶ í@óû†ç’©¸XÁ]—:SŒnãòâÄÏqP“}äuâç¼çuÖU üb\Xçô¥Àû‰‡Âo5Kü¢ŒgK¼ïƒSò[Ó¿(Ëã‡î%~á2ò[Íï'®®¶j÷iWû1ÌŸ«ýXà}þà %Þ¯Û¢÷=4ÿýé.ó^éïû,_«‘øÅøò|ÓËõ‡W“ÚÇ¥!^ùo˜;‰_ß•øÃ÷¸[èîÆi´šþŬL/ñ~Þ­V¾ÕQí@.WÛ8]ÔÁÑ+~Z¨…ÜFŸÿýìüxº[çñôïOwÕÒïF)·¡Ùï7G¦©ðƒæç?ûø3÷Ó3­¤ˆ‹gJŲßOUL#Æ(C÷4¦y¹e¸(ÜJæ°k¸7ºÐ·É©™vC:©°*T\×R…¡Çÿ>!h¼ˆok@azúY­#ðn/.¹D)m|ºDIo¯_×FÏôhéÿšoF\8MÚ0ìùß%jOzEþ£‹sØÃè»át)PåL…d]¯w1™ã†ž®L‰ÆËŽÞŒ7§ÝU>äâä í“ËÁTûäRíqqµ¹ q‡?µ[ÓÇU?y^v;¦3O0ß0%y&yÇcîÅÒã_cœøN‹ûÄŒs("ª{ +=³Uðï“GD³ps="†Já$)…“x¤Nâ‘R8‰GJá$Þï³jü$/Nãùï{˜g©Ä/ÞØ ·±±\r¸ŠÂÕÇwJ*Iübh%W]â}“ÿ(V||'»]¾‡C$fœ44kú]­FTé¸8P«üqqæÚ6_TŸ–žeqÛ¡ñ®Vãê¶´AO‰d5H¼«Ø"Í3ߟ.]Óòì¿×HG9à&Ný›Â»¥²±ûýE³¤°~`pÎooãË·¢?©7¸Ï ?^T —pr¨UéÐâ°h=âx,þäa¶ úÉÃìú8úi–ÈÅXøzãó¹´M”¶Å j2e“x?i•¹MâÝè—ž%\ùS-\ùS)™¹ìüÝ¥—GÚ¦‡¹£ Éà zƒïaµÛÎa·kðd +˜zâjll/%Å‚~78ç] ®:陫†«Bj% +¦@¦§J*Îþœ8¥*ñn´-Óƒ°ïFÛræW”`SŒr\š=~´-Ï«ôÐüñœJá'œ=µR!î~XUþ·+±lvòëÎööKuá/ê¯.r¥êæÐʱqo•óWx±…†î7\³•(_«’2nÚvIÏ®Ys&Кªð¾ EshºÂ/žOär øâÍ~´Zâý²Èy …¾A>•r(øÒ$Ö ¼: = + +¿HÑñ£¢8ùƒK`úé ¦à~"9˜Z|{œ*?|QtyXê­VÕ’ã*Ùqð¨–pÅm–ÕÞì;®!œÆ£ÀûRÊK¼ÿ°V¬,f¿x†&²Ÿ%ð‹i’÷Å2ó£¿Ð8ü’Ο¯àß/üêÄûÇp*¤×»(öæ7 +$~QLÎmk¿ÐRÝÒ¿åÈ{pyèþÅù?’/ÆïpìWâ݇’ÏJrxo©¿³œö«’æ U†7½·‹é>ƒ½t˜þi)ŠË‹ìôÓ“°¸èóÀȲANÎö¨ø…ç™çêK¼;Ђƒé™ÛU0ýüí}‚p~fÂn^ãâ/ä?ñ.T¯%á_ñá*àßuá4K[Á¿çÂù‰hœ˜Ö¨†Iâ¿áâ{¢Áqÿ¯.~pÞXâæãù)\‰ÿ©‡§šž¬ñßwñáØZ/™f½¿vñô¼ŠÆÿÒÇ»^Ÿþé‡f-=¿pñ™K½ñõæ3ê$ð?rñófŒqƒ?óÜö éó¦3ëõùÓêÞzÉ±Ôøïøø±·^ +Ûhü=üõº‘ÄÿÄÇŽÑ¢ê:jzÊŸƒ!¯fª³fÜÔ½»z4ñø3X +8¢GÑ£î*–K +ø·=*ð?Fô¨À»r}×£0s.=*ð_Gô(Œ¿ô¨ÀoÈQÌ4„kWŽ"¿îË‘€#r$à¾`œr$à Á`9p_..9øïC|%ß“*ðP×óv1`>ªÚp?á~>‘.à¾_u>‘.à«©ÏÇ;~ÑôÜÙô~‡û^0¡…i'ŸVqfÑ¿œošï˰¥ßá˨X¯8íô«Ú&ß}¬ÕÐî{•ß1p¿„:—wàÃ|}ùõP"³ðd»Yªû¢[4Îfûàiv¨Èp½:Nz¤×²”ü®1ÈT®ŽOSa"ዹCÙíEµúÁ•Cïp¿”Ì`üã9‘ñ9]Ìšñ•–ÌU (1õ n&˜˜ZÍ.ù= -!X4dj•‚iïÁÈÀ¢þÌò Öy(9z×Äqæ„ÀË€ª®€ÙÏ0íôʨZ©›MLúŽt3‰TÅ0!Ë2ù®µ€_¶?/½¨$À ®¥ÔÌ9]%œ'Cuu÷ ï)ÛÑw°_pBÃMN<õk)ÖøT"=~S-Õ;”ÞÀTæw¨÷l®½E±ÃYêƒr†:»6ÎÒØÒü¬¤ÚU¿Vœ† Vüë—qc†šµ†ü §Þ_\¡rë/®e¸óÿøÙ†îRNƒj²a8E–ð£šÏI{ð×Ë'BS +' À£šiÌn?dšš§h÷‹ Z5Ó²>àVažG5âjžg_i™G¯˜ô2Þ»{…‚U ^i …ËQAV¨¡ ?K%r&ý85¤¨MrÕoI<ÂU2%E€³=uŠ¢nÇTÕc`e]W¦YÀ6'šÜwÆ"?É%à¾36ýw…^¼!Ã/r ¸ÿ0yûAÂ×î~Ãáç 5î„Ôª^ÜTLíXÛ}—ùœU3rÚ=_)Mt/¸L¦á0¤ð…Rž;à í½–®×SQÉcÆqƒ-…Ü0÷£C4"¯VxŸÈ»ÖZÉ÷òΧSÜwhéåÔK=œ +ó…¦+‰Yx³Áˆ¯¿ÎÜvÄ—æèicÀ÷ ‡}Ü÷Ë0¶¢Wô•º‰Ð©‡RÀ]\emÞùŽxÇäÜy6%zŽhvBÇ]“é'ã<™N²v’\@NrÀoöBkÕ:NòAQJÔ7-¡š[`á$Gêq@Uc‰\šçM]žÊâgo|;>´¹)¹càË·:OóýÿÒÿþåÛïß~õö_ùÙÛÿÝL±L +endstream +endobj +223 0 obj +<>>>/MediaBox[0 0 612 792]/Annots[225 0 R 226 0 R 227 0 R 228 0 R 229 0 R 230 0 R 231 0 R 232 0 R 233 0 R 234 0 R 235 0 R 236 0 R 237 0 R 238 0 R]>> +endobj +240 0 obj +<>stream +xœ•Ò= 1 `çlþƒŒºÄ¤íµw« ˆ ~ÄMTäNÐÅ¿o+~P¢O^2ô}Ú¢+,ú <ÌጮRØ„ÎXƒõîq^ÃÖpÁ(uaœÀf˸ 낱®‡wÎgó•ÅÏ÷•·L8.…ƒzC…"è÷!*NC—脉 ú:­aןâµß±h*¾ÈóЬJü,ëUI.=g™õÚP•ðiž;Ò&ñ£¬7šŒMü:ï-êüB‘Õ‰_å}I’úöÓÿþ·æ¡îRc‚‰ +endstream +endobj +241 0 obj +<>>>/MediaBox[0 0 612 792]>> +endobj +243 0 obj +<>/Subtype/Link/Rect[171.68 571.88 226.12 584.17]>> +endobj +244 0 obj +<>/Subtype/Link/Rect[226.12 571.88 229.17 584.17]>> +endobj +245 0 obj +<>/Subtype/Link/Rect[229.17 571.88 244.47 584.17]>> +endobj +246 0 obj +<>stream +xœ•}[¯eÉmž pôhÞtl8ˆ²µê^ /†f¤X—Ñè6Š¥¼²ah Èà—üŒüàYûô°¸zEB€ÝýuX,‹dñòç·¿ýõ[ªZ©~ýoŸÿúí«·?¿]Úˆ¾™ÿ½>üé­†øñ¿ô÷zû§·¯ßþå-|ø··øáï&êŸßÂõágo¿ÿßׇ˜?>Ðÿþõ?~çÛŸ|ÿÖõüÿ÷ïý‘ÿ梚ýà‹ø!„¿þãüýmø0&ô>©üæíoþâÿý—_ÿ3ûIl¸º'Bp¨¹v‰ÿ +âc|Ô¶á¿Àøþ;þÇŸò#Ž ÿ—ß©løÿñ9>úŽï_®GÛéùkŒï–7üþþ@­«9\Ç#¤ ÿˆoå÷ÿâ{x¤] ~‹ñ•€vúûxL¡—øÏ!~Lþd»Å+>Bõàû#6ûˆ!?’C@ch\ìüŒó€ÿ;Œ«Údœ¬xðùÒßÇüÌõºc½%<ª ßô÷ÿ'Ä×볃Ÿó<*ùÿãû£;à-hrþðüU+,om(zàñнèãˆÙ3¢>Ž?ÅøüÈþÌã®èùã§:Ù¿ÿ>]IÓÙ™®©~öãþ÷?ÕƒG]¥x=BqÐÓ#»ºJS=¤ä '•GöПƒV'?Âø¦;^/Ý¿Ù.©$}_ÿã§ü=uªçf—ÿT'?=û5õCIvu˜Z{\ÉÁŸ>ÕùÎh¤y½GûñM½?jqàGÐÇ ³ªu\0û§:)ÃÁž©Nªã8æimìÒð] ¿].ü<“¾KÏ÷ >mŒÁÓ›§q¢´'þ~ .í™cÖÛ <µUqœÞ<µUÛùó+ˆŸÚªï§ß¾yª+¥>ñ‚§ºRÖ!Þà5AP>s)î8/yº#á>sîOÓ'D1S·)_Ó¦/èpuòÔmÊÄÒ?u[v¸.yº.%:¤y”Çåàg¹&öÍú Ægeêà]/²§LS¦tûrK¼]-p{Ë4e‚C™P\£ŽFæÏÙìSN·Eâ!ïÃÔ„S6%^\!Ì‹"nxh÷„XÈŽ‘øC$PœBâáæ†© ËN´ƒC겯3jΚ6< LÅ’ƒÿÓn‹ÅAO™7©ãóÓlË;{ l2Ûvq;DY]\öífÛ¼¸ìÛKQÏvõév%‡8Sgÿ>¼·(Š“v~¢8ìVØ×;í°=ÐJWyÄhÿ<}z·/7Nm¢–‹ƒ ôÉöÓÂAŸlßÞwÕvˆøLÙtð25­Ùp@,O+9hÏ•<4³&yhMˆ÷jšTq8èŸ&RvMkÖš¯·6ºFíô·‹¬³ªŠ-=ÔÍø‡?â«h +Oç( ¡ÿâÿ>Áë_ß_ òM¡Oùìó’Éëwü{ù+nài× þ—>ißà¿…ðš¦Ý#ῃðÉÐöaøô¨Ã†ÿ%Ä÷ô¨Á±ØqÑFIü/0¾’(ñ?Døx%–gÿ9ćK¯÷Ç_]ë+b%ñ?Åø¡×ûħÊW»UzH_];þkŒ_–ž™ÿÓ2‰;þKˆŸ¦Iÿ4þbÈ«7A>Ç->Â~Œ_˜cY`¿Ó°iu=Z”plúÌõöíëØr(㻄c;rjÛ¶Á¯cMƒ¿>ugÊö¥¶Ao9ŽNÚÒ&á0´Æ4±‡„c“BaIÂñµu]l`IZ$ Ç6Æ +TY9Chc£†mâ +; øáÍ$V:KæµN#Òá¾MñQ«Yfât´Ú&‡ç³L3éÓÍÛ®âמ’Ù+6žUReeÛUlIMMV·]ņfå§rÇ6ûÄåà‚y`çd¿cc ¶J§uE;'W¨Éz¶cïŠv,4+Ðd^êèl1>­°”õl§«yMšæÇ®h>ÃðÄŽ°Q§¦0Ø7Þ)fЇ[E2E~í0Ó>±f–”ø©ÃÌö|QƒUa§\”ZÂÏ@%°Ãl¥}Ꙕ쌙öò|}PÐÜzöèÉnç Ô‘iª¥4ì´·ðØ+Lû´8výŽioU1ÓÞ£2P~†áú²Á‡‰ëì6¿½Ù•=¥í·~ŠºŠ²–àɦ—±0̧‰Æ6Z`05Ç‹žõ¬*/O(GóÙãG±x ӛخ” ]HOb»"À´“}²ÑŽŸp¦}²ë ü‚³[mX^êE¯OfÂkâ¿•’:8Šd%¦eœà-ícHÖ=êíQœéÑ6q„·XM‰#dd™ŽÄ~¥BC©LG¢ØÝÃ2õ°_ü¦Íœá'-»{È/Zv?‚ìy••b8ô@B¦¸ÀHH~þø@Ó†‡÷ûåcÃco•^H6øÁÓžæõÇñÿ–Ùu6SßVÐZàïeÝÚ¹ß9«QâqÚóà¬F‰ÇY·ó v;ùïμ•=ìÍopì­ÌCØöÏrb9íÄÌzIձܰB‚VÙŒ±pxAàql$qR£Äckúô¡:Ø?ïØ¸K'´Ë(DY«c½ypÌÌÿR8g^o ê¬ãåÖÌV¨ÀCSŽ_H‚?uI©|ÒÊáB[õá=¦Ü¶]Ü`€•ƒ;piD­ 9·…ít«nNS›(þrb“‹ΡõÐ3Õ‰‹žp»,pŽnŒúûÿìæ'ûq!Ï]©OFHëÒüýiƒ—äàÏ45ʰ«[ʹ½×E*ÓëÜù½ÔÒ5=8´Ao;`¸8MýÐ=û5ÏûØõÎÑíI›nXž{×ú +ËÛÈZÿ`gužßŽ}²y|{±‹%­Ž`?^yGõ}œ¹|m«tæi ´ìÀÏÓ†c¹Óxˆû÷áå›Sp39%×n¥ªm+ÌÍ47á¹ë³‹=×ÂIvòËr]­g‘Üôæáf¥üt ?$ô6ŽÁš…aú!.rZSäà“;5IráÇC9™?‡ø©I”fÃËnÈØÏÊÁ¹«Øé/WÓN,NY 7MŽcaEW­ÒYÂMóCÍL)«JóãxCÚmT¯¶È¹ïh¼ºVØMyãÞÖù%ÿ|HG ìмƒ¾ÚhƉšóÄI2pcÞ)[¹1úC`á•©nD€±»"¿5šÖCg}þÆ~~̤N bÎ/1þ¶SPrèÚRx¸Y1ìb6 8f»Ê¡«K­*‘x?#pg)ìâä]æ1gJÔ;ûŒšÌŸzÛ©Ï!¾]ø7|c&T ±ß˜‰¿?&»Çxû9ÑÀÌ}jXí»KÑÔTì眦”^€ôpG‚h—†ƒ¦JåLyôTJ7鄯BJ7éü=ÄçÛcþLOJ­÷»_’ëÆJ¥jþ`~ÖKÓOWª7m…åí~ÀॕºãÒâú0ŒÛfAs„“„öïÃK+‡3!s8¹3^ZT¯ð¸øfZeuLb0|'š€‚C¿’¹ò‡žß¸(sX¡?·¬ ‡îûhô¾.áÐ?ƒ^d$§\œ !ñØ1_¶ˆÄãäŒèEÏÌœ0ulz¦Õ‡ƒžÈ:Ǽ·! +H<|1áêáîXoâ1óöRõðµw™ËFµ“S8ÂNN¡®vj +7Øwwº)8v—4øNNié‘wéÁ¯Æé|×ô¢oåÚùÙ9ê*ñ0ÄF¢(³]楂c½£S¼Å¼Þ¨!mQÈ{gΡ4&QÞ–ùèRnL*vÕ@¹1Ù!ü\=ìPmT>|íx­ÌéáaOæÂsóÙ"_(94¥Æd‡f£vt½;ØS“žZ5=x½uhÝ€ù9uC zÇwìßï\¿g?.d–8–;UèvÕI©.»$M{³8T[ºnã!u…kþÌë%g®ûé¢ör½ÚµCŠ•Òoíô'ΕxøÜLΜã´S•Š:í8Ó¢Ün¢c·¸îYîôåÔMŠ3{¦/§”'fÿ<ím?¸Ä¢Eª­¶ŸnöäçΙ|v~ööp\Ôip"Ÿ}{É[t(òþ½8•ƒzÁûöRQ‰Ò>¸!µqœF*ñ˜åyž^¥}0=)R ±ŸÓìWvö¡¶$kC¯·piÄã ÂµvþP(Æçf€frQÔrq U´:´C¦»×qWS•Iu/*3 žã5/ßè9^ÓËÏöÓE•#—ãtQ-Hqœ.*©ŽÓE±êH ´4Öƒ Ù9?YÂá±êœ'á8ÐS(OÂq ‡K%;‡‹%þŠ©.rÂ54=Ø9•’W%þáP 7\µ?rB›?d! Ñ©“]ô$®A–x܉kêäÖôdî+d–6ªSJɱ¿ÔÈmØÏ +urÛ—‹c µë³õN¨MÑ¿þãµo#UÐø>ùFýùOo”BNóíÏqýù#þùgèpü漬)0pû3øæ‹pÍøíYB½ç†C¦zR'ðÐÇäÒ'o…kö-=ô Zâq„ájZâ•åXùãõIݽoð7ŸØðÁAìÛŸã§â¥|~KÃ÷>Ò Ç7÷ßylM á 4nzL…Mm«Z¡7ó¼ á×ò¿ì’ôqEwæ¼À7öø­ú‹ÒÀJ·ãÉŠ¨á½ùÚíir¿Š§`e¾Ž {žú"À§¼ÍÀ™.ò~o½‹—þø`ÑdžÇ:”•V7üáÖKü #ð¸3-ñ4ÓŸ#Gaþ¸»ÄÙþý®ùh²•Ùsx| ×%•fúkbÏQàá)¡©5u_ïÿ8>Y„ ÿ}Œ¯|j>î(Ïr—Íoß®¾ŒPÇFÊXF¨™žé];;Í®Ì%+AÔä¯í À9¶ÓЦ@šõüÎ;]Yë‚©)`qÈ?·èªŽõ&N5—x—¤[bdûù¢©5Wu¬wžß°ó·—*Më+¼Þy~•þ9L­)üÀ-ð8Ù¹q;j;¨ùVsÈOZÿü§Ó³Bò¦oÒØûÌÿÄKéf¢àËhxµ]ŸæñùµxÞð+‡ë%ûoxš*ãX.M• ãµz¸ãoúP§íìøtÓ‡˜þyý†òZ|îøõJf^oæ¶`/Ë _¢VW:‡KáËc×:…k‡OŸ6yħ~uxµã÷s°³žÆ¾Ÿ^Å¥ð]ßFXFÖ·<^yz|j{!(ޝÄGgqíxê_^‹Ï-D6íò)ѱZíòoÁ‡â«i–Ó5$ðØl¦)aÃò‚ +§” üÁÌlö <¶“R¦×[39”´“s*ã×[3ùÓ7 Ãñý5„@âq!pˉǡ·šÙJx= íüÇï‹Ô©h_ï! ®°âxüÄU—&ð0mˆ+åwú•ò­:äòÔºƒÿTœ(À‡÷°õ~&ðxd<•ÉÛ÷––Rì´“ÃR›7ä°´}oÏm+gÅL?E©ª]Ö(EMéžs´]ôã³öÎLγöÎ*úüºµKŒ‰R $ÿ-P²þM‘¦2°gJÃi6Ìè/ šGH ôa$4M6S²H øg¾æG øO |p.¸xœšIž}Øð‡~\p!ñ8ä"7Á•?€“?§rŸîŠÄãЧÒÚé§HÀÎì)R$`ç?öŒ3PHü± ¼Wý…‡ I<ö¼kÕôcÏ»vªÐøÃ¼J®¸pà‡þþqbÅØÅç èz½‡žyùì§Œ‡øð@Iùñâ¶döãçùù§d׫løÃ{dÖçý0òñ¢(‰ÇEää]8>Ÿ£ÌO²Î²c¹…û†Ùé™ÀîÙßyÕváþÕúÆ|\¨+øHú{Ðâ€ßk§QŠCÜ:^˜¯#n"¾Ÿ/üÀ;:%O˜Õ3»=ÙNºÊc_îáÁ°Ñ{Œy»¨GyÚ·÷ð`È£âÍì!ǪFûi$ÏÊs{Ñ º½ðƒOæÊ ³¸q½ÚŽÇù¨T6ü)Þ%ç£V/ñ0L»ãz¡å½;ÔZ¶¹}ÁtýÚ«Ô‹–LïÚØÃm©Ô$ÙÏ '€:n÷•ÐiŸ¢>^‡÷¿BŽföä°bVmE  qØcŽ< Õ|»ÐˆEeLâïÏã{9Œ7ÎÝù{LåÜ´±wèƒÇÏtvþ~¦³¿&míáý¢Û=:ðír©«L•#ŽÏ÷KŸ‡>x‰ÃŸÖÓ›ÇMÛbvÒemWþåÒ¦ù>Ôסe^BѪª’ƒ¾Ú# »vÄ1ùó,#H^δnm%€ëý^â}ý——/ð˜zïOŽïGnà ñø=žúôoðC/9î ñØ)MÒìËÍ—"O ˜VLÙ¹C ÓŠ©žå–òPÒpèõa¨œµ"ñ‡ž7RXíÜlKMÙñ‰ãùG€¶Î>‘ÀãˆÒ4z®ìêΛüTtd_îà¢#»4ŒñvaˆW˜WËrÒÃéÍ®ª(ý ïªW¿N)%žÓùÍì§!gÝ¡Ú(Òªçìûuˆ€$êEl§?sÑ‘Äã?4Û¯ØÅ:ð´áŸzSý|×ß?D@‚¾Š°ü·›îÇsDÉHrh+Ž˜ìçÄÆMùãóBFÕ®p+ôë¦ÍáhlzùUßÇ9ÄdWu;?“R>‡¶ûœ?ož”Ö»u³¨Z¶î›û]ˆŸ†@r\-Ïp&”Ÿ<Šãû¥SãûfUNˆ7+O.€u([nÀ³ÓsŠgdö¨Í6O¯"[Q@C}è:÷20kª˜U Æ«Ñô`íâ Næ ¦Hr\Òº¯÷?âˆFÒ¦'îtÏÕPæóž#ϵx@H<×¾ܔ´²Â Ù4c±ÛÏcΜW+ñ0üÍ%³ÅŸúÁar¼dÿ<ìfš×€ííøÂ©}0Ùõ-ŒRÀ$:Ž{®CËÿÆ©»fc€&”êçÞ¨¥´þé*´]]áÎÈÊÑ„âV¦v(Û¿\7uÉ/«¾É¬ Kˆüœ`Õ†%t~N°ª‡2mùá`?ÇLR±C½ÇL×µ®š‰?$:p̓ÄãüÏ †ÀãÌ‚Uó ñ‡ Fà¼7Ç5ÕHŽõ>£È\àfsv|»ôzÓy›Ä2 –nxÜelµé’øCa½™÷kµé2¯7^;ó±—3½|%ü¯½²×%ðØK <ÿÖÌügÏ-‰ÇÝÉÉk/vf>{t9ð¸Ý!ÏãÒò£PceÅ™ù3Цÿ0_oå [•3'.T;=4OÉ'vÜéAa§çiP}œÛ¾Û—»ºhÙ¿Ÿ²¾Ûq„öØW‹ŸÁsÕäcnRšÃNþ!Œ°’âÌøšô÷a~z³^.Ôæª;”!µ¹ÉA>µ¹r(.CŽåRDÞ.<ì³7ûrÙgvòÙgß…óàƒvr¬º-‡èð(>û½õìYeÖ›4‰ïrÜ[4‰O‘P9'm˜R"†RT˜÷…+Ø%;ÈÔÄqOpO¬äàOåŠwó½B™îJ–ò¥í†s +Â.Ë8‡¢ë'øÐµëÐ<œ±àÐ$e^»ÊL…>c¡k×nõ”ÕÞÞ|rKàé æÓEþ÷p¸8%-mgÿ{• ŸUûÿ-ð‡ßËdøƒÿˆ÷ŽÝÝ•‚ àï»ð³Àcïoµøvà«þþÁ»ø6/—r +šƒ›Ó[;;Þ:E?ÌÒ°ÝH<.ÚoK”ÍûÕ—( üaÒMçèùûƒç^Ù÷w ÎLxèðRA%¯ch((ú|hÇG“´ã†?+ž€%ñ‡Ô!ž€%ñ– X¨âÁh-2X…›éÏ‘# ((Z7ºÀcA.<ÐÍOšØSõ½ è?oø5ë%?oøçAxØå’³{68lêÉQ¼æXn_-ó÷{Ò⛪ò¬ {¤ò,9S-Ôþúû÷ _yt»0Çkà¾skþh~ûeûaä°ßN.ßI«Ǽ^ +ãí cð1­°Ö+i¸‡ñ +? Y•uCˆáõa¹‡ýxrµÄÆeñ@‰?”—ÕKthp˜Ø?03ˆô†c¦ÿÑÁq¼Çñ‚ƒû4,«y¸3.N“}uzïøÄ¹vsèì?ÛÅ¢~­ÛWZã¸ÍÓý° +ý”©q¨†Z›à8¹zb×ôàd‘tS·ƒðVyKY+gœ‰5{rpsÍ¡k¹÷`uHõtÜ-Ïa\Õ((;¸ßy ‡ûÔ«0zðM¯G-©¾c¹t³ÛU µ6T«Å³ix?!wr™«µ¡üØšº!9ÎnŽ+Iܼ޸:ÿX-*R–ÎìIÜù×|ºrúªÀ¥Y¹ê»G¶Jt¹-ˆTnÚ!PÈ­yí߯7ÝŒå¹vmÇãÈ\[™‹ÖÓ›[Ón®mš§]уägAØåa~b±òŸ#‹vñ§Ú)uÁãHHÇi¤îwÑáôR 29œð×s°Õî§b+‡pR„2/«)r³â+Hâ-µPvz(6<˜Lgž,‰?6,¤4ÙËݰ0u{¿ŸXC³ŸXC§ŸXC›ŸXKŸ`Üøi5Š2®nu‰ú†=Òž-¢ld<ûC}ã~€«9ÔŒ‹ÿu†J4ùlìbò"è•%øÐÂ(7zã“øÃtÉ‹Š$þ8½r^ÅhÖ;ø€ +üae G#>kzŽFâþ}¬`Ú¥é?Œ»¤¢y Ç‘jzwP3ÍîQŸ§ÇùêàÎô±§)ñøaìîd—Ѝµb§?Rp¾êïÛ›ëåÒOõr½Ú÷‹’ŒŸ‡z¶HnžYÚ¨_oØé9tôáhûz§6Iûþ‚:Ó’îûfŒtªÑ‘xœºF–±C yfˆgç*ÙšžèwzpŽÚJVÇîàe_ïà—8óI”ôžìüç¡û~aÇ<ðŒu¾éïjÚ¸@Ö¾ÞiÿE>eý}<#5òœíü̉#˜¯;JvK݃ïú<jÈJÖ'þ0Ô£i‚C7(ÅÉΟÊ)NãvkF‡?'Û/\¢ÖøÕΊ«E=ÓVôJ슦³êEŽ îÈh6hh¤G¿QúÝØÅ{þ󂿆ýüæ¨ËŠYÿçØèÇÌ®s˜“9Uz‚‘ø‡ðãš'¬R4‚ý„cf‚›2$Þ’™ ñ–̉Ç~BZ~”À2*åDK<¶œÓ \Fûzsy쟇¥œÏĉÇ3W׉?Ì¡®#~hRÂbûçgJ<‹L5›ÛùéξY+íäH¡vá-7|¤_ŠÃ_õzñ;¹Ù¿ßnº fýÐŒû0û;†ìÚ„ëm’ýx‘Rwåvè[Úµüêm¸q¦Y[¥‹Û2›é§úœ²Ó¶õ´ÿr¿îx®X‘xl´Å¨é94.¥VqŽû–&®4«+îCšìâ“($¹—CÁM¤¼³º¥Úì©Y«ÏCßÒ¦MÜ·”jiÒÖ¸Ò.m+Âh½{SZø]K»>ì‡1„Üôùåeq·øùõ˼»\ÐÓìì䂞dçô8 [nCjr@jµ.v@š]·eI¼“ŸfyİYUQEÏ•íÒ׌a;÷i¢‹CÕRRå¶zd\”Ôeßݺü93ýupüÒÌšz´oï¡(ê«ýPT8~i·8~i¦4ê)mnªá §<ã‹Vñ§·tåèœßg§Lgõð¶þ¾ÏæLFÿ +Ë­€[^iÜòP+à–·Z7=× +¼éÅÖ¼Øç£­Àã™xÏw[ÇCÅžO·ÿ…ØáÃl +·wûÎ~–àC ¥pËG‰ÇÝZ§(÷ýû‡þ¥ƒ5¨Àã'ÁÊ-%þø`ªèyŸ¡ý}LëxüàKÕæÁ'~à6¯·W~PxˆÜfÜÎÿÁ-%.ª´3“§›,Ÿ–r2‰Çv܃LÂa,®AØà‡÷Cš€²áq§•T)iÉÎÌ̃û$þ8…\3÷¹¥˜„ãçá’Ù843ÿi͘ÉyZ3fv>­3;ŸÖŒ™OkÆüý鋨íÅ5Ï×R?¶ÿ¼†}¿¨D d;ýT"°_,§Àòf¬ôs !y¾Ï’$¿fƨÅÿxPòŒ]Ù Tº*+z]ÉÁÿié¥l—ŽT8îŠ4ïöËq~ÙLíþÓÝžôÔÛ]ô_O‘Šè°e(ô .— Ç*g_üp,!úÖ;Š^/æ'’Þåù81EÝÕ‡:¤é?¾~*zðkfÈøcÀpÈ3Õ (ý m=Îû~N Zïáµ4³9oµ)¸Qú¢¥Ûõ-E7¦'•„âÁg~¬6“_V²ŒÀãÐÛ4\ôÔ¢é94 üxnçémF~šÍaíåi>ôèøþÈúú=4$]¹/Vþ”‹s_¬Ö7 ÝÉÁyüÛœÙ=rcC§èê9nÈy¿uÃFs.·Tàs2"_ÕÝäÚù Wàñ{þê-ñ‡”œ¡!ñ‡DÞʦ­ÀÜÌÁap3=óªKÕ¾Þ8MÕ¼óÏJ$¿qÇãDÌé7»øPâltˆOœ7KÚÉÁžÅ¼)Š]ÚhnD)r2÷Á0ï½X·]pÇÍÂ}0ÌÒÃ/Üxg»Mà¡GY¶µÛ#PË=øË.1Óß—]"ðøA¹¯Yóa¡Rô]ùP–ážÝef¿oïäß·ÕY?¿oïË=¼W'­ð.¹™zÈÍt°?­ÎÕæíe7Ó® +yŽÅÇNxŽàµê*\oÝ! %p&Uظ_¥ãpÑXΫ9Ö[›¾é)³ËÉ|EÎNᩜü3 _É8¯tÕ ß“^.L–Iý¦Êa²•¢pØ5žjË•¡×›çaoûza²½oçöúðÞðq%¿˜é§ë׺êŸgQ]¼ÜÄóÄ^ê†;~…ô^é¶žJËwv~Žñšä˜Åçݧø_Aü<)8Ø_¹]ëKC醧Òïâ‡~ià /ê)‰tó ?’˜Ç.Wµ‹½?çhß^*åV–<]%¬|w«¸Q-÷ˆvq.ó*Àð¼ácuiö©(ïSæ ü|Êx¸·ô´­¾óHém›Š+O•†‡²IYÎTÛ"ð‡öh`O¯×û©§Æ¾ÓsjkHM“®%çâþN„`š¤^7ü¡ªŸ¶Kü¡]h§7X‰?ô Í–xì|¯‘¥ßW[C‰ÇoÚ™ãØ§Ÿä®é9Láü‰Çeº•G%Ûù9V ŽýmÜ/Fâq°¤u +´I<öL.gh¨è.Ÿç¡¢Ñ!?£jy>D-?‡2iŽ«›ùÇÉÍôÇÐ(Ù,Ÿ1rœÜ,?1RœÜOE‹ÏáUž[ÚÛ—›3éq;; ·´—x +|™ÕÕ¾éïÂ+‰Áöõ¶AϪvüš"ñ‡p 7—¶ósPÊ‹Y;ÇySöà»>‡šØËw½Ð³r¨Н¨ãˆS´©ÕßÎO¿™×ïí â Í®>uÞ¿ä×;?wÍ•xÜz0—º¢gÿæ ‡ÌàbWWôêßê^ñ‡ã¶¦é];àøPã™ÕöåR‚^wHCde›/k8Rô ®f³Kÿ´š‡g»]5kÃ|ñË’™?ùjZš +ÜŠÒ|z©D:8Ô'48nS®hpÃyj“ü‰MÓCzic¶]¦’íá*ÙVÆ9ôºhÌivÜÖ4æTiOü}ÊIthOsºóg ˜Ï/-Ýùƒ[P×âý¼ºiRÛb‡~¦´eº^š ÃØ”D!7;=½ÒsˆãûƒžCì@å–ÕAÙ?ÁNwOtx;CëŽû‹³8¼UÌ=›{`%ʹpì9ιøÃ@…Ä—£_©ß‹Ä"ÜľÜÔÙóxìùæ ×{ÊaÏWàq{92­’ƒÿkƒÄ6T6ͧQLÛ*ÿk§Œ2ûþ6Îp–xh +SµD,þSädƒ²R¨ZÈÎ}š¿à‘2­<ß'ÓjØ¥“â&açÎ!ÎÒ©o„yw)n’†}wiÃ娭éáÙ,ÌfÙ?Pw¹|ÆI+î`^n*¬ø‡­2¿TÛ¿¿<Ø×›»co wž5•XnšÿP[µ&<qVLÛÌÌ–µf;ÔV\Z³rjVÐÁªÉcç™YöÍêœsd§pG³&§Z Çvq Ç!kÔè®Ù5UºÇ·|§‚CŠëµÎhG!* R³÷ +–pC!ª„ÃÆ·«UÂá\ˆ*á¸ðs¢J<,ü|¢Ú» +Q%—Ý®BT‰‡u·ÏBT‰‡…·Ï6Â{‡êZ/]-j½?Åø¡×ûÄO'9;¤‡*¯8SBeþ“]¸ã¿„øº^°>¿‚ +‡)ó}vܱpX€M…Ão)–xKá°Ä[ +‡%ÞR8lÿ~ãb-ûzÛมÀŒÛÂq:?ö®8—ÀcWd¬8—Àã¤ÐÕÅÌOR))løCFwç#låÃc§Æqȸ½öý:ÔöNß·dÇ‚i¼ñ?ätGƒXå‡z'·]9à<=ËNþt}Ǿ¿Ø:ŸëUíç—T\Ù÷X•»xI<6@+wå’xlÍ·åZÛåaeÛJYà;ƒ,Yàv†vnËe>ðlᇢé9´Qã‰[æð¬N6x®Nv( ´&„Hµ* ŽímQXܦw¡.ßC­qy8îv*MVw/&‡J“Æ*ç½ûörßµ`ß®2O¯ÚÞÃ_×Î îëF%aÛ=ë?é:>J‘¥-ð‡tÞAGEÀCÇÇNΡTºkrŽ8§ÉKüÁ¯|tþPŠ=8²-ð‡ÒêÂùtfzZç£.ð8íg$I8öÛçѺ¢ƒkæ‘Äã'¾Ñ¨‰‹™|öó³]|èÑ«v;ûÙÏßà8,@o^{‘ hìÔ¯ Ivî¬ Iæ³È…áû÷…á¹;èŸ×ôHv®ŽbféäŽb»4à(ÑjfV&Ïavþ¯avi[-Â$G‰V‹0;ý«E˜}W‹0ói§,“¾ãSÄ•|œêÊQ1«²¥‡£`ß®ç<%‰‡Vj +…ãþvüzA7ãcàJ«î'Ÿ=u¾éã…;T=pëö¾;áVõÃÅÞq£ùKŠÿ‡Üâࣇæ”{è¡ ¿‡ž§.ð8õº]úû˜ÿO'ÙªÞdëeÍÈ‚ãûÔ,9ø³:™ÕC¦¶,ví@¹Å¹ÚÙIC|K·/—r…››kÕíëíI_^‡ï-‡Äâ›òÿ9Ä›2?4o.þ”ë¦Ìñ eò¶fg(ucw’&`ª†Om[¦sQìü/Éq3rÄa -³Gþ˜KÉb}ÒçÛ¿À¦8Že ü±;Yýèζjhþ0¬°Om¦Ÿj’öõž›†ïßÇjž6<.à^ÝÜìû»º¹I<ö¢V773?#ÕmpìDQ‰QÜð‡zãÁÙ5Vq '?%;{" 5)vñäîoÁ.>Üþ­Ú/ ,«Ñ.>œÝTíâɉ°Á±½TÒ“ûE%=ÉÁŸzéã ÎmMyXS–íë]S–íòü¬¸1¯÷Yqc=î<àl—ÏÃÔäUAc•NV vùá©Ì;pî,Eïê£ÑÎŽ +ìü„}çÙËßé?66 ܈°†Æ&ß‚MSQ%ßsk*ªÄã{ŽÊʆ?4*Yi¡Ÿ0~56xláQ§’¾ÿÀ¡^ˆOÚùSVå¹ÀìžÎ),˜sšÙâ7󓿢îüÄ÷z[¥~fR¸TÑL?=mìüdÆ(ñÇfIèœ0hÕVÜeÇã`vZm¶ÌüI«Í–õx%jCÖìâC=Ú÷—+”ü`³–†˜W»¼QÆ Cœé­b8´CªU“ƒÙC}S¢CZÖâŒßžS¬Ú™:Ó¶î ¿Wm|â·:ªîµ+«÷¾)v|Õ¶*´µóµRˆ¬§…ßv=9µ\\§ò‡jW>Ôår(“LÕŽ»”ÞBjr,7ñsû÷©¸7Û•=†t¨üa_/Lûl;"ðÇÉ®ÑÁžg—«ò¡Ù'»ª=Ž>QªªÎ÷%Ö«+S-C±ëî!R»K ‡eÅ=D’?…ZÚ; göÚçÏ´`qJçI'Å/ðØ ŸTPt]àM;–—/ðxVJº60vÑæ¹ÍûDZ‹öìð!ðóܱcg&•ÏsK·¢ÀãeÅ +þðôÀ3²ìôž‘eçOå~ç]êyrÉh3ÓOV@vÛ´ù[uÐO·ºGøéV÷ÐC×tqÿøã„eê r=ƒsöÂvJļžCœ …ín(l—ð/ œ Û%üP©N…ívbVa»Äñ«°]âñ«°]âqáü*l—xXÿ,l—øC¡úåZï³°]âa_ga»ÄãÂóUØn§¶Küo ~¶Û×» +Û%ª¯Âv‰Ç…ü«°]â?Çø¡×‹'nS~çŽÿÄ÷¨×‹ù߇^/nD0Š^/”‡tqþ®ù|Q¾æ•ìü¡§“ºãa£êÕ“]~¨¨±'ûþ¦iö«õÂóE1µ^(oCPë…òL1µ^¨niZMÏþМ¸ì‡ÆóFÌçºÖoªÚ‹Ÿ¦ÿbj4A-¦­â½W§Ršý^p˽*àðä?ïUߟ¦^\¬ÎûÅ*ðø¢|^¬¸(×Å*ð_Ù7®ò¼wã*¿öðïúφ³ÃyãÌðµq~°pxß*Œ÷}x܉ç¹oÅî¹oo2ˆ_øOƒHàq'›§Adeç»Ad¥ÿÝ ²òçÝ x“A$ðøB~Dè ´ "‡çøÝ 2óçi}b¿ çxUãlçø•×-ÁßùþÉå¾¶² Éåþèr‡¶á± JEcÃãW{r¹äЕ¼/÷˜)r*ñ‡œëŠ5㹾оÚU_hÿ<õÚÉ?Ô#r}¡™ÏúB‰? ©ƒ3ÓÏ ++Ú·‹Vpˆ'npü¹$Xâƒâ/föGª)Øñ853q;k‰?äúq¤Ø¾]GßÙyh«3O»Ò>ÇGøRP9T,ñ0@È}„’Ch˜l÷,˜ÆˆwûæÎ—WlR(=:è§á°;90ZÌÉŽóKm{zuð‡ûðTûÒ<Ày?a‡l¿HU;fþ?ûðH<®)›GúÓÐß? p嬉Çï´«FϯúûÇùÝqapãžÙ8.ªÑíI›3øŸóyà7…xx—Þe§XŒ¬iÇïfóò ޽¥.9Ñ!Ëùâ׳¬Ñ+vw03‡¦éÁïœ1iÝpxõæiv|Êúû‡WæKëüý\9œeææ60vþP8Ë®:yÚ«Ãøái¯ÙÏÛÀ˜ï"êzS¦9WÄ5ûñ¢Š¸žÇkDZ‹3.øº‚>¾¸Íu³µ¡øPÛ›êP%}· +Ö‚¾Û¡'X¨žÇ$áÉ×GÏ÷ð\ +h“Ó©¨Lâqr5¥… p3½LKüaê%'ëJüÁÏ\v’À¦^r¿B‰? cà~…“ç§ãx ¦ãw~¦+pï‰?7 žïW¶K¬ëóp• ~ðK§ŸYíì¡Î4q'ÛýóêÚ¥§Â¯4ûj©¦,9¸ŸåwÙ¹Ÿ9™ÖNOádZói‰¥ki>ÎK¸²c»(@Wì§kÊšƒ~ª)öÓÎó‚ý´“xyäat­ÝÉÕYk·C£™öpˆ7{Ýٽذ¼d3ù±hñÇɽԌµØOoJ*qÌ—5‚IÁ.>)s/;?§!™wq;äJsï³x¦Â£iìôÐeºÁaaÙû3ªÀ‚ó2ñlÍ~VÈÃt•Îní̤òì™[f51Nâ[äçý|ÿ”¤Ö#îwþ;‚vnÝ$Ð?…hê#%À_!𴦽(Ð?Bè@Nëöñ_B8Qn_ÿ{\L+à¿…ðÄ%yùÍ‘Ïÿ +ÂsS_ÿ„žÀdÝ#n»Ð%üK¯‰¼+ó6µ¨–Š9Óô®~Âç}i0z$ñlꨊí_#8µCØhù FóÜëžÆé³mÿ¢cT[Š)§QÉÙ,0Ü!™O½Eìâ7éÙ‹ð›ôÕÛŸß®mÄßð«èŸÞêÔ·ïÿ¥¿ÿÓÛ?½}ýö/ùÕÛÿù)‹ +endstream +endobj +242 0 obj +<>>>/MediaBox[0 0 612 792]/Annots[243 0 R 244 0 R 245 0 R]>> +endobj +248 0 obj +<>/Subtype/Link/Rect[144 389.38 162.35 401.67]>> +endobj +249 0 obj +<>/Subtype/Link/Rect[162.35 389.38 171.52 401.67]>> +endobj +250 0 obj +<>/Subtype/Link/Rect[171.52 389.38 229.6 401.67]>> +endobj +251 0 obj +<>/Subtype/Link/Rect[229.6 389.38 232.66 401.67]>> +endobj +252 0 obj +<>/Subtype/Link/Rect[232.66 389.38 247.95 401.67]>> +endobj +253 0 obj +<>/Subtype/Link/Rect[247.95 389.38 251.01 401.67]>> +endobj +254 0 obj +<>/Subtype/Link/Rect[251.01 389.38 289.52 401.67]>> +endobj +255 0 obj +<>/Subtype/Link/Rect[289.52 389.38 292.58 401.67]>> +endobj +256 0 obj +<>/Subtype/Link/Rect[292.58 389.38 324.37 401.67]>> +endobj +257 0 obj +<>/Subtype/Link/Rect[324.37 389.38 327.42 401.67]>> +endobj +258 0 obj +<>/Subtype/Link/Rect[327.42 389.38 346.98 401.67]>> +endobj +259 0 obj +<>/Subtype/Link/Rect[346.98 389.38 350.04 401.67]>> +endobj +260 0 obj +<>/Subtype/Link/Rect[144 300.84 162.35 313.13]>> +endobj +261 0 obj +<>/Subtype/Link/Rect[162.35 300.84 171.52 313.13]>> +endobj +262 0 obj +<>/Subtype/Link/Rect[171.52 300.84 195.35 313.13]>> +endobj +263 0 obj +<>/Subtype/Link/Rect[195.35 300.84 198.4 313.13]>> +endobj +264 0 obj +<>/Subtype/Link/Rect[198.4 300.84 230.8 313.13]>> +endobj +265 0 obj +<>/Subtype/Link/Rect[230.8 300.84 233.86 313.13]>> +endobj +266 0 obj +<>/Subtype/Link/Rect[233.86 300.84 249.76 313.13]>> +endobj +267 0 obj +<>/Subtype/Link/Rect[249.76 300.84 252.81 313.13]>> +endobj +268 0 obj +<>/Subtype/Link/Rect[252.81 300.84 285.21 313.13]>> +endobj +269 0 obj +<>/Subtype/Link/Rect[285.21 300.84 288.27 313.13]>> +endobj +270 0 obj +<>/Subtype/Link/Rect[288.27 300.84 336.56 313.13]>> +endobj +271 0 obj +<>/Subtype/Link/Rect[336.56 300.84 339.62 313.13]>> +endobj +272 0 obj +<>/Subtype/Link/Rect[339.62 300.84 381.19 313.13]>> +endobj +273 0 obj +<>/Subtype/Link/Rect[381.19 300.84 384.25 313.13]>> +endobj +274 0 obj +<>/Subtype/Link/Rect[384.25 300.84 405.03 313.13]>> +endobj +275 0 obj +<>/Subtype/Link/Rect[144 212.3 162.35 224.59]>> +endobj +276 0 obj +<>/Subtype/Link/Rect[162.35 212.3 171.52 224.59]>> +endobj +277 0 obj +<>/Subtype/Link/Rect[171.52 212.3 205.14 224.59]>> +endobj +278 0 obj +<>/Subtype/Link/Rect[205.14 212.3 208.2 224.59]>> +endobj +279 0 obj +<>/Subtype/Link/Rect[208.2 212.3 247.95 224.59]>> +endobj +280 0 obj +<>/Subtype/Link/Rect[247.95 212.3 251.01 224.59]>> +endobj +281 0 obj +<>/Subtype/Link/Rect[251.01 212.3 271.79 224.59]>> +endobj +282 0 obj +<>/Subtype/Link/Rect[271.79 212.3 274.85 224.59]>> +endobj +283 0 obj +<>/Subtype/Link/Rect[274.85 212.3 303.59 224.59]>> +endobj +284 0 obj +<>/Subtype/Link/Rect[303.59 212.3 306.64 224.59]>> +endobj +285 0 obj +<>/Subtype/Link/Rect[144 85.81 162.35 98.1]>> +endobj +286 0 obj +<>/Subtype/Link/Rect[162.35 85.81 171.52 98.1]>> +endobj +287 0 obj +<>/Subtype/Link/Rect[171.52 85.81 195.35 98.1]>> +endobj +288 0 obj +<>/Subtype/Link/Rect[195.35 85.81 198.4 98.1]>> +endobj +289 0 obj +<>/Subtype/Link/Rect[198.4 85.81 231.43 98.1]>> +endobj +290 0 obj +<>/Subtype/Link/Rect[231.43 85.81 234.49 98.1]>> +endobj +291 0 obj +<>/Subtype/Link/Rect[234.49 85.81 250.39 98.1]>> +endobj +292 0 obj +<>/Subtype/Link/Rect[250.39 85.81 253.44 98.1]>> +endobj +293 0 obj +<>/Subtype/Link/Rect[253.44 85.81 300.54 98.1]>> +endobj +294 0 obj +<>/Subtype/Link/Rect[300.54 85.81 303.59 98.1]>> +endobj +295 0 obj +<>stream +xœ•}K¯mAN(]¤„Ž QZºƒ$<ÒÚ¬zWe)âýnèÐ<šjêƒÔL2ÉÏÈ?˜²kŸ{\^û¸> z7ß]Çår¹l—?ýò¿~ð%Õ¯­Ô¯?øÛ/¿ùƒ/ßÿòÓ/××6â×·ù¯¯?ùRCüöé¿ÿÉ—¿ÿòÃ/ÿø%|ý?_â×ß›¨ø®¯øå¯ÿæúú·óŸ‡¯ô?ÿôwß¾óñ/ß¿u=ÿ÷û÷~ÌÿÍEÿhôë¿¿†ðõ?žŸ¢ÿ6|mó×xôIåÛ—_ù™ö«?ø"ö5¶?ü÷-xÏž7øïXðq=FÙànÂë#üëáŠÒ6ü¿²ñåQÓ†ÿM£íôü…o”ø?0ññz¤°áÿØÆGMÏoÛøþèþ¤ðÉAÊ´ÿû&>_JÀɨÔÏïšøµú1·+†©›â§zÈúcyä}»þ‡‰OåÑ .ž1õG¸¸Åœ5ý¦z‹åz‡øÇRuçç_™øy|‹C]Åv=®áàK°ÓóŸlüxÄ}¿þ­‰ŸÇW©›ž^´:7¯Ç8‚Vç¦úŒ£=jÀÕašÇ·:ÔIº’¶eÌýJ¶O +“?—·ƒ>_&RlZŸ˜æ@JSÞ"~^RªüLã~^Rnúû6JzÄ‚ë·4ÏïØ×ûG&¾N}èÿT§>tèóTû£xÖÛò£zÖ;móäÐ穇Gªzæu»ã<ÎëºdÇy™×µ:¿æý›§9ßΟ<ïëœqþä Túê/M|ÈÚü´éŸç=ý1ëõšú*Ïów¼yÿæµ>4å!ÏûºïòlÞ×yÞ×ï.ÏûZ¹wö~Mý ì1›þ2´}ežß<õCíz¦~Pö˜i/å6õmtì×<ïÊ|¶ù?qE¿©ÿó<¿ÝÁÎqS·¦ú/WÖÞ¯)%\Z]™ìŸ¢\G!‹æì)LN†n’Òù!nRÒ§^kÜdÌÈú뇨ÆEb&ñvT`š=¡{ðEÓóßIÌ`îpÔ${ðS Ž oF¬ÂT³S-H¼y …iVMµ€ó?%вH¼EHÜüû9‘Ù€ó'O·´ã²ÏQ ùÓªšÇ'Ÿ¬*8L­Yvqø;H‘ùöjûE1‰?Ä4*Å@$þG?²ƒ‘¬ |½˜¾€xòŠ$Þöz¯FAyío{í¡’×.ñ¦UÃx$Ï÷çñUÇÝöÚçñßà˜2yE8ÿóE^8¬>cŽ€å!æBQø.Š%hzlþ—üpÜ.±^”ø?³ñÓÈNòÇqö46²áË”‚êû¦ö}<®âàφ†‹[šÇ7:Ä!M+)íÛk¦•”+Î +RŒŠÇú#;–;}–²‹ÏïbÕ¡=]¾Ü4±ÓtA®îX-Ý¥ŽÛ"Í»T‘o‡XJ´Š+·T§ÍÜqéO-êÛΖ +!8,[!t\ù¤é‚(í`¯—BÅAϘ–ù7#’iŒ‡rÌÕ§)Ü3.>yšÂÑajçyx=wužwow°'Ï»w8ȉÑuUs€bàì§…ºª‡¦¯jó.Ê9é«ÑÈd˜Ã§=—¢¥ßhÌ»T^ó.ÊÊk´™C¯?ŠmØ¿o¾dzMp\Ôy^¼Ñá†äîºXò¸],æQ)ô8à ¿L/¹:ìŒ2½Xõ}ó¬”p»‰Ì³XÂí&:àûc4|½¤§kÔà¶BqZ 7Õ¼#Zßà?0át”@›*y,ë]ÀM¶SÆHÅWJ±•ñ¥†k:CyÃ2L¦3´Áíÿ°²ÀÛ¡ 2ÖšƒüÈ/˜8ù*Ù—k'˜µ¶³ßN@Hƒ¦À›‡0䯿ŽÀÛÎ}IìÜ ¼ +£ØÇpÐ_§ï·ÁíØDíiƒÙI¡Œ h#0{zRÒiÚîaºN9:¤‡"%ÍÁžÑµtÚžýtZÀÙ§õÕN?GJ:Î~Š”¤ä ?®H’ÀÛ®4E>2®Mb +8óã´½”&´Ãóè–êÀçø¸<ôä®é9„=‚–}{³JÒgñ,2ôY´7·zÆÀ…mê†á¡g^Ò×.lv²Ñôü.‡êóV»n3ôqpî"¾¿cÅ‘P~&ÊíÜùoÇiÓôÍ.ÇU¦çP&)4Jå-M×LUv2AäÇZ¾6R +¾Ëƒ| +{êð÷sàG1xçÕÞ~ÞS¹Ø5†·—L\L-¸ê§|˜ÖìÏ•oQ˜þyzǾÞëˆ ¸2‰óð–â`mì§ ü¯Ùq•ªO—]4EÉ¢îô¡Éù9;¬’´î1¹Ia•ìÐÍ”®2ÎNŠª\Åñý§Í#ðf؉Â$JšmÇuž.%͇šš©ûâFù*Õq·pMMÅOošþ¢Ç{䢕¹)Î&éûþ;î4?»³‡éoQ߃µ¢é?Ô¼­}ì0X/œ Óß»–;i ×yÉWÐçåøhšþCJb—å'e (OÁ|ÑËq…ýÐó’çùŠ;þG?¶ÿAÕ¾ˆíÃÎëNY¦1œóÍš9¥Ž!  +ŽrJƒìœ˜ ù©+[Õ‡¹MŽbi+[=_rP¾éSsÍKrlooÚ÷²ñc_ü°ñÝåëPÚJ‰¸ü—«r\õíJˆ’AïGJ+Q¾Ž3‰×ÃáŠSÌ@_Øjb'Æ +¸y3RqóØà&c¦^¦c+à¦KÌÜNCiApÛƒ¥’øCD£òëÀÛûj\"ñ¶‹¶—H¼íQÇôýsúÃ ßømî³ïßðϼ’ÏøyÃSc‘ŽËNÈ+p ó?sàRÀm¹¬À¥ÀÛ{YK˜*ÁqÈ>ç¡lp;þ±â 0õÏxz´¨'y˜Oi(ÜΚgQ}ÞŽ>QΰCvâô úþ}ÛŸ¾:'ä£Ë¥.!WpÐCÏOÍAU)|{) E ³¾I“?ñ¡.!#:ø“ƒÖ=v@€ºŠD\·qW‘ìXo©Z·W†:]vSz#ªøY§¼’¾³Ç¼*¨þ&yÄxÙq3RÓE>óÜCqD~½„÷ju ‘xÓÚä$ —Mî@âPäiÞëJ÷|ÏÆ­{јâÒ=”´¢tÏ1iEéžc4Fé;M!­¤mT8©ÃIÛùc>ØR4Æ0c^cúnVÙÁ¤é+:Ž +§ÄìÔÛÕ.»©¸*I¥±ïïVMüΟڗ9–K¡¡›v†Q+z¹v¨mµCÁw·ß.ŠCíSÓFç¡JâÀ=Ìþ±Bg(=Ïö)ðz¹øÉ!9¬Ð*”Sñí¥î)ÍapqRÇO 'á÷(×&\šóT%¹âº!“ãØ\êµâ朻&ߎ˕ÛMa/·ô‡ÃèÉ5hîœ*¥¸ç¼ÜviÝÛP˜ª9–;}œì04r/ƒ¥m2WrœÅÑ9[•6;9\-µߌÝPªËpX‘\-•qþPØ)ìòcW‡ÅÊÅjèþ–صò1­Ô’²6ÄŽq°ÄÏÔg£gŠfÙЦ$<[׸iö•Õ.àfàfŠ%E?ûú >8È&àv؆ÂZiÃÛa2ÇçÔßÃZ‘ßþÐïw°9+ð‡òªÂ50=SÊâÎ}»<‰Šç÷ïúñ&΄@…ʱâγ¡…ÍZqð‡r¶ë†·#CÔàÏÃOJÚÎøÉzoEó™|Þaóþ¨ÃÅ™|×ë=DÚÊ#8–Kíu§k$½Z[:GUÔØÜèß\ªöR䨰òVÞŽPŸ›†.îÆëдqÚ§}?Œfµ]L—VV‡< ÌžÀÛy4T<ïYo.®›… +²Ú¾^;‘fÞ¸+s;‘¦­XŒÀÛÝo[ÒôѬX ,?ÏzxT™ÄU“3–ÅŒÚÚ*?½Úº¢5=‡ÐVá`ªû)q¨f\R=–º‹ìœ˜¨>þý8¸/*þÜ\78ÖK‰=ÉAÏtèRvÐS²Þ/;ÔV;€°:çn¹ n¹›ç]t(Jê|ÙÁ³649‡D õd‹žÇÔ¹üùii‡vNÔe.àâCyC%áÚò†.‡ö¤N7WÇÅ“:ÝDù1jËê€ïœbžÆ-n˜þ§É-ð‡Lôes ü¡ÙÃJxÛ£iå‰`zŒÏ&©0ÔWDLàíÔ~2½wi;ä–WÍÐCnyÔôÛÝ$¸ë),ül}ïäÛO·O‹Jàí§ùÞùñf?¥–GÇr©ïiÂ×§M• .ÏïF5ºÞg_Rx½”Š.œŠžë÷·ÃÜ”Äd˜þ´JÈÀAõ½}¶]_™®-½eÆàØßi³)ù9 °]÷(Lâø|ãA€¸¸‘‰Wqí§÷¼“sÈ\ú´Û‰ó.mí©Ð0á»EsYRÆÙ™¦qåFCÕç=¹[~y½¿eÂô'nWŸ^ꪴÏáíshëáØ +4\ÜR^ ªÝxÜmÀÅŸÞV=Ö µ{PÚðð[\Ö õUÖ̱ÛCrÜÜíaÿ¾ýÞº¦ç0'fåS¢úcŽÏÑpÈgž·ovÈÏj¾ ³ŸfÒ^Åq~ù¹Ô¡Îé¹t§çÐ}3jcì0&¦kcÉ~nÌ7õyxͼ´~³—K¯ŸÁÁÿÕV'Ïìr·“×ëŠý¢ž½–ÇÝNƒf“ãóÏÇRxµ«û&¾»ÓM.éy&—û;/÷ËÁê®ñ³ûž[Ž +'ÏuXnó`åÁݖΤ¯·@ 7ÍžõÃ×k „›§dP½’DÛ3YЦÅ.¾xòÌŠ1÷ºáÍ+GÀɧæ•iÿ¾í¿NžwöÞ3ùoû¯‰s%Þ7P3Ê}s•õ•nPœžõŽˆó“RÅwzì°5Äÿþš2 s˜*ÜqŸCf%Þ~î#¬;Øß<¸8O•¯ÄáPYéíE¦ÒâüYSiñï¯Lt‰ÿuÏ™è°8Ä+àg‘ß7÷Í=ôºLZ·ýõ)¶¢tÛ¡lŸ§¾ÁzœÊü•n³cÔ»2ẙóÊw¼Ù¨–òÊÕ÷mzJкÁîÕIuø»pb++Áù_«ÎC>Yûør;wÂųs×!üû”÷]qvr·ƒiY:°.ä±)ûöÚc_¨o´CWñ˜•æÁ²7%Þì®NÁ)À‰ß»¸Æ }¼Á˜®M‡C´'û. Š~¨ËÂÔ‡ýˆŽPôcg«Mÿ<ÚdˆCô#êõðÜ_ït¸šã>âÔõä8óòÅüŽ)ñ¶ûM¹åýI£M¢Ã˜¡ÒýèÏ29¤8=”ŒÞp}ÎÑÇýÅá’‚ï/'‹7ü|q²xwÐC÷).Î-qø-ñè®®w‡/Ù ²“ïiˆ<®hZÉåÙ®ÆuKøqY­©aýÏÝ+æ!w¯zF¦h|¼hZ‰S=—‹ —`~R®x¸¼•Àé‡8ý1Ñã|\J †ùYæ}®x¡ûÚ±¿dÎãBb[Ï‘€Ù⤋K8/.á§Q/8íœÁÒ6¼¡¸–ÖxÛ¥\³ž›ìÌ´#dv>MÏ!)}E”ÞÎI[%ðzS¥'‰·#z™›FKü!Õœ›Fãë·\Áe9n5‰³§ò‰·ÓÇëÐâ|è P´8zD->‡9¿à‚ÉYïÖ!fréݲcÓ&;þPLMµþqˆóV)¸4ÇxQó6x{c¬.qà9¼?íÔJ1\yRo€æáNZõò]†Öý‡¹ºÑ¥ü¹Öÿþ¡7âå:.±6}\ /Ç `þPo€ê g_òyÑãKóJW/Í+)qSgÑÞ«QõQ´‡;\œ<$ñ‡Q¥çc˜÷ JÙñýPЇ’ivNÚѺv+¾S)Þî!;µ!ñ,œ9ܳ[ÂÍX- 6qˆ'Æd\ì¹éÀÎ;I]ºƒ›• Ÿ`£05®|’x;´ÕxÎ .j=h5xÝ4—‘—Æ¥<;Ñh$m¤¦ä~FCéç)¶Žý¢PÏH¸*¡Dš«àòI¡‡OAy4ÕaçÕ ‡œ»ê0ùÔP9;Ø¿:$ÃâOm²CYQâMñð§T}¼™.—¶zƒPª>^‡HÒÐ> ]·ß²¶2ìHä<îJ]Ù‘Åy|ã.Ÿ¦ɃGªC~hÀΟÃ`Ú é±Ëê/n[1eµT†÷‹Ú”]þíÐÓ¼|³ã|Ñ`Z¥~ìÁ,k ¬>ËC¯—B=5’åÆX`0‹„ƒY$Ì"áÀ` G³H<2˜EâÎÆ¶®þP}Ä6Êœç˜ +‰·}ï©öÉ9ƒ—K6ÞpÐ“× ©Àú4~x;VxÞNÿšS!ñæüïg-,Ë”}3vþÛ¡?šS±ãíb·¶Ô,>«øHâíPOŽÅÙ¹j•$Þ| c¤áí¥dš‚³‡gÁ6\üy¬c{9Ÿ&áâÊM¼]úlì(ÿÝè0®RtÃhnFˆ|Zªÿ=_4ƒì`Ã4 ƒlzòzPEåŸjr‹g½ô¸¯×î\XVh]à >ëVàM³‚=ÍA>ͲÝ?oÇÚöÆÙÙ¹Voܲ9س;Âßça³;Þ¬90?×íøÚª-ÆÕCЇ“PõÆù=ŽÛšfÓ¦K[JMߎ±¤¡Õ§Ž²fÙ:ð7u~(¶jìô +üa0Gb'ÿçì[‰7K+Ÿ£oañ§˜OqX3œÞã°–(FT‡C>WgJœž¾RÝQõCÃlSuÐ3º¶ÆÅSs½ûq·Øy½7‡çÂÃi.ÏT=¥è9LÚÈœ†ò?Oë¿G\ž)è3ú$+ݘã183sš}N;à¦$Áß” 5É!<Ô´f;„‡x,~S<çrà¬o—Cîçµ<«íE;ɇ¡Ôݾ¶2œwˆe¹’6ª±¡ªÀ¾kz=)WÏHx³(HtýýCph%Œ zŸ{Fîß?‡ªC/P$ã#{¿a‘°PƇõ~Ã"¡ìÓû l2=CAè›YÁ@¬à‘â˦KBýjäÏý!ÈeîTS>ÀÇÞ”k‡‘‘¸â7ð¡ +³û¶&”!žQ>n§ö |=ehó¼º$óf{/ÉÊÐ(ãg)Cc•Ÿá#lSæ-B/xÐɦHPC6·¬A…n¬”zèlSîNoàáŽa%F@ÌàHN70N}žÈ ª‰’4æ˜&v!¡£ŽgAÐlODɉmMŒæ\7…t^7cG +·q7¥^l2¾ƒ3Nyd9È:ê*ƒÞ>ÔR¦Â4SCïŽ +T¡lÜV ¤‚-b·Í…Ë®Äúlj® +¨yp*ûizOIpÃÚ9Éb%º”Š®ožÀ +“L!sçèzUqh¤£dP. (Fœ#ÄÈ.€£€zÉ?Çš¢àeÓ¿ƒ›׈r}vÌgM'¹<kª êz~`ë£J(˜Œgœ#c^˜04ëT’a¦‡–1‰Óc±/S”PÓë¦QòËö\ʇA¥y×*DÓQ”Íœ#ØlWóШRT9?{É`*¦Ìk»GPöy êsiUš¦Q‰}3nm¾¥Ì ¤\÷¼?räÜ\$5mh»ª²//à‡.²«-¯ü¶ÿ¿Úò¼y¶å…éÎÍx»hgµå•øCâ ·å•x{BDZ¥¯ènQ[šàX.=*.˜”HS«c» +‘’x»ëMå±Pør©mLq¬·e>ÞoG½æI ?[<#9èïU‹ÿ¡J)ñ¯—æbìºá3øÞøS›­{ìN!ÏÌt½Lqœ^ +§Œ=‡ˆÊr`r(oeàâÃy+íÆy+q{o4Óÿl4ó“šønp;2ý¶æXm-|ß ü! ´r°K²ZqHò<é9;ˆ™·nÙEÍÎ!£¾ÍAÏ´ö‚‡9ô±Óhz“9E +îà𣕦£V¢IMiªÇrH4;Üq¶R +—EÊY+»n°CCÔ¯ÞÁÏéa•‚ s¢›wçÿ! ¥pÒ +*o©t}ÓÙñ€š´<#/Š3i‚ƒ/ží¥Lu¬÷Y¨‹C_¯Íð~Q¡Ò.>vÌëY¨ó“æ©:®F.lÚùi¾yP¡R +8ÿ¹'MtàãÅoFèñâž4ˇ+•vúy%Q[‡Á]»Qve =„ìx;N2Ï»úþ¿>¹—kF$à¤]s{3ù-„ýÙÿ'±áîpIðmôÏÍ{"& +¼Œ¤¼¡•©(ðzöÂW¶þ×Lü³S‰ÀÛóyUó üÁ}ZÕ|o—iÐKðçì¼{C_??cç+ïÉàæÝ¹¹88~ªdEŽíÌõ ¹s¨*à.ào¿QO«v÷ð>5=¶³Ky;Þ¶7¯ é±­ëkµyúLšïÞM"ß^ÀƒíÜÍNsTŒaò§ÆTß?:C;ùG_H醃/”]g7æ¦u‰ý®? $Ïi¡WduZ ª¦ß.2iÉÁ̶ +4Þ.˜ÖÎUñ£BÞJÙñvEÊÔäkâüº¯~öÿ>Áôÿ½¦Žü§¿û¦;F)coòÇO¾ÐÃãõê÷µ~/ðóÇßù±ñ)ªÄšnÐý÷gŸú,Œ&WsNjç^Hü!#(‘eîÀWŠJKü»¥½¯öí¾zÊ/~_¯¹ó9C>>üNÃwí›k^ÔüßÙðNð¯ðûÞnK¢R¥zÿy½^ðç üøì;‡Š¼F¹˜èW¨¯ƒÄÛqîÎ%7o*WPJ¼ÝÌŠîÂוÉý—xûr¸e…Áü¡»°|½1pá¶ÄÛ-–#n¿Zï&Ao7J\yÿ}½¸Oìã³ïÿÝ}ÜÿÂÛý/ÒÅV^ü¾^Sô9 ~§áEÖÉÅÁe„Úz¾ÔkûÞîK*ê￯×Kþ|‰ÖŠdÿo÷¿9OܦXÞ_¯iúœ†k}ý ¾iÕ`‹>"ž£Eïè;=hã‡Öõö¶·Biæ°ê¡QiÃqÿÅžµª}WÍûž½Ý÷̘þâ÷õz?ßÓßäjûo·¿I)fOMµÿ¾^Óô9 ~§Án´4Ý—¶_Âvíâ§UX=¤ÀOaœB¥ˆ’Ŀ۬;Þ^ð¬½ÿÓý÷õš§ŸòP|Xïãþ7Þî3Wz¹½ÿ¾^ÓdÐÐ4ì¼ÊăVñ}œj~ìß· +SÑ<±#ûÓ‘Sô¼ŸÇGowž }ÍÓÏyøña½ìq¿ñ¹Ÿ2§çèåo~ÊçnÀxâ~7Óù5KâO釠ùcg²Q&ñæÈ4jÌ™ƒãû‘G”I<€¯ìa†íØ.›¡øv‹þ¯Ô.Eâå´ü2.ñvèµrM´ÄÛ–amšÛÐnEÿðŒÊÂ%þÐ<íbU‚ãå¸âë†vhú{ç›Kॶ™o.t¿¨³~Üñ‡g×Då'°äÇ#ãì¤>ü½xðY“s6ä ÎNŽLïÛe†¤:.ÎÔX¿$ýùÒß?4âçœ[‰· =2œ7¸mçU®­ÃñíÒË=ö½¯Ù±]“&$þØ÷¾;´[¤¹íç¹Â§‹ªtóÀµ9ê*ípìeß§†z´9•÷*m~Ê+åÙì°|r¸mß`»89U}^Ó•Ãç+åÂÏðn t*ë% ¦¿r' œ?•›IÀ€,í+ãú-íê ¿sqœÄÛá×Îõqè˜ß(+ —·yூ+¸L×£ÃÈ4Œ¢á2Ïë4%\APQnvìæÇ~Qw³ñóBå¹!âüÏ4(<;øŸËÃ/Y/×.d­+¬Š_ª’ÝávÚm[aU˜ûkªl-åy•v°‹`©Àª:–ÛWà–¶ÁuÁoÏ.Ü—çÏú4Ú5±Wæ<T{–pQM ,ýÔp>9œµ£>½§Cî‡ÙòfF ¼íÙ•ÂG]àmº;{Rÿ϶'Èsv$Þ|±ä´¤²áÿí rÊ"ާ¾ü_l8sÀÙCù·Ñ±]ó& +;{Ž#Ó(ê ð¶)º?o»i\Šó¾½Ø£›ví{e–[Pÿ¤²ãm¯zZmµãg‘æ“)Ubw`Ÿg+;DŸ¼º‚ãÉ«SÛk‡¿¯¤ÙsèíT]š9Í£«Øyð—×(ð¶WJ^`Á·—œ@¥:m'„œÀæø>9ÃÁrwy8;;þ0ñ>hÕfç +=:?ôzm§”bª¸ê$M©Nû1­7­MÍÒ#;Ž#ç|µô¸Q÷Óxx ©G¥-Ó¼@‡´±‹Vpö³‹Öpi£öIuà§\´æ`?Íu\Y‘G§”áíRÔÊá0¾~h;Ãfç4kcÀ¥™ºD§]úmŸ¥®!ÌÎÚ´ôºP·¨—ÍPzµ*†Ò8‡aHãcµu–VçåЙiPרr+4 x_¯ítÍó{5ü¼”°B€°áO»Kc çœ§“&ðvË’²â%0þY:"ðvâ9]mÃZÀðXq‰·Ëi(Ï­oøcž›‡œÎÃ$þ7¨¯+ÎÊs8žòÜBÀé§Þ¸¡áì伸]|ì<¨°Âñ¨øpž[uÐ[Âo;"‰›9KüaNuÑÇå8ºHÛ Ìß»Þöçå’ì¡4´ýóvOå¶ +ðiá4´ûuµrkP\œÉñé‘ï^·‹+zÑÇñЧ—+Æñã2ýÆáÐ>ÔÆqz)ç?ìÛ{x»¸ L;j;ý‡Ö½šeÂüO‘ OñǦ¶À'ÛñŠ|U ¼™&™2t•x»Çì<¾×NÏ·µ¬é±×KYã—ÿT³K]¥viueÏ.jÜÞVŸüZ瑇¾²5`ù$O°9ÖK¯o»<Ÿ_ß +Î~M«8=ìªu\ŸP’qùa×nàûK®Ò·ÇYA}˾šãú¥qA):èÉëuRàíqA%PøþÊÅaËÐÛž:ŒfÐzµ¤ÈæðygÇŹ}}øÜF€æ¿™à $ïOàí¦1ÔÈ+løß0ñ‰CHüÙx?'ñ¶B°‹kî™3Ÿµ&˜†ò·vüŸò…³NÓýgx|ë%ðüÏߺ¼øÊ»¤¾þÊçÝǰ†5$Àñ«!Àë†ï\P+ÙëŸá_޽ÄŸGz8Ô‹à~£ÿí¶œé™Éžÿ ¯{lD þü![uhrmü¼ óKøFÿÛ}9ý‘o¿Â«¥~¾¶wÜÇÿη?þñù7õÇø!íö+¼ ÄøË]­ÚÎiœÀ±Á]PÇsÞ~Ì +«ÖHàíǬÈS$þ[óÁ›·§çVèŸá¦ vß²íóo·¿–ÇAôÏðŠã¯?qÞv—¦y0vrãlê.ïÞù¶€·ÛzJ¤™—·ŸáÕjvOÜ]×làíö÷ú +)ëŸá5F§‚'=…{âç‚ÍÝq.Zbã>mâ_ É ·;¿:çÄéŸá7¦O܋ݓàMÿ=~-¬÷Ÿá5ÆŸâPYܾí·> =\»¶>LYNl:£g•߈wú¡„•)Œ®—:Ðæ‚K7¿œ?Ô€öª/ù³mðÛ}¿?¦ëŸá•4|^ÿŽ»KßöÞnÆ+ŽûÏðŠãÏ?q¨tä¢Òó ö®™í …²Ê4P#–Óž÷ݶ‡^O+R}ÿðâ½§°´¶ÂˆÒ·mØÛ}ÿ2G$ôÏðjw?ßÎwÜýžßþÀ›þ{¶‹¤¨1þüº8Ô!"9\~ðߥïæ‰ú&z°Ûhö— RæwgóS¯N€¡þô—x¤¿„Ä#ý%$é/Ó¿úKH<Ð_B‘þô—€Éyö—€Ùùì/Óÿì/Óÿì/!ñH œþÕ_Bâ‘þô—Àù¿úKÀâùì/áÀWMÒ__ïê/!ñH ‰GúKàô¯þo·Wm\ -ñö»ê<îŠþC^ÕôÛÙ¯ƒ5ºÄÛ °Óúu°‡›mUüxQ³­ñåR³­‘ðãÅͶ.nl,üx=ßÝàãBaì«8ð4‹—f2†9v»Lº¦OÔ¯é0T-/ñHµ¼Ä#ÕòTËK«åø¬ÉAªåqòWµ<þ}2K"¾]œ´óç0AŠšÃÇ…Ìù+@(ñ‡]yìªí”®Ãª$þ\]Ÿ=ø¡–kïnç7=|·Æò‰Þ6šWH f?§Óü0r Í}½‡2†K+óCq}U‡÷|©WÇr#3—øSm=g£Àâ–R¦DV‰·C~”}ãÙ¯iħ€—”;ÀqþS¶ŽC>Ó<^WvÐOÙ:öP²ÎŽ?”Ö*>…•'ß$ù=S²—ÄJë›>¾vŒl÷ê·ÑôÝ{ˆúTMÿ¡´~húÉ: × 9ðˆx³ò´È£CÖò<»ê¦>ÔÕ'ê3Ÿ2uFp0Ÿª*WQ.]¯÷PXŸµ¥agbµK[‡Êz.à Oò*(¨ Ϧ٠𶕚9íRâE…¹À’ú9…Iâ9™£ôBâ¾^»²{nÖ¾\{úAã{TÀƒ +ǶþPH8–$ðæ;f˜zJqç0Œa^sÜ®UjmìäÛµªÓ*¹"¾YÏô¾² ðv(r¥KH¼³£žƒP;m+®H›ÀÛ‘¹´"mðîR®á å0ÀÂÏ‘Èhص| +ô´pd19ðëÕ>]ìS\·½;p–Só\1?ÛuIüáQ=ºˆIWÅ9CÉüJ‹’ÿ¹î>))61`âcÖ'˶©“¾ƒüiÁ”}¹‡Î^C¬CKÜB#9aA£'î¾+³Î“½ä`giüd%ðw®&Ê×ÁZi¦ ÎOr?÷ +Õ +´Ž+’ww=‹üˆ¼ß`ÁUà°Þç*ðˆŸz:¯Žk”[Ü&\•ŠJl3ÿiÆâøeÆ +üᙤò á‹mÿÔ,aÃÛfþT[ ñߊõ6ž¾½à1›œúg|½Ÿ—\½?(øV )ÿÂÛí®¹Ä÷ßñ%A ÷ñ÷ÿæô2ÓpÓCKß?o[nqÅ þ¼ÅñB?äb­x¡ÀÛ†a^é +/–»óÿí¾kfóýw|½_§Ô/%dûo÷¿ÙÂ:>úw|MÓiµ¤á4V9íæóT­Ÿè…} o/Ö´b·ßñõš?_ã;ð®÷¿ñvû›\§8^üޝi2hx?h0 O¡¸Ëÿaäâ +¨ +ü!…~èûÀÎÕ¤‡®]=œ³çvž+xÜxúö‚Ƕ½¤÷àóB±wà}ßÙp³ ³.n¾µ™{Ÿ[S`¬0Kà¡Â,‡ +³*Ìx¨0 ¦ÿY˜%ðHa–€C…Yf¡ä¼f¡ì|/ÌBé/ÌBé/Ìx¨0 ¦ÿY˜%ðPa–ÀC…Y0ÿŸ…Y¨x¾fáøªé +³àõ> ³*Ìx¨0 ¦ÿY˜%ðædLº9ÃÀÕ…ÏBrÐO]öõÚáÅqqð[àíI—ÜJ?8D) 'ˆS.¾`êc Ê¡/AÔ >”ruÍÐCüì¢nܰ>OSAtÇýÂ- +Ž& +mgu¤ÁIÓ0ýÔY :øO¹‘ÁiÝ!¥;6«Þ´¹ æ1ǰòá à R4’ƒ—S9¨Ëë!©'‡Ä›U›©wm›˜U›ÔÎQɾ9¶ä9¶Xâíö€×M9Ûí +)õ2àÛËååŸ)õ2âg…“Ê3¾¿9Fe»rÊ ? ü/™ø´jø6¾kUknoΫ*ÞÞé½wÇéÍå¢n”øö–ÄG0?˪âx³èš“@‚ƒþ©v¿è”_4ývRJü´‹'MáÙé7]£9–;-òId9àäP•Äåà>U=„|;í>pgA‰·]–Èqzb%Vž<ž|§Ç¼ºò<ëÕ!>ä"·ààOÎú¦> ³»ôMmó³pn9Nÿš‘+ry£Ãðd—×#ŸÓåÍÓ\^uWØò° +pþ¬ÂønɃ£Á˜•7èQ[âÍ$ž}çPþ<ûÎq^hö]s¨Ã¸¥,ÿ%fí™ò_ÒÍð·é¡–'?Šn2'‘Hù³nCâ]ØcðCÙ?lKüa2`×äZ“ñb‰·3ecåF—ÊØüœ‘à}ÄÉg+øCl‚»ßIü±]B‹Þ~2_MØ$þœ ö89Óĸvrޱ‰«9ȧžj;=‡i‘JõpzƲÑõRü+wœž8ýýó¶³;ÝzÛ»œ­8„²òâþ}Û‹Ëž…W›–=+ðv}ÄŠ5À̧ŽgrJtÉ>•³ \v8ÒP›KÏñ—}Ž4ÇîNï€ìXz–¶Äé¡XÃΟC’Zg_TàId®³¸^ãáýâÉö;ì–^Wå@$ÊîPðõ&*Ü|c{åOŠIÓc7ˆƒ#yŸñS—IP¬!íü±ë<ø9¾xþÀì™óžm $>™øõŠô+ö?Jaýš §…;þ—M<Ývü{6|èÏÛŸnÇݘçyQŸ?̪çÙó°z~Ξ‡å“zè_³ç%Þö©ë@ÃÏuP¶É¡»Æé§¶ŽÏg.S‘xÛÍ]«O{¹å¦®/Îà èõ˜ëM]º°ñ‹3¬>3åyïâc’§ökÑÁŸž´åp¿›cs§ï­T§ËÜ‹ÖåìãL×%õ>Î üôqþ»6~ù8ÿ?m|§IÂÿ»&¾®‹Çóàs‰·ë Ûº†Þ®7¤Ô¤ýûv½áj-ñ¿gâÉiÙ×ûó6¾ëõšß§Ú¤¶Óó6ž;KüMüTüÙA?uy»vúÿ³‰<©[âÿ£ï.ù!7GñóßÛøN¹ÿK&žžTã†ÿEO¹CûyüM¿‚=0ÿW‰ÿ+¿ò-`ùiQÓÿ}?4ý6(0ºŸß_0ñƒ›áü<îKâÛÂÓ+fm¸~ G̶Ós(ÃOìx ¼í…õê&ðfƧïçåÔÜ™Û4Êph¯ù¥EàíÕ:{ŽÈÛìÙÁ ÊB¯`hÄŒÄ##f$1#ñȈ‰GFÌHüá¹"ñM-ðösÂó¹BàÍ›—Û;7¦åíü·_‹V;h‰?ôßâtt¹<¬:løó´ê޳ŸßäÐóÃNιrÃ¥‡Ÿ+¾»1U/ +ü¡>1qÀÝ]~߸ôp½aqÐCí—wþØüÕ®Kâíþj×…‹5Ž,ŽýjûÇíñ8T"_ÌìÉ·XʤL|תðPkØ)…7‹^C +Î|.w®³ßé9dFr/0Xõsm¢C•s‡çí^<¼nP&¥ƒÿÜâ9ãüçæ^;ÿN:¤ŸŠ ã®ÌL„÷\G¿Lü3yÕ&œ¼¸ „Ù§4µ›ö<ŒŒIò„ùC'ŽÛâýõ½K)Ñs€¹ p Û ¾nÚöP˜´íc›©Tè80™¢nÁ ç?†}½ö{Ýî¸ødš•䧦õáÀÛ‡àÛ5/÷˳]%jñ<4…îúr·½¢º‚ø°¾Ê•ç à ¥©7ñ€Æƒ7qQ:BrÈ35ãtè“L=mâ9n¦¼]PGgø|¹e_e  +ü¢Þ.;›2Þ®—s:bä@þY¾§# +<’Ž(àP:¢ÀC鈥# +ü±qg˜¾ÔdÑ™‘cþ¯ë¢ˆŽ;ØÎ†¡ð…%ð»F¸ýêÛY¶`¾û„Èý]$þ÷MüôÏúNÐŸÚøÎlxÛ»õëT +!ïaúж³ŒÞÄþÖdJÿ¬ë'#Ÿÿù½c端<K꟟|åÓSõ±¨W§€#­:q8gÏ ¸jÔùjÕ«õ¤þY_òäÔ£Süu E§@#:_À7âßnk¡wÚrûY_®ôÔ›SüõÃ塈µáDÝ+ôFüÛ}-ý‘õ¯úrŸ/ì‰ûøÛßùö·?¾þ¦þÖ3h£ÖW”ºï«6Ÿs¸+ý¶¶¥ôœz†žœg =Æ+ˆ&ÐçÞ áï*qcäÛ¯™Ìý³¾äúç} Ÿ¸ûoß»ý9zѾÿ¬/‰1þú¡¬âld>ë¸îYÀ¿u•Ä¿Ý×Â÷¼þY_®Ôh̹pw•´}ÿMÿ9νÿ¬/‰1þúÂ}üu»]t/Ãû0•sí°ã&þñ•„—ðCØ.RO7˜öNNª@ÛÙÁ>ê >nûôvß6ËüP›j4À\¸» }ÿËO§ÔFœš°?ùR§áðþé¿§ÏþðË?Nä÷¿üs$c +endstream +endobj +247 0 obj +<>>>/MediaBox[0 0 612 792]/Annots[248 0 R 249 0 R 250 0 R 251 0 R 252 0 R 253 0 R 254 0 R 255 0 R 256 0 R 257 0 R 258 0 R 259 0 R 260 0 R 261 0 R 262 0 R 263 0 R 264 0 R 265 0 R 266 0 R 267 0 R 268 0 R 269 0 R 270 0 R 271 0 R 272 0 R 273 0 R 274 0 R 275 0 R 276 0 R 277 0 R 278 0 R 279 0 R 280 0 R 281 0 R 282 0 R 283 0 R 284 0 R 285 0 R 286 0 R 287 0 R 288 0 R 289 0 R 290 0 R 291 0 R 292 0 R 293 0 R 294 0 R]>> +endobj +296 0 obj +<>/Subtype/Link/Rect[144 651.24 162.35 663.53]>> +endobj +297 0 obj +<>/Subtype/Link/Rect[162.35 651.24 171.52 663.53]>> +endobj +298 0 obj +<>/Subtype/Link/Rect[171.52 651.24 195.35 663.53]>> +endobj +299 0 obj +<>/Subtype/Link/Rect[195.35 651.24 198.4 663.53]>> +endobj +300 0 obj +<>/Subtype/Link/Rect[198.4 651.24 220.41 663.53]>> +endobj +301 0 obj +<>/Subtype/Link/Rect[220.41 651.24 223.47 663.53]>> +endobj +302 0 obj +<>/Subtype/Link/Rect[223.47 651.24 239.36 663.53]>> +endobj +303 0 obj +<>/Subtype/Link/Rect[239.36 651.24 242.42 663.53]>> +endobj +304 0 obj +<>/Subtype/Link/Rect[242.42 651.24 289.51 663.53]>> +endobj +305 0 obj +<>/Subtype/Link/Rect[289.51 651.24 292.57 663.53]>> +endobj +306 0 obj +<>/Subtype/Link/Rect[292.57 651.24 313.35 663.53]>> +endobj +307 0 obj +<>/Subtype/Link/Rect[144 562.7 162.35 574.99]>> +endobj +308 0 obj +<>/Subtype/Link/Rect[162.35 562.7 171.52 574.99]>> +endobj +309 0 obj +<>/Subtype/Link/Rect[171.52 562.7 195.35 574.99]>> +endobj +310 0 obj +<>/Subtype/Link/Rect[195.35 562.7 198.4 574.99]>> +endobj +311 0 obj +<>/Subtype/Link/Rect[198.4 562.7 224.08 574.99]>> +endobj +312 0 obj +<>/Subtype/Link/Rect[224.08 562.7 227.13 574.99]>> +endobj +313 0 obj +<>/Subtype/Link/Rect[227.13 562.7 235.7 574.99]>> +endobj +314 0 obj +<>/Subtype/Link/Rect[235.7 562.7 245.18 574.99]>> +endobj +315 0 obj +<>/Subtype/Link/Rect[245.18 562.7 274.51 574.99]>> +endobj +316 0 obj +<>/Subtype/Link/Rect[274.51 562.7 277.56 574.99]>> +endobj +317 0 obj +<>/Subtype/Link/Rect[277.56 562.7 319.15 574.99]>> +endobj +318 0 obj +<>/Subtype/Link/Rect[319.15 562.7 322.21 574.99]>> +endobj +319 0 obj +<>/Subtype/Link/Rect[322.21 562.7 369.3 574.99]>> +endobj +320 0 obj +<>/Subtype/Link/Rect[369.3 562.7 372.36 574.99]>> +endobj +321 0 obj +<>/Subtype/Link/Rect[372.36 562.7 393.14 574.99]>> +endobj +322 0 obj +<>/Subtype/Link/Rect[393.14 562.7 399.26 574.99]>> +endobj +323 0 obj +<>/Subtype/Link/Rect[399.26 562.7 440.21 574.99]>> +endobj +324 0 obj +<>/Subtype/Link/Rect[144 484.91 162.35 497.2]>> +endobj +325 0 obj +<>/Subtype/Link/Rect[162.35 484.91 171.52 497.2]>> +endobj +326 0 obj +<>/Subtype/Link/Rect[171.52 484.91 229.6 497.2]>> +endobj +327 0 obj +<>/Subtype/Link/Rect[229.6 484.91 232.66 497.2]>> +endobj +328 0 obj +<>/Subtype/Link/Rect[232.66 484.91 247.95 497.2]>> +endobj +329 0 obj +<>/Subtype/Link/Rect[247.95 484.91 251.01 497.2]>> +endobj +330 0 obj +<>/Subtype/Link/Rect[251.01 484.91 289.52 497.2]>> +endobj +331 0 obj +<>/Subtype/Link/Rect[289.52 484.91 292.58 497.2]>> +endobj +332 0 obj +<>/Subtype/Link/Rect[292.58 484.91 328.05 497.2]>> +endobj +333 0 obj +<>/Subtype/Link/Rect[328.05 484.91 331.71 497.2]>> +endobj +334 0 obj +<>/Subtype/Link/Rect[331.71 484.91 349.44 497.2]>> +endobj +335 0 obj +<>/Subtype/Link/Rect[349.44 484.91 352.5 497.2]>> +endobj +336 0 obj +<>/Subtype/Link/Rect[352.5 484.91 372.06 497.2]>> +endobj +337 0 obj +<>/Subtype/Link/Rect[372.06 484.91 375.12 497.2]>> +endobj +338 0 obj +<>/Subtype/Link/Rect[144 172.43 162.35 184.71]>> +endobj +339 0 obj +<>/Subtype/Link/Rect[162.35 172.43 171.52 184.71]>> +endobj +340 0 obj +<>/Subtype/Link/Rect[171.52 172.43 224.11 184.71]>> +endobj +341 0 obj +<>/Subtype/Link/Rect[224.11 172.43 227.17 184.71]>> +endobj +342 0 obj +<>/Subtype/Link/Rect[227.17 172.43 285.25 184.71]>> +endobj +343 0 obj +<>/Subtype/Link/Rect[285.25 172.43 288.31 184.71]>> +endobj +344 0 obj +<>/Subtype/Link/Rect[288.31 172.43 303.6 184.71]>> +endobj +345 0 obj +<>/Subtype/Link/Rect[303.6 172.43 306.66 184.71]>> +endobj +346 0 obj +<>/Subtype/Link/Rect[306.66 172.43 338.44 184.71]>> +endobj +347 0 obj +<>/Subtype/Link/Rect[338.44 172.43 341.5 184.71]>> +endobj +348 0 obj +<>/Subtype/Link/Rect[341.5 172.43 372.67 184.71]>> +endobj +349 0 obj +<>/Subtype/Link/Rect[372.67 172.43 409.98 184.71]>> +endobj +350 0 obj +<>/Subtype/Link/Rect[409.98 172.43 427.71 184.71]>> +endobj +351 0 obj +<>stream +xœ•}[ëuORÞˆÀ0£‰¹o Q£²]}îƒ Ɖ§1£ãarQd¶ ÉM>†Ÿ$†|¾tU¯ýßÕ½Ö®zÁaÏ<ïúUWWWWuþáËo~ÿKÈ_KÊ_¿ÿ×_~ûû_¾÷å¾_Kó_Ÿý?¯?þ’ÿæ?é¿ÿñ—¿ýòƒ/ÿÅ}ý__ü×ïvÔß}qÇ×?øòWÿýøú×ýŸ»¯ôÿø7ß|çý/_ß:ÎÿÿúÞø¿9èu‚~õwüWç¾~ÿGýSôßöÏùNãѵ“ùüò‹?ñ¿ÿó÷ÿލ½Ç(ÁßúœÜ£Íø?ÑñõqLÄ|ë/U|ÎÃMøï©øâÄ.ÿ#©lÐ_G®þ·t|~ÌðßUáÍ?ÚLþOêøôhäøÃ?ކ³ÓõáN¿wñN¿wåfz~EÅû㱈§N¿Ï4‹ÛŸ©øàWñüŽO«¸éüîá.ž>†UÜ |^éÑùÛÃÕõ&¿Òÿ_u|}„4á¿£âs|IJA.4¯7¨ø~Ü뼿?ü¡úúy;QÃ#ú ÕöHúÓ÷Ÿ~Âáeƒ¡áè š7øgU¼;VýÿÓ:~ÿ{ÜOûŽ4n^쯩øVíðû:>op>^n"Uu†ØUí†$„×£¥Þ¤!ûGÀ5aè'«n°¾špEJx´{=ôsxì_Ó#ü܆Ziã" -> +®—C+—vð]-4\oÆ#=ÊÌÎ?Õñí +~l£ó¸q¯G—qC|¢««,*Þ§ÇlÓêj6÷?é±k†êqq‹¡ósCSÅ®zÔÃÓ±~_§¿ßÓ%ãòSZí<_ÖkH_o>VùTWìfÝ0ãcn_6ö«ÛeÃì]ýÔ¶±Þn,×¢¾_ÝMvyì~BÚXnÛ°ñR7XÝ«t”Õ†T÷*u`ÞØÛä.6¹Êûä.6¹¾Þ®{úU]’||ø ÝœB÷YN?ùß¹›yý¼ÛĸÄ&’īĸ”ÉÊxÝ%«!MxÝÍ• xœò¿Û„W/.Wº•4Ó£J¾ë±Ìxù䯻 þÃ&¼þ>Ñ/ö#âüôýbw§ŸöYt‡±Ûïyþ¾ª¨¼ë&öÿmÞVrÔíõÞ“ž…Ùïý†ìsŸgÙ4œ¿PÉŸÀ™OÞý¼ÚßÓñ]“Ô æwï¾ìl.y÷‡Ñ“PñÃåéV¯üÉݪŠüéVÀ¼¿ºoÜ}ŠÃmÈCÉô¸‚“_Ú£Ìg]l¨åqlÉÝêó?Ðè1`&H½,ø1 â ýf¯Wn¡+‡63Tõ*ÜÑÁݲꖘÍýv|Í]üøðOü“ĺ»¿ÁßÊ*¸Û !Nø¿Tñ>°Žøß×ñ]ŠÓ„ÿ®Ê•îØäH¦Çzú_»²¦G~6º‰ß=è§üñã/´t__~»ñ{€Ï8øü©×ÕùýéSŸ­™÷j0kFàÕà?ølà3=_Jü;ñójŸ×ÕG/×ßîž;Ÿò¾iø9Ý¢ê®ôÿÓË·øy Ïë’èܦ›ßî~ÉŸ—ø¾iЃ<]±.4ëø®Xã-|^ÂófIõ¯?Ýý‚?/ð|SðÓßP þÂsýƒ¿p7¿Ý-A +uá€~Q.R”¿Þ9zÌ“xÃ(dHâ_n^ðó†ý…ËowÏ ùxÝ’ùo<¯“oòÍowO“Bà |Ó ,¾Ñ££Äl`ççŽÏÓž×5EOq‰ëow¿æÏk|¯úeþÏëߤX‡»ùíîiúLà ø¦Aw¢"¿.âû’";Eðyé*}†ëAÉ®¢ËL¾nÆwuêòù¥°/ðºE1«[nÎ;ö¼îài°^~»ûþ¼£/àÍéþÆóò7-‹g¥é3 / h¬ø®ƒó¬õôÃi} ü›¡5w+&l +ªÙ9ô.1Ÿí³7Êöx$ÛCâ‘l‰G²=$ÉöÀéÙd{H8’í!ñH¶LΙí³óÌö€é?³=`úÏl‰G²=púG¶‡Ä#Ùd{àüÙ°xžÙø¼Òƒd{àëÙd{H<’íÓ?²=$þŸÍ‹³mÈ=5\]ùùýEàu;™„fþ«/¾…•~=ÄßoqzBw RÅÏW8ÚcÞ®ÿk=…Œoop™Í:×Ó7üªmõÕvkÛoh“ÐOûB¾‘Àá(æ _.!–ÇÆÝRb#æG`î÷Ãè6¸Ù¯ê´ÃÍ~Uç ÝJe£ÕU¡ºõîÒ8úY º9t µlèæÐïvïq]º5f~óÇõô#­¾î†€sxçøNàõônÔY±éé>®v¡Nïš!&\Ø(=¤¥õvհУ§ot‡uù¾NL«¡¤§?tURã>ì!Âëí>HظX(¤l\,±ëª{:f~ÿCUC,?/¢ª!v3`ñtn–ö86¼ØUUÜ9ÝÌHfglÇj–èßïfFÞpbk#GU[êÚ§ü´¤n7Ô ³]X_I¢ü;:¸=Ò7<ØDÉ*¯:í®ß¢$ù0¾p¢ÄæÁš\àu¹{¤n¦ÇtIÃ7=Ò0³SÀлµ›ðºGqDJã„ÙÃé §‡Ò +¾\ß-Ô2s߈èzOyа¸ù 3A®{¤Ýƒj ݃Jøi!ôHü?3Pñ|eÀô§a%Áü!sæ¿‘ÑÐmÆël¿*ŽúûUáfyÖ3 ªgPàõAM¹å­õ‹·àêŠ=Ì ý@å ýÆia Õ/ݯàûh0ýýü¦Û%tàqþ‡~~]Úà?aã: +ɯëÕ½¢~¾6nòˬÎu™ªvħŒT ×®~Ãü}݉íNær[Uq¥Çpêû ¯Æú©ªàظ¸¬`õA,Ç£4\Æ#s`Wàu?‡Áüý>ÍózÕ±ØãB¿úÅ~à,ϺŸìG +å #d„ã/Ö¤úCåaôºˆq„˜`zb\ù©{Räg&\=“߸\/zK>¶®Ó˜?x¢ê9溚‡zÚ?• d\ÝrÚÿ†z&ÏëØPÏäyy\]‘ãµÜªzNÎ=â†ø$w±>Õãžúq_œUý¤~ÜwèaGÐqN$à¹fox‚#s^à\³ÆºSàuâϼ0WÏú™“æd ¼j9»Rø¨Àì¤Dû<áuG³6vòþ_[Ž)="Àì¤XéÌ~ÃUë¦ml8CýÁÏ÷(?ÙÓô8ýìjÖ ¯ªïŸ-×cQäiÎËÕcQÝR¥SwÜãÁ7zZ^¡O˜=” +pñ¤Pfé7Rá+ß\0¾ŸÆ£áâO¡Éiè‘Ïìì§7l(7NÚ8]¾æõ°èïýôf·ÁžV×íÕ *[8ýäg6œœŠ“qéndþ£ÒÃ…ëwE>ý,Íz0-8®‚x=Ö¿£Ê„kÝ®L¸Ö=m¬7¹G˜ÅG½¹6>ãâºÝgí£û™ùréâ™GÕ,eT} ¼úìC~lÝP',­uCþ»ßÛ6Œ ö{wö·û½nÞ_ý²¦úøEŸè†<ÕÇϦÞÖñÌ€F7€êÝ“ÃÌõîó«¥DTï>ŸÇÿ¨ûaµUõxlh«~ûeËÜPWn\>¯»iäÉ —;»3=aºê-–‘WKu™ÙÎz°×/—Òˆfr /3/¶†®ó«í`x™uµŒzë‹¡m{u¦V­=Ã{®‡ÓÎðžÀëåÇäÔÕ ¯JŽËŽ­~˜ž<ù¯Ö×rø0Ox#6?æÏëÕÙÕ³Ó(ðÓûÙ]Ý]j½ÁÚûÚŽ¯‰œÌña» O€ç,廂¾~[IüŸ¨xÏ©IÿW:ž_%~¾­.ÿ ûNmÂW…GGB)ñßÑñ…^ý$^wÕ»'‘È_»ô©À0åH±È§üñã/±;vÞÝüã÷Ÿ?^†÷Ÿ:_<®¿?}ê£z« + %)0ÜÀs¡Ä/†oV¬«4×ßáž;V¡¤(0”p¤Àð?/áy]Òȸþ÷K¶ + % H!ŽçÃ;ø¼„çÍ’ê#^†û[†’‚¹ÀP0ýAO™rõæw¸%È(0”(0„‰?2][o¤u„±Š7^O[pÜÍKâÿðÄÏ zÞ0¬+{ýîªÆ•æwA¢üÏëß Ý[¹þ ÷)œÀ7úÙ(/”ø—11Qô¼%]‡Û(µ…j"jÏQfzÿNjމ¢ç•B*r7¿Ãý +”RÄø¦AØJŽ¢¯?Óö ¨ÌQ¦—‰Ïgî}€ܼª£ÃØÜ‘3ïÀófG +yÈ×ßá~Ç>ïÐ x•ªùo½”]r$ü4Raý<¬w©î~¦cUVz²EâL>‰×G^$ÎäÃ¥!5*’Àñ™{æJ¼ì'Ç$;\ùP2J øaçÊý²!nôر¡¬BÍ+=úémqý¾N?U¸ y£Y ÇSå>¼Ø³r&žlÿ E]àP#ºW‘žI<®Èô_dAw](Õ»mð2ü<ŠãÃzQœôÓýzщêañýJÃãFuÛ9§>+±ûDËEj`ÔõûzF‰ëÍh¦Æ,WQ€Ñ(ÇwC`Y¯1ë`¸Žè~%r­çóbT`äõîÒ+0üÆäÃzïƒÚÖáMÝŠ_¯NO¸Xµf"P +܃x´™@úK¼^‘¹ÔJâò.µ’x½OA9˜™¯{È”Ùã&¼Q¯áY“ÀôÓ@¥ºÁŸÆoV®Ïiè—îÌ}ÝÁ9¸¦žÎa&G¯»>†x=ÐE!Œ†KÏE˜w˨î¨+ýF¿[é7p®ä’x»¼cc»ÆàœüÈÍ–àÃr¶ÀÙßoÜà~?‹)ïàÛº\£k¢¬?øìrÕþLYMqTœýg•¿Äëðè#'ñFß¹L sàõ²?qqcyÖýzÙµçòœ?>®§Q-»æ®߯³+,Î3=jü7t«³Ìx#LY ó?Ð#ÀÝì ucÃrXîj£í@[ïj½a «zÐ=vj#°q·‡~ÞCÛÀ÷»7ÎëÕ|*WÀ·3Ìô4·òSð9=jô¶8ÛÀâ@mÚÆy¤i†m¦G÷Bh:aÁÏWìúaÑoºWA^iÚÁ·u½†—™W}bx~Õ'ªþ‰i<0Âüï×ébé™k…aã§ûíÐSüJΊ{Ç y †l ?/T°‘wä™âäÖ*µXì ~jà6¯Wµå¹[ÆùÉû*.oh”„H¼žqßï¢&¼Ñ!ÎqŽÌÄ;/×Å4ÓJâ O3shÆó€< 7"½< ^.7”+8;©-@¸4³ã˜6èá¶nnõ°“;òzXŒôZ¿î®ÑO.ñÍ ³s´€¥ÿl €K·ÀÉmpöP¶nHCÍËîy¥~CÏúV–Y¥/Q”•ܬ<àŠ‚°uCòÉÉœwV·ÉýðÙQÖ³Ï8o•îƒw›3mœ¬2õwÁÙy¢´ÄëQÒÈÍÜqvFîÌŸDêl—6w¶ÛÙ^º¦Ý†8‡\øI&¨Œ'LÔn 's±cô ¨ëEdFUݼ¿jE:åQÎìÔ+Òîü'ñzEúÁJ%^¯H§||µ\Ÿpé§ä¹àÊ„=ÀY;èéíÁF5†[”›žòH³pÙŒ”Ëí6–›âjäé/9€×"9€m‡ž2dT™pï £3Öñ oo-«²5ú¼…-eûUº([]|7ß‚éapVÎjY:9€óvÞãÖiLž‡VK¼]–î¸üÁÞ[*K§|ëña ,ý þVUÁgYºÀOÅŸeéoÌ™Mü + ð?ÐñA/*¾ë(7Áªt€!ñ¦ã¹µ3N~š?þS:¸òù„¿x•ݪ¦Cë‡Ä|*‘d׳®ýüAõœÍzýÆï>¼Jäï?uÖr_úÔÇ÷±¨D^â‘ù <—ÈKüR"ÿfźúQö}ýî¹c•ÈK€y GJäïðóž—%ÑHÐ|ý™îlÈK +ôð{)‘“x#?P„PâõG¯ÚèÅNâõ>+§9J¼ž-1æ +H¼ñªÃs$ÞÈ(”'ó‡»=:|½œÀ?"½#Mšm·ë$èy¨À—Êõwº8¥¶|àÞÿ›âöé/<¯‘zG¥›ßéž"¥Zü¾i0ÊÛ¹m .#‘º¶Üéµy Ïë’·ý¾þN÷KVªËOàU‘Ìãyý›4QÕßüN÷4}¦á¼êëø²ª]ô3»JøÑÊyU  ãÛªë'8ª‡ÞÔÚÆýGC{Õ<ïÙóº‡TæPo~§û=ÖÇíú{¹šþÆóò7ù]*ÝüN÷4éãvçã¨7Ðåš ø´sGÐy‰FNJyÌFŸÝ4l˜I<©¢àbÈ“*Ú­˜|x/ŒT”yGϼeÏë7.«õwºßb¥„ý¾iøö‹†éo<¯3òëÖõwº§é3 / x|Càg;X½ñŽ{óu^Ãóº&z²¼þL÷+þ¼Âðzx§¿ð¼üÁÑãú;Ýô™€ÚN<¸2oœÄE+X•F¦Q^‰y«™=ÏvénÝÊNµ,ÿ¸wØ¿Të)·!·Ù+ýìô½ÁPý±Ä#õÇÔK±ñýBñ‰7âØ‚£o sCaœþØ(øªâë±~ß((æŽÂo,æçiÌ +¼ÞòšÃÀì G¢çK‰7 +Uÿ˜Æi›ÅG} Ô?`žÙG¥á,@Æ—K“º+®ýGA±„ë‘×Èé{°2áléŠ+‡³@—†Qð‹³3'~E€é)œ„³“º›ÍÒ£§Tž7‹¯—»›áËmœ$ñz¶7]¾³tþ5xÖ/ß<^}ˆW?¼Ërõ^^jdzè6£ÝO£à%¼½ÔŽÇoèrªá óqуT{´³Þî±Å™ŸFÍo£öøz)»zã¸pMnÚX/Õä– ú»‹ãÜòȼž=ÜmóŶ2†¢y +Ôáô—¸ª7=ûœîv\;p7|kgN®žÉQc?‹ŸÙcÆ1Ç. ðÏëqÉáw üÏéøÄW‘Àÿ†Ž¯üF.ðzŒºËÂò}=F]ÆkˆÀë1jª¬©^òVJ¼£®< Yâõ 5Ý3=zšžØPâÉK[˜¯©©èôhø1tä£0\½´Ê÷´À«£÷à x#79òÉÂñÜ·^âõûz¤ ›y;äÄÈ>ŽÀ«I.>‡ÿO²ÅŽQ~:[W|ã¥Àë>i7óòL¿xi|O ¼‘°KcMÜC»]Xga†Öñ¤.ðzW/*³uŸ•ÃÕIs+=z×3Ê +8¨­nløs*|É ô_nèvdhä»ñ “ïÇ;°À«Isô’äïw»ÐU\|xÈ™ÇŇ2 ·è‰u¥GÕ'<´lƒœ”Wíi{yc{óp‹>ÝvW|]Õ¡á5¦õ¶3Šl+1J¼áeÆUü™eÇjšm¥êjúè9©G\‹Ñ&*³—ÒÏn£ÃÅólåó“ÝÀ™~µHÝ@|{©‰kH¸²¥Œéå¶6¼:¿Š§Ñ™‰Sˆaq8G]ÃÇ‘âÏ^]Ú §¸õûÆŒ³°Z†W7B8ž30ñõVGõ øñª#C æZ8ž»òÁÇ…S¦¾Þt(žÅì.W‘*ü\`»a +³iŽ}m½òEßp=pŒÑp½:•Ø*áz0»…=N—ËBŒÎ–rJ{£õDWò“„ëy·TßS$ÜÍÆÚ`Ò© wZ©ÑŽ)òánÌÂæ6m¨ p7¦iSäȃæ +¸1ü§s&ÂŒd/7ÃŒ|E.QbÎÀ%ÊÈ~«…˯ÜH^jo¸îÿS2àœIq9ª|xÿo¸1£–Æ>Mܲ©âœ)™ßèQÚ©ÁS‚O9ž>áBÐýÎPðÓDn'~š¸¹S‚øì}Œ2’Z5•3’‹nñÓÄšðÓ|yÌ7™QØAE—JþãÆR©€6àK¥Ù_*9Ó6é“8¨á’×J —,+öì¦Ã§;^T©:}]wóëªôŒÞF«ÒÓ›#÷Ã7k£SMR覣ër ë&¼[užÑËwÄ A5C­|§£g6òOªÝÇ¿„©ï¬6²îË9ªmFE ÆÈÙR(cÒ±sgÇnÏw¶¾©Ý® ÖÔÀ÷p8#óÈã{ÃÕäWnß‹_5‘€ñ{/Vf,àjb?%bF\‡ÅÆkPýKË U¸ñC}„ç“­¾Œ§£,R•™îK.ƾQ~ëÚõê[ê®kj:hšÄÿ’éR† ¯ q­±jBùÃI®3=ª]Ànâ¼ΓÀëá#Çõ`8¼pš¼Ü‘S‡J3䙥Y÷p‚_wËhì4²–ÐÓÂÁV‡K—¶ÍôèÑÍnà;ü¡¬™¼±]ý4æ vö‹³ø vöÃKI0¨2áXëÌ£SÓ±vªBsì©y=,Fl¶.‡ÅèhœVrþPÃSè4mèîP\pi£æQyC—³Û;K§jÙSíQqvÒpÐå´Õ`ÃzAO/wŽü‰ãÁv~7ØI ŠçÏ«>äqøá¢Ð©KÜÉÜtOâõ‡„®BÛØÝrlvêO¼sØC½ÜŒj5P¨eýþ¯êNp\ojO^°Û8]±ŸÞÅÓc_έß7ç°ÞFm^µƒÞÿ¸ŸÞº±\Ÿ8R®3Ò +¯vt'†oRŽ´f\:9Ò:/Ww*ix~óFêõ?«6=0H͉®:)v9Œúæ¿#}¶­‡Åhìù¹KàÕW{ª?t;ÒÖoj¿a§ÆæV7G|i7AUqOÝe¤i·¦äɸ2!w·nÈg¢Bì Ë}X“…¸h§ û†ë1ÂÓƒEá§Cú†ÁÓÊË7Üžòè*7¢§‘3ßp³ sƒ–ÊýÕ\o©|–s¾áz±(9ºø¦ú#±§ò†ëŽ–ãY (1¯ÒÌ7ÜðZGš +§Gái—ŒRJù­ð>Qôt¦F÷ù°‹PNRçÄIÝ¥‰#Ýe 9¸>Mìßnpæì²ò†ëõ’ô,\q‘,ÀB9S¿7‚Gûl}ÃõÈoyÓ ãÒ͉3FÒ.O‡i§gá‰v½ò‘úL9îF4(\¶9£μ[¾nøœ<6å [§¯ë3 +¶&|©a¦¼áê[é9á^jõñàñà`ë´Tõ¡ôU¯ù†«ï¤<­¿ËxXÍDŒî¹Óìür:GÉ ZŒ'ÃàZŒ£§1?¯Á¹’²ÂB]¤1(g¢?…­>AEŸ9!TK1øÅžQ­xnõACè† ´úxƒu&¾JÎ^oÅw–œ ¼aE:~xÝZÊ…wIà ÃËarÎΆo˜†# +“OÙmçû£¢À«¡?²=Ã×íà6Òl^·RÆ8 ‰×Í”1fÿ‡ ›w£~å&›«órõt<‡±!œ<#n°“ê>¯ô|~¥ÇHêæçÙwDàõ’³ïˆÀ›Q™2ŸÝD?›ý ¼n‰žÍþ`þ·Ò£ó³k“…?gs@˜ÿgs@x½–™¿oÄYjŸ ¾ûÝIqD.øîx/ò ¶š ¸Œvu]ðýj_ø¯v ¸Ìbʨx*h òŽÿd^ðýª^nÇ?WñÞñÛ0*—©í³þ¹âËê'ÿ®Šý ªgׯ¢Ð¨­$;øÿÓpJV¿¹Šü´QvFP¢„ëI…'­ ¸n?Òäß n¤ü……#ãÏ-_7þ"EŽÜ…dòmpx#ù…—JAÓ×t¿J¶—€Ù~ñqZ¨£V–p3n’6d 6²C`Ò)¾/ѺC–yt;¼ÒÌ“Û\íÏü¦-àzÕPo°â 8)§¼rP¦¼qPQÀõgšnZ¶o)•œ æ M¾TêÜ>Ÿ$ÝesaÑ`vvœô~ªç“d …ä"ªÀ(ÄÒ¦¯ëþZˆËÁ3sú\ƒõ¥ôå ÎDÎ'Fõùšuƒ3)Ò«*Ì™|,j@çL7%cƒO¥ó¹‰crdáÆM0'»›Y|´ÉˬÉZÈ‚‰iÇ¢ t¡ibŠð¶vkc¦]ÏT;ÜBŒúþA¦Zm°Ðp½.’4b2&X‹EïU ÏÇô\Šj1ÊF +gŒæ*m±ÃŒ‚9ÿ˜ø¨¾cP¾_ð8¼Ûe⣞þFõr°ù3'k¡â»=2 § ?‡ñ +âI<Ò¯_âÕœL:ïê„×u˜£·µùÙ`œ0/ñz˜­+½š&¼QÌéá]âŽýÜ.§4Èxc g)J¼1 ,P®¼Þ³GÌOrnÜ,j +Ü8Ãé3˜ŸcޔɖpeB®Çb{ê~SH«í©{¡RØg'µëØØ^j.°œ^êï‘píÀ­¼±]™3qú©ÏóÌ5Ð@=>ò¼^Ý-.—ËÅè¼èÙAƒå§®—‹QÿTWm¢{Æíbùëõ:ÇÅò×ZyÕFgƯ;¯ú»‰žÊžJƒqiHôä˜pic·”Jw+Òõ“E'ý 7œRT!àº7M‰¨^Âò$Çæn¤­r¯×ý¹1`[ÀõtÞ1ŸNÀ­Ö 4‘â‡;8ø•£š¯O>onë!MÊ8É^ßÑÆ€±ÇºÒ®ÇÌŽ´’c ívüè!ðú¤cº—'¸Ñh’ëX$^wé=²H¼ +\É"ñºS¹ κ7Ë„7fÌñ„\Xzh>B˜Ù¯çò&ÎÕ“xݧ¤^W³øèo Ôìjµ €šBæ¼!ý,uƒ?”2ï¯Zþà[Å7—=Ðy³ôÄM.0£û4\ áª1ée&?vøa áX£‘[(ÑVâÜJ·uØiÆÜrØŠ¥ÆVz)sQzneâ§8ÿ»QZËÿ ÷8Åéï‡1ÎòiäV|ãø‹rûMÝG ”Ýß»š +‡—{9⺊;R8\Wq’÷÷nx½ÃGˆëq7zRäõ¸ëªèÙ‡CŇ’zôï§‹øQ§ðØ!§»ˆm¾*Ôñ·ä"Ƽñý~Ó|Zô\ÒÌ=R%þÛ*¾xj,°O {þƒåQ…ü[ 8rº'n ¼m 0d ¼^—MïplNqv3ÞÈw;¨øGâuƒÚàÌß× ³ýÁAe7 `î!&ñ†A먜§?p1‰Wu>Àô ã ÕÊÁÂÀÂ.™lÐÎß× ¼ÌM¾$Þ6hçý² Úý­ÜµKâÕK‚’ÎÈf€å¹®à7ä§qq ,?áð+=º CÎ3^4ë.òf#EN;xõ– TµÖðïó+Ãèy¾2¼ÁX²ÀCIÈe! <”†,ðP²ÀëáÓ1« ¦Ÿ&=†ùûFn±[é7ªnË£m,×sóH‰ÿW:>>fÙ1Õ¾ç ¯+¶èVñ1²ʺ]ºb£—†¸ÁÎî Å™~]±‘ùU7ÄáTä°8—ðx³áJÚ9.•BK¼>(¤Ž!LOå†ÿ¯*6ßx`8þýÆ]¤%þ‡?Ò5ùx @ µ¥××;¯8·~_÷îÝHÇ@õ¿®ìÀ+?ÃË¥R› ®gx.’†ç)‡ rBáˆÀëoO1p¼êSvèO‘í 7ÚƒŽœYx½9n0¿p‹¸Iöíìc¿AM©œ\*×±|_oÝÓÒz×éO”ô‹ëþxp.º·Ô4mhzˆIWU4…1ϲ¯»}Ú:ºôp33SOe w› jâÈÄxõ žR—‹Ho J¹¿¸Ú¤Ü_·aVÑ<¼Ô6„!ç…#Pߨx#ð^–Ïq÷°ª#îžù‰Í:ò´Q£?ö[÷Ø8Z©»[.ãj™}æŒÓO>5nÞË*=Fà=¬V­j%Ñl‹E›|[­ý +æxƃÿ“õ +F&°Àëáñn‚ÑÛÀùÑ™õ¦Àšç·7FV69Þh,Ä^àõ²åðõ² U&¼n¢znô"ñÆ`Àƒ…¦§Kß`ÏèñŒ³gôx–xcÚCc“Mài‰M67b»£®¦¿ðèuœed ÂÛ;J;\ÅS +•ß ŸBÁ;ÒÐØFpý9ƒR¨æÕslS ¸þšÑÚJ½‘M8Z"ðfï<ŠgÇó]Ë.»yƒuÇþì¿,ñzÕÊhÀ,ñúÈ¡ÑYâõ*—Ñ‚YâUóŽGÍxý]®òj‰7û*»¸Áj†—7¾ßF`HàõÎîK„y½FÕcµ ðºÚ­›%^WS.®ôn‡Ë5 ””ÿÞÏ‹5zÕ’W³Ÿ%=èÞR‚”6h?Kz`Þô+¨ÌË52'¶`ú»óÑò†¬–Ì8ýÅ=6DŸ‚=>mSõ¨è¢_y“ÄëaÔnúrÀÇ¥ü +6Œÿõÿfü«xcÓRϺ³Úò_Ê¿pÅÒ+Ð?©¢Hý;:º_Yý»šÂ¦„®‡“ðŸ×áR=üçT¸çh€ÿ† +žê¼êðF›þ=ó²ÔßWáÉ/KýoËR‹ +§”¥ þ^<½uøŸép.²i¯ü +'à?¥Â;ÎïÀ¹—*dpÍKýmNó#'øŸëðº,Uê‘1/õTxpËRÕ£B¥˜ì gF¼Ó­:+ÜltWU ë3Gš€#MÀÿPiþ[ˆNø?D”šÀë‡ñÔj(s^jMà¿è5ÿ%D±ÁôœšMàÿ¢Úþ@t›ÀëšöTn¯+òS»Áü9Õ›Àÿ¢ß`~ž +åÏKáòüRq¨<¿t*Ï/%'ð¿‡h9t_jNàu-¹–§?ñÔt‰WoGJíó3þŸU|æ&6°J¼m§IÖuÃ4­âÌá¶2››F>lI¦Q€ß-ìsuï´Ý¸\ìér½áꤗÇõ†«ƒ!¨iή^r.çåëê˜Jq ;ô W§B8šžY%\²ÁÞV’põ>á:¨i©êˆ.ƒšˆQ'„8ºkAÂ)¿nfº:ìƒ +”Žö~ëý{V– ÷ÿ•d]¥’‡"ðzÆJבuþ¾^IF$u«W5Æ-3ÞèäSVz ÷?° $ðFŸÛáþ ¼ªƒ]ב©lð§ri’Ä}n»@oÌ«,Š/—Û⺠o$ÜJ²€ÙÏþü9äÎÏäYŸ\1 +K»ÿß]€>ãÍš#â»Ëï—n‹›6è¡´Ï™?Æ8IG]8$^wˆ©Ím؇ÜÖÓh¥‰N`}zM=Ö³ÃÞbkZkàëª +ͤÒ66‹^Î|*²K‡…›âÎô-‰¸9¬ú)¦ç7T9ÏOŸîEãµ€ZmðŸ "ÎîŠ;óߨ £¶¸Òÿz^x½2¬ßÕË÷õʰ<OQmò + +¼ZF“ÔÛ†vý@;ü¡×…Û"ÔÆîMéªøy4¦kg»b^}»’_ÅSwç)æ?o—>p3/ÖW4cñ-Œ÷ .ÁP†' +3ˆž÷Ưöy]ýhÇ|ýî¹ó™!שּׁ!=fþŒ¯¹ÃÏKx^–D£ÎÝü÷Kþ¼Ä÷‡_4è´K!¿Jâõ'n—™…ªLOF³” )‹ØûÃ1ŸþÆóò7éñ)_†{Š +¾ù,¤Ü¨ò:\J8g^áëŠVð¼.(S<èú;Ü.øãߟ]ï³ù/<¯‘RÒãÍïpO‘BÂ7~Ñ Æh¸U%ÙhÆÅ~+¼‡üîWñ“Bï~÷×åÌ¢ç•eÑ=Òõg¸gèg¾?{ÙDùž—?X¾QÉóïpKÐg¾ùìëïëï€Ý]6\5ÙCšwã×U0=2ÆÛÏË}^–ÏïWõæw¸gÏg~”ËU÷m•f +bÏ4ÿ[ýaѯV¨Þ¸´ò˜j‰ÿ7úâ[-Fýû]ëå†ÓOyTuži¾Ø9ó–=¯[h8lëÜRñaH±óÛæÌ½C8n·ßgÏTMÜwÝÖ8;ÆÚ¡{Ö)»ÓÇ Ï:³põ ž‘uüó…‡üI¼1¡–K”$Þˆ”|h^‡¡hÀ=Ô+c¦GOôoÜòÿ~«™º=K‘ø nÌÖ9Ø|x£ã­§Tä <Ïÿx£¹£Td|¹žgJ¼éçNw°ôw³Ðcz7nÞ.£ûE|Ì'ݘË3qzÏ”xÝ]¡\ƶAOjlè +ü/©øÜù3Á +ï7è1^ïÛ_e:ãäײ~_wF[X•ƒÙñÖû qkuUVÆÀYÇè÷9vŸpúÙ†ßú~[ù©ûIî¢üõX¿¿(sµ× U”€ËCèê¤T\ýPe€¯øqd“~‚ë.MÊø”×åê‘øì)²k«¹—ŽÄë©…{éàÛÛïêE;ëÛÛ{ŽÛK%¸mƒ?ËLqþÐ$¼€ó‡'ÔnØñXµ§1}(®ÚÇÄ—Ušõ¼}ï×ÓbâkõCƒC`mÈ‘ø¼ƒoË‚†-Òo 7Ê+ùÆ€ZOyøö&žÀŠÓCYyËÍœ'…“S8O +ç~÷¦Û†éIÊzô&ÈÕ­ô¨ñê«ÆôS7Æ ~²“=‘ØˈLK¸1²•ûxH¼zQœéÒ¯6|ÅÒ®û\…9H¼Yï[[¶¾?|@7²±yì™Ä«OŽ&™— oøh<øAâõ~•'øÀëå.¼_/uáÉÑ­ÚÑþPâõ¹ŽøÀìáö‡3;ö‡•­xT:iÀYÁ0>ºU|t'v´4Ä·«+~çñÃî©K‹ßàO*læ ¼î…tµs¼8fpíÃ1«´!žý¸/Ǣ{ÂMœqy«ÜÄYâõŒoJØÚÙ_й þúm‰W öÒ¾^öÒfu¢?Ô;î&¯—#-ûË‘–y½ê£yQmÞ¯_Sñý<†™~ý»ŸG²`~öË7nè·üº¿¿¢ã?Z¡·5Õcç†ëš5²ì¯é Ö$XãòFõØnƒ~J€8ý‘šn\§qŒƒõstž¬%^ŸeÒý¨åûj™^¤óâ6ðá  + X>c«þ7ê½?Ú¢úŸ ùaG'áú?öû.§õÒ}‡«+²˜3úrÉq‰¸úç)«ê<–¶/Ýo¬ã =^”ŸìgkR¯oyuÌ"ËM£cÉ8?Ég¬§'¸a' ¼éê>Ý¢OôHå;îÐßíÔ…~çËÌìFçrx îX¯i=[Âhyƒù©®ÊJ§§[‘Ë÷uæç†KòËýx=&|ºðbO÷OàÝÁ&-¼ØÆ-çqIk#uTàÕwéØOVš7K=)¯˜›À«1aê™Ü6n"ŠÑn±9U•bz‹]¨{P!lÉy˜‹<èc™èèaŒñb§É”e¥ÇHv ëÍhx¤4à6|bjœ: +““g*ÃìÌã±Màõ&KýbφF,‘sGÞðKãZ@˜ŸÝî_Ò塎¨,Ï”Œ jÜÝ/nû¼q‘¦î(ÄYœUC)m•U'—7GïBíêz¯ÛîñÁ³ÑlÙ¹Ço$›Õ#ðÆäîý+ñzã‘39UàõŠº‘œ +“ÓJš—«÷Y¡ˆçLŽñœ—«çÖv˜ÞùaúÏdSx»Ú8éoø¼‰U‰À½yg‡ ¼î“Òðì<=½Îx}¾õhþ ï7ÿåÁˆyFŽI +¼í#OpÝÅ¡dÓ¼Aþèý Ÿž6¾ß­ì:/ÝåM#yKàm—ºlðgô +ÞÀç=úÉßJfMüì†|Ú8‹æÔqÛ0"Þhk’ùÒEo +ßU‰o¸èó8O‡uv.;Á…õèêNˆk|« ¼žÙUIjøÞRH5§ ú)¤Úpþ‡®z܆¬!Xœœ¶’¯û°ÝÁŸ¹©>«Ÿ}‹qi ~";«ívÉLŽÑG™f à‡ëlsŒ o¯è½NÅ’×?ä Ù¡³U/÷N~-+{ôÝ¥¿!l-ñSÌŸ³ý>uQn ç'ÏßWÏ¢ ‹`4iëµn¼7øõÕFšlì6è n½u9”õZÔý¹8*ÙQUþz?€·+6~Ï€¿ŸF¶zUpWäýêNN+ü,#ûµRy¨®ÜΙN°rã€sÜ8]mtc„ÙÓO{šÅG}¾¤¦ÈËqQ.8Þ<_MèHý8†¶ñ}Ï<%^}ŽL¾­>¯ž4ö¬xz¨Ü§œ±¿¬ûëÜçXÀçîs,à†wÏUÑnħ=™´®Çâ©)ªÇ¿>|u×]oJ´êˆréĤˆTÀõ®¼ß‚\}pâAS f ¾L;½Ôi©º í +¥ÿ¸QÚÍ^‰6Þ º¦—h»ÁÏ´§º;Ö¯µq¾°ïÓ2Æþ¸,Ž<‡ÞÒÄc(`¦÷ mc¡cä/¼Ò®¾£]l2rô±?îðsT#½¦Á\lÇ¢`ŒøvxT|¥]̧NñјßIÁèí‡s-àzƒFjÍÓð¯Söq€—zzÊnôî$ë•ÆÓïEï˜ÓEÏÝ9­vîáSpÆŒ4e7œÞáÅ¢—ûéÄ +¸áórÃ"˜øÊéCèa¢ö=eCfºZ|öΈ6¼­# šœÏ<ñÝðÝB»îÝ8žˆ.àÆàƒ‚©(ßy^ð$’†kÉãÐÑm"ϲáçƒKÜîái;ÞUr7V: +Yq8ÏA‡3Ê^QùU¯0_FÑ+,£æ¦e”¼Â+¯¨ûœ6Ä·qÓ8øpŒr×Ú¿÷å¾_Kó_ŸÜ½õÇ_rwM^ÿIÿ=ušýÁ—¿ïÈï}ùÿWm† +endstream +endobj +352 0 obj +<>>>/MediaBox[0 0 612 792]/Annots[296 0 R 297 0 R 298 0 R 299 0 R 300 0 R 301 0 R 302 0 R 303 0 R 304 0 R 305 0 R 306 0 R 307 0 R 308 0 R 309 0 R 310 0 R 311 0 R 312 0 R 313 0 R 314 0 R 315 0 R 316 0 R 317 0 R 318 0 R 319 0 R 320 0 R 321 0 R 322 0 R 323 0 R 324 0 R 325 0 R 326 0 R 327 0 R 328 0 R 329 0 R 330 0 R 331 0 R 332 0 R 333 0 R 334 0 R 335 0 R 336 0 R 337 0 R 338 0 R 339 0 R 340 0 R 341 0 R 342 0 R 343 0 R 344 0 R 345 0 R 346 0 R 347 0 R 348 0 R 349 0 R 350 0 R]>> +endobj +353 0 obj +<>/Subtype/Link/Rect[253.43 634.98 257.09 647.27]>> +endobj +354 0 obj +<>/Subtype/Link/Rect[257.09 634.98 270.43 647.27]>> +endobj +355 0 obj +<>/Subtype/Link/Rect[270.43 634.98 277.1 647.27]>> +endobj +356 0 obj +<>/Subtype/Link/Rect[277.1 634.98 315.35 647.27]>> +endobj +357 0 obj +<>/Subtype/Link/Rect[315.35 634.98 317.57 647.27]>> +endobj +358 0 obj +<>/Subtype/Link/Rect[317.57 634.98 359.82 647.27]>> +endobj +359 0 obj +<>/Subtype/Link/Rect[359.82 634.98 362.04 647.27]>> +endobj +360 0 obj +<>/Subtype/Link/Rect[362.04 634.98 373.16 647.27]>> +endobj +361 0 obj +<>/Subtype/Link/Rect[373.16 634.98 375.39 647.27]>> +endobj +362 0 obj +<>/Subtype/Link/Rect[375.39 634.98 398.5 647.27]>> +endobj +363 0 obj +<>/Subtype/Link/Rect[398.5 634.98 400.73 647.27]>> +endobj +364 0 obj +<>/Subtype/Link/Rect[400.73 634.98 435.39 647.27]>> +endobj +365 0 obj +<>/Subtype/Link/Rect[435.39 634.98 458.07 647.27]>> +endobj +366 0 obj +<>/Subtype/Link/Rect[458.07 634.98 470.97 647.27]>> +endobj +367 0 obj +<>/Subtype/Link/Rect[470.97 634.98 473.63 647.27]>> +endobj +368 0 obj +<>/Subtype/Link/Rect[255.27 605.89 258.93 618.18]>> +endobj +369 0 obj +<>/Subtype/Link/Rect[258.93 605.89 272.27 618.18]>> +endobj +370 0 obj +<>/Subtype/Link/Rect[272.27 605.89 278.94 618.18]>> +endobj +371 0 obj +<>/Subtype/Link/Rect[278.94 605.89 321.19 618.18]>> +endobj +372 0 obj +<>/Subtype/Link/Rect[321.19 605.89 323.41 618.18]>> +endobj +373 0 obj +<>/Subtype/Link/Rect[323.41 605.89 334.53 618.18]>> +endobj +374 0 obj +<>/Subtype/Link/Rect[334.53 605.89 336.75 618.18]>> +endobj +375 0 obj +<>/Subtype/Link/Rect[336.75 605.89 364.77 618.18]>> +endobj +376 0 obj +<>/Subtype/Link/Rect[364.77 605.89 366.99 618.18]>> +endobj +377 0 obj +<>/Subtype/Link/Rect[366.99 605.89 390.11 618.18]>> +endobj +378 0 obj +<>/Subtype/Link/Rect[390.11 605.89 392.33 618.18]>> +endobj +379 0 obj +<>/Subtype/Link/Rect[392.33 605.89 406.56 618.18]>> +endobj +380 0 obj +<>/Subtype/Link/Rect[406.56 605.89 408.78 618.18]>> +endobj +381 0 obj +<>/Subtype/Link/Rect[408.78 605.89 431.45 618.18]>> +endobj +382 0 obj +<>/Subtype/Link/Rect[431.45 605.89 433.67 618.18]>> +endobj +383 0 obj +<>/Subtype/Link/Rect[433.67 605.89 478.58 618.18]>> +endobj +384 0 obj +<>/Subtype/Link/Rect[478.58 605.89 480.8 618.18]>> +endobj +385 0 obj +<>/Subtype/Link/Rect[480.8 605.89 499.47 618.18]>> +endobj +386 0 obj +<>/Subtype/Link/Rect[499.47 605.89 526.59 618.18]>> +endobj +387 0 obj +<>/Subtype/Link/Rect[526.59 605.89 526.59 618.18]>> +endobj +388 0 obj +<>/Subtype/Link/Rect[144 591.34 185.78 603.63]>> +endobj +389 0 obj +<>/Subtype/Link/Rect[185.78 591.34 213.35 603.63]>> +endobj +390 0 obj +<>/Subtype/Link/Rect[213.35 591.34 224.02 603.63]>> +endobj +391 0 obj +<>/Subtype/Link/Rect[224.02 591.34 226.25 603.63]>> +endobj +392 0 obj +<>/Subtype/Link/Rect[226.25 591.34 235.58 603.63]>> +endobj +393 0 obj +<>/Subtype/Link/Rect[235.58 591.34 237.8 603.63]>> +endobj +394 0 obj +<>/Subtype/Link/Rect[237.8 591.34 246.25 603.63]>> +endobj +395 0 obj +<>/Subtype/Link/Rect[246.25 591.34 248.48 603.63]>> +endobj +396 0 obj +<>/Subtype/Link/Rect[248.48 591.34 282.73 603.63]>> +endobj +397 0 obj +<>/Subtype/Link/Rect[144 447.78 162.35 460.06]>> +endobj +398 0 obj +<>/Subtype/Link/Rect[162.35 447.78 171.52 460.06]>> +endobj +399 0 obj +<>/Subtype/Link/Rect[171.52 447.78 195.37 460.06]>> +endobj +400 0 obj +<>/Subtype/Link/Rect[195.37 447.78 198.43 460.06]>> +endobj +401 0 obj +<>/Subtype/Link/Rect[198.43 447.78 231.46 460.06]>> +endobj +402 0 obj +<>/Subtype/Link/Rect[231.46 447.78 234.51 460.06]>> +endobj +403 0 obj +<>/Subtype/Link/Rect[234.51 447.78 255.29 460.06]>> +endobj +404 0 obj +<>/Subtype/Link/Rect[255.29 447.78 258.35 460.06]>> +endobj +405 0 obj +<>/Subtype/Link/Rect[258.35 447.78 264.47 460.06]>> +endobj +406 0 obj +<>/Subtype/Link/Rect[264.47 447.78 267.52 460.06]>> +endobj +407 0 obj +<>/Subtype/Link/Rect[267.52 447.78 290.76 460.06]>> +endobj +408 0 obj +<>/Subtype/Link/Rect[290.76 447.78 294.42 460.06]>> +endobj +409 0 obj +<>/Subtype/Link/Rect[294.42 447.78 310.93 460.06]>> +endobj +410 0 obj +<>/Subtype/Link/Rect[310.93 447.78 326.22 460.06]>> +endobj +411 0 obj +<>/Subtype/Link/Rect[326.22 447.78 378.81 460.06]>> +endobj +412 0 obj +<>/Subtype/Link/Rect[378.81 447.78 381.87 460.06]>> +endobj +413 0 obj +<>/Subtype/Link/Rect[381.87 447.78 395.31 460.06]>> +endobj +414 0 obj +<>/Subtype/Link/Rect[144 346.58 162.35 358.87]>> +endobj +415 0 obj +<>/Subtype/Link/Rect[162.35 346.58 171.52 358.87]>> +endobj +416 0 obj +<>/Subtype/Link/Rect[171.52 346.58 206.37 358.87]>> +endobj +417 0 obj +<>/Subtype/Link/Rect[206.37 346.58 221.67 358.87]>> +endobj +418 0 obj +<>/Subtype/Link/Rect[221.67 346.58 279.75 358.87]>> +endobj +419 0 obj +<>/Subtype/Link/Rect[279.75 346.58 282.81 358.87]>> +endobj +420 0 obj +<>/Subtype/Link/Rect[282.81 346.58 298.1 358.87]>> +endobj +421 0 obj +<>/Subtype/Link/Rect[298.1 346.58 301.16 358.87]>> +endobj +422 0 obj +<>/Subtype/Link/Rect[301.16 346.58 348.25 358.87]>> +endobj +423 0 obj +<>/Subtype/Link/Rect[348.25 346.58 351.3 358.87]>> +endobj +424 0 obj +<>/Subtype/Link/Rect[351.3 346.58 367.81 358.87]>> +endobj +425 0 obj +<>/Subtype/Link/Rect[367.81 346.58 370.86 358.87]>> +endobj +426 0 obj +<>/Subtype/Link/Rect[370.86 346.58 389.2 358.87]>> +endobj +427 0 obj +<>/Subtype/Link/Rect[144 295.99 162.35 308.28]>> +endobj +428 0 obj +<>/Subtype/Link/Rect[162.35 295.99 171.52 308.28]>> +endobj +429 0 obj +<>/Subtype/Link/Rect[171.52 295.99 206.37 308.28]>> +endobj +430 0 obj +<>/Subtype/Link/Rect[206.37 295.99 221.67 308.28]>> +endobj +431 0 obj +<>/Subtype/Link/Rect[221.67 295.99 279.75 308.28]>> +endobj +432 0 obj +<>/Subtype/Link/Rect[279.75 295.99 282.81 308.28]>> +endobj +433 0 obj +<>/Subtype/Link/Rect[282.81 295.99 298.1 308.28]>> +endobj +434 0 obj +<>/Subtype/Link/Rect[298.1 295.99 301.16 308.28]>> +endobj +435 0 obj +<>/Subtype/Link/Rect[301.16 295.99 348.25 308.28]>> +endobj +436 0 obj +<>/Subtype/Link/Rect[348.25 295.99 351.3 308.28]>> +endobj +437 0 obj +<>/Subtype/Link/Rect[351.3 295.99 391.05 308.28]>> +endobj +438 0 obj +<>/Subtype/Link/Rect[391.05 295.99 394.1 308.28]>> +endobj +439 0 obj +<>/Subtype/Link/Rect[394.1 295.99 412.44 308.28]>> +endobj +440 0 obj +<>/Subtype/Link/Rect[144 194.8 156.23 207.09]>> +endobj +441 0 obj +<>/Subtype/Link/Rect[156.23 194.8 165.4 207.09]>> +endobj +442 0 obj +<>/Subtype/Link/Rect[165.4 194.8 177.63 207.09]>> +endobj +443 0 obj +<>/Subtype/Link/Rect[177.63 194.8 180.68 207.09]>> +endobj +444 0 obj +<>/Subtype/Link/Rect[180.68 194.8 245.49 207.09]>> +endobj +445 0 obj +<>/Subtype/Link/Rect[245.49 194.8 248.54 207.09]>> +endobj +446 0 obj +<>/Subtype/Link/Rect[248.54 194.8 264.44 207.09]>> +endobj +447 0 obj +<>/Subtype/Link/Rect[264.44 194.8 267.5 207.09]>> +endobj +448 0 obj +<>/Subtype/Link/Rect[267.5 194.8 285.85 207.09]>> +endobj +449 0 obj +<>/Subtype/Link/Rect[285.85 194.8 288.91 207.09]>> +endobj +450 0 obj +<>/Subtype/Link/Rect[288.91 194.8 354.32 207.09]>> +endobj +451 0 obj +<>/Subtype/Link/Rect[354.32 194.8 357.38 207.09]>> +endobj +452 0 obj +<>/Subtype/Link/Rect[357.38 194.8 422.79 207.09]>> +endobj +453 0 obj +<>/Subtype/Link/Rect[422.79 194.8 425.85 207.09]>> +endobj +454 0 obj +<>/Subtype/Link/Rect[425.85 194.8 438.69 207.09]>> +endobj +455 0 obj +<>/Subtype/Link/Rect[438.69 194.8 441.74 207.09]>> +endobj +456 0 obj +<>/Subtype/Link/Rect[441.74 194.8 453.36 207.09]>> +endobj +457 0 obj +<>stream +xœµ}mË~¹q߆P +·!‰hÁðÛqÍå£gɸ‚½¶×ŽãuÖ‰×ï‚[ž€ó¢}ÓÑoÒ~ÀjF纯Ig4‚–@Ög÷wëI£Ñ<ëoûÙ›‹Rˆ>ûç·~ööéÛߎ©Øgýçñá‹·hìû?áßñößÞ~óö¯oæÃÿx³>©¨y3LJ¿{ûÝïÿ\ÿÜ|€ÿû·ÿú>Îë/Ÿc×ÿŽ÷ü7üQ%è»ÛÆ|øìu(ø·u8ï?$s<ÿá³óí[ýöo>û vÇ~‘à?•ññaùø?ñÑ>\`øËøüð‰á%â“}Çð¿–ñé9þ7">Xþ2>>²ÙXÏbÅm¬g)¤ø?•ðö¨ëÃà/Ãý#ðá&ãã£ýt­q9"wZS–sçïD¼õd7VǦGÊ ÿïŽGvËãÜÃæåw¡§_<-Ö›GÞáï|·þA„ó8ŒžùmHýa—Uøpz~*ããÃýa·Éô‡ñÏe¼丱œU˜»±>Ù÷‡W>-¥®OÐ [ªpNôWaâø~},á]•ûÿRÄW`áóý…ˆ·u¾f_úùÊôÔãå6¤•«Ç+ýzºz¼BÔwçS¾Dqâ|yø°AôâÖEÓ_v¢¸u1õçW^ŸtôʃÌo©ŠC¿±¿ÙôçWæŸRå›Õãý1È+ñ¼ûz;:ývycÞê»7¹¿¬Eqèí ~Dqèëíxll¯wƒ¸ú¡ŒĕȞÞÛþøŠ×‹÷áá7nGïëzn _oÇÀñâíåëíùtÅËÝG÷H;Ë_oÇô§Ë§A5O—OU5ß8]>ª¶¨møâúÓ.JC_o»î4ŠÒÖ—ÜÓ#ŽŽ*²þø†c†Ÿˆøª »Û%˜*M6n»`«8ÙPnƒ ½8é;3–ú7³«Þ\¢EÊM½·¢¥pÙ†­×Vb´È&c¬b¢ÅSbêU(Z6_«Fx0Êå%¬Öå‘ô´d¼ÏÕËXð:'ð…i™@[ÖNÕ,WíTÑRÌj†±™—ÀeK ï¸l—™Ô#›eU/õnn9éW¦ž;¾²Mì,œOõBºÔ­Ì¢tõ£×sm¢~ªÁ‚=Oà‡lËú]­ff£ËÖU,`ø·ec/sö=ÙÔËÌHÿ²xöl]Ä* JÿÉÿ\ +Þø£oʲÔà, ~!{óã`Ä|ôO²4`ÃP¼ìð‡exñ0™j“ƒÌSÓ»Ìðk‡ƒ/„¤“Ÿâe _ lþºªs«—Óùaž~k<˜üjúAR:NÏw–¢ÒoÐo#˜Ì¿g¶gOùb¨&ÇnòúW“ß:={¢¼Ì;øØÓ³ðØU›7æ –Ó/»Ôêq¯FÅË÷CôàŸ×ÓëõÃç+‹üQg!ø¸t©ññ¿/»¼ê•7ƯFÃÆt]µ_Î/Éø&¿zù1x›¼ì¡©Ç÷ðã[&<Åþù"Þ¹ê²u#íyqõ¼;>¾ì"sþ‘6ä‰óÇÃnÈWÏ»ÛÙ0pÙ9½|F—]ØXÏz~£ÑË7WÏoâôˆ>pÙå õÁÕó[øzþ£ì²³àTЯgÕ«—‡kŪª(^«W½c?úü[+½Ê1ü"nšÀuKàrØ1ày&ðEÔ4‚kƒÀAÓÊô…Âe&9¼#^ðGáfb[ÿ†¯F­¥è¯Ëè .^ÿ/"¼ŠûÂFÿ…· ¾)ú×2ºÌ„e>ñ¦YÌÚá«*uõT-ˆnFÍ×d8†V üË"¼Êa›)ü«²Ú•þ–cF%§ +yŠ–£t>à®ä^ë+)l]D{ƆؾI6?…ò ÚXÅWQK H&£Ÿj=y‰ñ¯ÞÍmT¥Ô°9áÕô‚‹7-ÜÝwGoÔ„,ĵ´»j÷½^í!~mÈ1—ã舑CX‡ƒüE˜r&Úr¾^¨œvÑT„ðgˆúÑ«å‘ÙÁ^+¦ãÕJÍôVª¦äTº)Á«”S‚Wi§¯RO ^¥Ÿ¼JA%x†Jà*•àU:*Ák”Tÿ™ ÷è’¸ã†QK5x'ü'2>CØ“âeËÆžY9tU„p¼¬:‡:“–{¬‹è1PÓï}?þÂÆ9ƒêÓ +hÙ8½õ8âÆ|có@¼¬%¦æQÔž^›Âƒ³ƒ¬&f‹¼;îŸ9ðÀ!ª&¿¤‡ÓË6W/¬N–È:ÎûÓ"k‹õÊ +²Í™ðˆ^ÏàÀëÆ—Æj¦ Yúh¶znp®ª]ecüjÜm0³«Æ]äxQc•´#_ÖëêUg“þ0:ÈPåÜ)QoäÛ+†]½ŠœÝXŸzuôÈó-G¿>²jZâ=qºA¯w]GœBw¤~=å”8ãn%ç|™øàÒAN´½³/«Ë6ô²|O aåëÕ­^Xùzx_µNëXqJö–Ê2eÙà+•Ö=Lbx9? Üè¿P ºÑ ^Ž2ǹy¿ˆz7X·¸S¿P™äêç›rO¿x­˜\å_OÙD(˜k§§¿xôD¼V¬†%ß.9êg¼u ^Ž*^ùDêñë9W‡vºÖfôu¼˜ô:m7~’uÚªCòõy¬tÚŽž'ý¨‹Õi¶Bˆ}Ubªvß_¼A¹ä: ßáù}á¯o(}ûÿ1æÍ/àkŠÏH.ù‘úýÅ›¯öht“ïо MøÝæ%iÓñœ'ÿƼæ•ù´.ÜíAæðØâÍ÷r¢ƒ;´¥ÔðЛ§.Ïç{NæŸÀƒÖ†ùêÜ®Æ÷"àë½UÊF.¿"Â=º§&pFþÙÏ”~0B†ï0íýììõó?’¨Í˜ÎNá¿á|ŸÿIÂVéžøB|*Â#Zœ÷—_Ïjª!Êàù$ Â㣨W’3ü©tð=';œ0Ëmøs¸ÛòwÜ‹„/¿“@â2Tµ‡ï0'éž„ w«zq¸5=\Ü@Ñ]@à¿•àî@óœÀ%Â]¯V|,ÂSÿ±‡r2Ϋ?áÃËÚ•©¦0׿å©Ö+¼ð…üD„‡þÆN•3Î92Rl ËÃw˜3Ú-c=qÞf?qŽ?Yo`HS¾Ãœ¤[ž8 o€/zþHX.9»=ùÎÉ„°²qüó ßNð‰¯,þçø“ó£ûÏ0'螀 ÷"àÒ’÷Ë»Ÿ‰p‡¾XíþåŒIÚ3Rlo>oE¶8g¿V%Knò¦ky»vlÜ;þçøƒŽïåûw˜tGÁ;N·{à­é6[º*<ܯÎnüÀKòð¥‡S‚W®s1$ SŸ&_ýsÜ HÉO“ï0ß­ÛÝqÃzü…Hqî)þš÷ö1×<æhßsÊWExé[=˜‡×S^ï¶<'/ý9nˆìÙw˜oÕíÖr’ŽÐn/–ÎçË>³%L?»oRd,€¾ãóûÂ_ß-0òÿ~Ì›)^À×_Ÿ÷ߨÒý쾿x PÄZ&ß±}šð»ÍKÓ®Òä[sð¹p·ˆà8~Vœ¸Nè~!ðW¼‡N÷œL?£¢8|ÇùòÜÇDl¿ËrÄÇ?¸Ô”>Ó—'pNÿ9ÌÜà¦L¾ã|¾÷ó»p·÷fű=\ú4‡ KÞwˆûd>ºä’¶¥_lÉùn›·ë^‚ ŸÂá¢ïôÖ¬^w´Q•…$ÀN9ýŠ&öºÁ»ï±Í9a#‡ÅOÃwœ³Ù­kñ‰{‘ðî{g?qŽ?éꮺÉwœ“tOÂ…»Õ ;xÂ,l-@1ýÝ÷Î&pN&Ôš‡ï8ŸðퟸQzðŸ8ÇŸ„ªÞ4ùŽs’îI¸p£€¾ hY=×C<+éϔϘZHà·ˆgÉMÇF·ZaeÖ\ºè m4Í­¾Uçdë°£îøç[{ªò= ïÜÄ~â²`Îñ;ÎIº'á½Hc9àèãÌ'ÆrªÔ©¼¢)þŠåÐå9'ËeÛŸößq¾œ÷ᜠ7ÙAöçð“ÐxÜRÃwœ“tO‚íWA¼5áߨAHæ£KyÞêÖCô‘×?ÄéäËsN–+c¾ÊðçËy‹= ¯ˆý‰süIg0QeøŽs’îI¸p·vö2ëÜ:Q‚Û£ýû"<ö;øÏ÷œÌ¿Ußq¾>÷1° 7Ùöçø“©µž¾ãœ¤{\ïªúk1 W°ÁÖ½§ª‹”9l¨¡4MAáRâlÝnK!îPq-Åϡ׬ úÁͰØ"é¦ô'E„[ß;CŸ| 1…P°ÅÒI?¾xOEr“oÛ¾øú€¼ +êyë­5~ß 5›ÄsÄ*É—GY‰‘Á¥£aªmÒÁÅ£q9ÕÃGÛÿ!Â1$JáV‚§ø ÁóÑþ^ÜÎ÷éö úé¸0ù¶ó}½ÝÊ׸O¤s õÝÉ·CÇÈ\\:z‘­:…K²!ªGÇÚñ¢¦šöZ§‡ nÏ’ïÕ9îÅ>~ã·ïí­ÿó5î“„Š×;¡%ƒž£ ‰ÁŸ&'§ÿœÌ'‚¿í|¾·ó{Ûï7ÿ‰süIà‚¿íœ¤{ÞÇ}’ :ý-¾èDá’þ +¦ +ŸàÓ©Ä'pN&ôÜLöiçÓ½ÞkÔa…éœÃïùn½}·ÅœžûßïYRòS@à¯ÛŒß?©õ? ôeèˆ3~Û9ý·ûÞ£ì'Îñ'—zOÒ= ïã>IK]>ºEábÔ£Z1Ž.V»Dì¡9“wA1.ÀÅb—XzZDÒ&<«_„çÙ:b˜÷6Iläû5.ö µ9B$I¸·z<>}Cñ‹§ •Âå¶ÅЧ›ï‚Üf·`ÛM59Ð6r!(×á¾×ä:|@íÐclOÜ%Êä^oû ÔkªìÐcäêéqÒMf·Ä >Aâå—‡¼ÏÅ/ú®HÚÔï/”Ô3¸Ü%$ƒËM4ªòs%á{ñ¹èÔV R5UÚçд¦ ·-®âÄ%ýq„¶Þm°C•&GÙ`·*¬Ñ³ÖA=ýØ÷,ê7ËÙêÙÍWñ`7Ä4Vsvƒ¨´õèŸzúåjë MAOÅÈ“~¾­8C}Üáå*“ôj#l¹§¿ÏÛ„—«Ÿ¯˜FíƒëÇÓ¨=ô˜âóÓr}<î#¸ôw…˜âì±aÔ½·cÀ·ŽQúñ«½nüÆd æ:ܽ#3ão¥m‡üN¸‰9Ôàôåžþ1a¿@¬Z}XГ• +ø*g¾i/Å/žÁ<^Š—ó`ÛÓO¿x_ß~¢øE/BÌã¥øE/B¥3¿Ì у àu5Ë)§WWGŠ—gÚº:R¼¦«#ÅËlS• p†èǸ³/g ·Œhý|¶]ÔÓŸ1”¥¿Š‘Ã1üâegf Á‹:xò"Ç/ž^Æ—b(^Nù=ê/§ƒ:›v¾˜BÍé‘ùU•ßDýúã[Ê;ô8,çTó'¦P=ÿ@òíµÝÙZ?¤l7ö6b^Ï;õìZ·AxødÅW# ¤ç{+×ÍÀCÊgñzõE¿W9¡¹HðÿiåèÆ·ÞUý=ðñå6„fm  +ÞÈú ã;.^ÏüÐVýp¸Ò%oééu|y™^Q¡ÅgVøø¢Bë|„rŠu<Ìt÷ÂjÄèÅAñ¢Îé"¾éÇ6XTj¡ßø6~ Þvô”'\o;Ë9ZTjdzs•ZHV뤭¨ÔBîW'eúK鵟Jx°­ÀÐÞ8ȲQ3tvLE/±P/lL§Ô _àÌJ/,¯yàâ5üQ¼ØÙÔ»¢QɆR|íîÿ ¡"©žpÆw…)^~N¶ÕÐê'Oò’K >HBñréóÂÕó½jßÔóµ`S¼|Y›‚Î0‚_¹bÏZõzb­\ÞXÈ›gðÅ GÏ>²âÖ^ì£øu©œÛ˜.Ô• ú«Å۱Ϣ߷G]LËžø,jÜXþQ5Q³g®ëÃà‹Wgšu/«ñÕL+||ÑUk[ûõiq­}‚šT ‹~»\k·°1~y$ýêCƒ¸¼q!ð“ó9Ö â£åg±ÉŒútAàǤ ú]êO£¬™û—$xÑ+ã‚ÃÀ'Á‹…Æ®žÞîv”LJì«é&³uدçúôÛUïÒ#mlW½K _ÎÅó2 +é6ð¾>‹þã üxêãËÙsѼ £¥-žÓ#+?9);€|¡ e"!&êÅ3$³ïȈœtòDnAÞ­Î"ÌRú«Zîþ‰–ÿs~|9¬]/¬äͪWo§ +ˆo[@äÄo¨æPî7TsŸ›ó[«š@ +x§yʧ¥8(7Ô3CÁÇcÕôCvwXD·X8BzEú<•³q·ƒõQúÓÚj‚ÌöîôЧ=´WÕ§=@›¯ë Ùú7u‘ÖÜ YÒpº^ÍÀÕ›~aøˆ3ø'"`Ý™ú¨ƒÉî87Ë(Tãô,ž‰m6&ÁË6ojéOjîÌ-ýI½œÐ77mœvhyh7è©Z|w³,ér˜Ý©¥mpNÏ"œú›H6ê :ÃÇ—Fèb6ƇlDz1_ô§Q¶ÁHÞn.Ø^š/ŽÅÂGõyD£zã®ÃüHΟ¢ÞìZÿTýzB~dÖKO—R?þÒ +^/máÙcC>€6äXÕ—)fGrv£É˜í˜õìãÓÓ]ŸÑËrhûlùø¢û êä6ˆyã,BjawåÅ÷¡SÄdòᙀ êáy™ ¥,êÈÇ_ø?b T«§ &µßXNxq}ãhyxc…Ó#ªñ>¢sÑm8÷¢\~®˜-Õ“ƒ~ÃÂ1ˆÚ… îÑa¨UÂÑtZ£î*lÖÓcb§HŠË¬Åè€ÚêµÄâ3þ®Æà%xÙä +ØÑ„â=T3Z¤/>£p¸˜¤-Nƒk^i¦øEÇÒˆ&Á/òó,†I ^¶×s“$/à%ôô/ äÔ­¦¬ÃWµðéÊ6…i,¿ˆÚZ´)^¶¨«N6¶žeo ê0/wDµ¥_3Ö#›Œ~{Ñ"Møàûõ_Ø€¦ƒªù¡^t–Ó#GÙ“ÅÀÁËzqåýÊÔ_W' e›· Âm·mi,/ë¨PQ—õóuG j÷×™A¼É6”Á†Ìzz¬éåÃÿ–ñ=\Zù€X³A¿s˜ÀEðÿge“vë/Û\Õ&µò+öÊÆúøV£å7´a9^ôf£ ›6Ö'Ú~¾ ›4ôó]ؤ¹çO™ŸSKÑÊ+WåCÈzy6iÚ ? ©··´H­8Çnqœ|Ù.:2žµÛ o%¯Ÿ¯7½.&z0‘/›ðxQÑKxh:nhXP·!m!ŒlœžÛ )šåì GV}‹ì©×3´üc5ý!î}?¾L{¨T­Ü‚{ðý•#ÛiЮDíjðâÆíå¡ÅÎ<£‡ˆàÅp 6ãì¶xÇ<¢þ´ »¡û<+ð´Ó P¿1|UÌÆd­Gï½Ö +õ캳Aä”wðSÑÕ†#¨‘¦e)¬.ßÔN‚_¼Ò²§ ^&â÷¼ˆP·Æ\¿(Nô¸’ÿÙÊ/ .Û÷©9çÔkY…‚ÓÍ-¬¡žnn¾9‚—k=Á{u%Zü:èœ^61!ˆ\ôô<³µë½¬>þ¢¯%fkyzI¥õ©J@âë/›¼ÆÙYvQÀ£'v¯é×ßÌU#x¹)Œ÷=ýk—€ßXŸØrí^ÌHA—@ÖŸ/p prä'v Ûkg{!Û+oÙ^eƒýápN¿l¡MÅ&xQçA ŸãÿleáwÒ\ÆÛ£?¾²EwÕìiÙjö87‹Q4,ÙÛήž.P9ÕË_ ðâôìƒ%xü2•ïC빡•nŽic¾1õì¹Hµ>àqµô„öö|øEŒ÷è/ëE¦uD J{ºàmãÀO¯Ü2§Øþ´,2­ÃÃé¹ÓÃÝkõÜO‡éBbvÙ¸‹01›Ó#§¦| B½<Þš^wS}áî5úí‚>çŽÏW60]ÂTVíi‡°s)zöÄÔì ÝS³wðñèÇ_Ä…]/Md~ƒ8rÞ ' ª¼¼>¹WååáÁ»¾1Û‚?XO…òz +—CáÆÏ¶/é9Ybþ‡á;Ï·àvÉŸÀɶóß8Çßl=ÐÆï<§I ¡µÇšÁfc}ìãS§ãs8'sÊLʾçùœïçx'bÿÆ9þfIJþñ;ÏihȽdÞ.ü7ÎÉo&&Šß¿óœ¦{.àlØoœão¬@¿óœ&†Ô‹ÿ¥³,ús°r—âÅÀTö¿ÁÿÕâîèyÑŽ­Ñ9Y3lœ7~çùšÞ¯á$4¼¿È~ã~ÓU)\Üä;Ïihh@Bƒìù9lÅ-ßsÊfºÎ|ç8'Hó°“ï<ŸóíŸ@BÃ_ɞ„Î<‚ÿKÙùç ivùÎqN ãoãwžÏù~ŽP{1)fãÚǤ˜¸Á'Í¡8Ùö‡¢íʼn\´°)ž|h”Àµ9G§Š·ÕL˜5OñOßásÜñŒÕñ;Ï9âž.àŒ Ùoœão. Êž¦{. z³ï×mÙÏ¡“˜r*äîpüÓvDKûöY?´Ï¾Ïìó{ó÷æž‹Ñ8|$.œüe¸ls=6¢^N o{=ýÖxt4iéÇþZœùŒúò’£Êõåx97^'á *·5v±çÿE×j×óÿ°Éè-UÓ_ÏcÜ` gZ?~¨;ÁËQÙèÀKñr®sëZ­§ÿŠZ¼«±Ù=øvÉAbèZ6ÎK1=ù¢n†AhÎn²nVõÏÝÅÔhN¾Üp +[=7€jƒžûAµLÜj`¶úír¶`èE{º nÝѳìBÝÑó%Ym4PÏFñòž¾y¯ÔëãáÍaýòC§M£n®=˜¬'?bu#ÅË©ìЋ³ÏïE|{\EZàq¾½òkƨðm\_ ðå²±U<;Pé¼|¯´›°Ü4«½®¢>_P-ÝI¹ººÊëôÒßÛÝQÚõ‡÷D7Ž <'êùyYƱ˜\OŽ P]­f ¤ïL×7ïƒV¹ÅÀ{ؘ/TKï°[UæsÚ˜oôl®§úgnG¬®æã‹^6ý67Œ¨®ŽqƒþlÊ3TKwºª|ZJK[ÒJßY +b „ ŠØ2«Ñ""X|ìi5¼ø,¾&j^|eê*Ø¥ø¿ñðú¨eøŸÉx¬ + øŠøÔrs þG2¾™]jú!A+ݯÏÔ`,¸ù”þ€XnïôÜY‚_”V·%øEiuÛ)‚—íox'–Ó³èVõzr®00Á/ºyÐFOO~knFñ‹ÇJñ=?==­[=_L2Ïzz ´š/¿Ñd܃S¿(¬(¿µÌvVS¼%l/^ég ‘SNÏ"eüxì,¾=ïËä@7ì Þ‡€dÑóÄKØØ\ˆó=ïÛzCÚØÝÔ”M5÷¤ˆ®<5=Ÿ +¤xùñTxÁŠs›#,fï,B÷ì¤ß/|ñНÏ"á=bZ«v} ƒÝý|ŸÎ=>AY¾z}0ŽÅé‘£—óàn=ûKcN|}Ä$?Lzçã‹I~ØÙŒ¯ÏߊxÈ,3ô@‰¯Ïwd¼ïÇk]ÍŸ•n6ø ”§‡×S¨z~€4ó¸AÁîâ/§Eƒ/ÞêùŒoãôâZ•™ yŽÆzزf)\ö5Xì䦟®-ýå¾0¾m/N ½[ý–ÝÀø¶âÜ×ã9ûÈ•Éõ¶Nic}ÀøÞÙ^ÈzßÙÞÈÁ ËØ`ØM+;¡¬Úð»W4Ñ’æã‹#ö)ãã‹#˜Þª$\^Î×^´ÁRïÖ^´1?Ý‹ªŸ1Œ¦%¼ +÷Ë3³±ŠÆ(íE–;¾AútÕi)~‘na£(~Ñkëý)^.2n–=ÅËT³/)~a0:àŠ_£ÁHñ¢T3ÛÅê×§=/Eñ²½^°:„âåx9vÏVO÷êžMñ²¥WY¿ühnc1s„âµ28PÕ܃£Óï.F›9~möúÝE Óè¹Þg2aƒHyåë#›PðàRaxÙ„‚h³Û`ˆ6‡ýJ|ðEóѾˆ5»½ÉBlÚíàs/ +åÉ‚=ê66 ìÑ _|,¨Þ8,øš§Gn4e°—®ZôCEµÝåš°{q•£x€ïL?_‡Ñ õú;W Oñò,·þô.ªªÑ+Mñ¢/;}ññåç·"ºÛÔÒIæ !—U§Az.Zq90`õëÎÚÛUæ $g}–°u€]É`ðR¼;i»ˆ»^÷Y>ª\6Œ7±×}lY½þÐlÛðù.,غžzöñsÑõä»Ô˹՚džúíª—û±³]Áöì)È!÷—ûâÍ( é冃ýÆ‚¶p°~à6 a·ÁÏŸŠÐÓF¦ž=Ë ÊË…Ò­y—zy®æ]êéâMiƒx£©èùIÞXN´K!W“`|‚ð7Å/úUW*\N;naRŠ—ÍÆ–6Mñb&TŸÃËV³0å@_p¸‚Á˲vþè?‹`ƒÉº/‡±MBã›àå0¼=P&xQb¢£*1År7üWR¦ŽzN¸j˯¨@Ó±ÿLí³A¯g‘ú| «šzü¾êž›_sQ©S¼¦H}Eêß©¿–¢Ÿ}+¼¿Ó|uVEê”E‘:…kŠÔgx>…s˜’=š ¾Ó|Ê«"uJƒüôyÂ×>(~álrFñr#úz2g¹˜œA†á-êŽ?²¯ªF¶¦ç¸Æ­›Üøæ{p_QøøIƒœÑmÚ-FðbŽ*¼·ùš¼W[³9œãœRynÿNó9ßÏñ5ð“†EÃùÔ‹‡E+=,ªPó•­–,?š ¯ÖTP¼¦¦‚âe/ÔHpòåâ]¨‘ðË^«¸1ßV¬¬W±òl¾œ…Α¥ªŠ{Xþæ,wÏb¯6g¿qŽ¿Yà™”á3Í)º§à5¬Jbú†Ûà’j|†Ï;“Íàì'ýîMœ|§é„…Úçç°ýÅá±ýñ;Í)º/˜| Üë7øÔ †õã|\¸Ê),c¤/{ˆÀ¥W6èqØê“è\ì/dÙåmjÞ qÙžãV ßi¾Ã÷;úvà*ú çðƒ1±Süþ¦Ýð>ìó÷åˆ2ø¢ðºôÓ“ Œà1Î O‹ƒOøÞˆ“ï4_ û‰ƒõ¥ü7Îñ7E¦§H¨Í>ú KnØŽW¾+ Çèž*‚FÑTëœáŒÙÄ ¼{ êVÕ9S¼¦Î™â5uί©s¦xM³žþVçLñŠ:g +×Ô9S¼¦ÎYMÎUç¬^ΫÎYMÿU符ÿªs¦xùÉ"{<:ö\ª±©"Å˼³={.Ê¢CÏn‹À3ææ©ÙTøŽÝøØÓ³x2ª@¾‘~¾ÁöôËeέÅ/ÏØóHOÿ¥ò¼\æ\-ÿÂùy{>zúÊqìé—ÏKÁä<µø]6é¥'††ƒžý¯Teõò;|õå2jk1r«åh·7N£sÓ4^Ž„CÙ2çfY-÷-II½<à,7ãןÞEr„Ì{5÷ÀÌ.kå±`àDM´Û.zaˆ­l\Ìi‚<å™ÙÁrÝ£Uúú¡TÒúú_à>ÿ³ŸüÁ¯d|aà‹`Ûî5ÞaÇrŠO2>!ÇÓÙ~.þ÷›&ð">àë ·˜i² ª€œ›øŒ0\_¼á£W³ïؾ ýx+æC]^õñûn¨[U›ÌF¬ xM°bÁ +Šï‚¯¥ègßðãwœ¯Î*XAiP+(\¬˜áùÎaJ—¿{üŽó)¯‚”M°‚â5Á +Š×+(^¬ xM°bF?_Ós\ãæ¿ã|VÁ +Jƒ&XAñš`ÅwÁŠ×û95ðøçs^+( š`Åk‚j¾jÁ + +×+(^¬ xM°‚â5Á +ýò´`…~¾ÍrQ‹+X1›/g¡sd©æá¿ãœåVÁŠ)›³ß8ÇßD'üðç­‚jax+ô\Ò‚³;“Íàì'tyøÇï8ð"X1» ø/œã/6ïåøç­‚3=@ +VP¼&X¡>éW°‚â5Á +==-X¡>‰W°BÍSW°b&˜ùžã¢“øŒó^+¦\Eá~°˜vúï8%h¬PË^|wjC–º€~ú‰˜á§Ç§A…Y>…ì8G-2Î[SWý‘ËþN¬ñ-;'[è™Üº>ã|ƒïwô ¯ö gÿƒ+¬#H Àw‚rÑÑ û]ª·r¸;¡¦µ@JÔ†ZXj¡xM¨…â5¡Š×„Z(^jÑÓßB-¯µP¸&ÔBñšP‹šœ+Ô¢^Î+Ô¢¦ÿ +µ¨é¿B-¯ µèéo¡Š×„Z(^jѯ µ¨Ùó +µlàcO&Ô¢Ÿo µP¼&ÔBñšP‹žþË`!xM¨…â5¡=¿µP‹þ¼´P‹Zü´P‹Zz^¡5û_¡õò·P …kB-jn¸B-jî¼B-¯ µP¼&Ô¢_žjÑßB-¯ µ¨¹§…Z(\jÑ“ÓB-jaØB-® µP¼\VJOë8­Tz^`Uß<Š×ôÍ£xMß<Š×ôÍ£xEß<=9­oÅkúæéÉo}ó(^Ó7OOOë›§žïÕ7OMOë›Gኾy®é›§f¶«oÅkúæégÛúæQ¼¢ož~ñ[ß<=9­ožš÷[ß<5ï\}óô›Ûúæ©yÿê›§ßÝÖ7OÏ=­ožžžÖ7â5}ó(^Ó7OÏ­ožz¿®¾y¯é›§^Ÿ§†¤ïÕ7o}óÔësõÍ£xMß¼Ûõ¼é›Gñrf4688AAÄ·Æyì¾%þAðEò@0g91½ÀÅ ô)þû">…^b9Ÿ[PI?r ‘Lþ@î-½íø™{ úÃcšàÅÞ‚¾ÞwÝøboA|B=êϰ7¹_.·}ßÚ+û}ßÚ3ãòêé¯G p†X<¹ ÷€úÌûª~†+χA-žtG7¨~üx ÙEð²Û3âC!úùV»¢S·­6´1ŸëbnðZ5B¢ÕËs_ÏnwØåÆ‚õ욬_›pXxB½6áèÐÐî-4«óÚd€ûN°&©YUg: b´»Æ¼¬fw¼¦=Åk:ÑS¼(ÉM–Sè ^“þ—2>1ð'"òkì1™Sò Q >ø/$<ö…cp‘ Tl‚—U 0 "_±ó>í^ìlTâóÁ‚âð_‹p‡­dÕ\ >æƒo×·E<øŒùt?ñ¡ù8 þ·2>¡yOðßñ[é·+µÐ·šþ”Ð$"ø¿ñкÓó—2¾  r·_S¿“Op•~§XÕ“â5ý7)^Ó“â5ý7)^Ó“â5ý7)^Ó“â5ý7õëÓúoR¼¦ÿ&Å+úoª§{õߤxMÿMõò·þ›zrZÿMŠ×ôßTsÏÕS½»WÿMŠ×ôßTïîÕSÍ=WÿM==­ÿ&ÅkúoR¼¦ÿ¦žZÿMý~%>¸¦ÿ¦~1[ÿMýd[ÿÍ |îE¡¦ÿ¦~³ZÿMõâ_ý7Õô\ý7)^ÓS-ú¯þ›zú[ÿMŠ×ôßÔÏ·õßT¯ÿÕ“âUý7õµþ›¯é¿Iñšþ›jirõߤxMÿMý·þ›úõiý7Õ·ÅÕS}—^ý7õô´þ›¯é¿©XWÿMõmzõßT˜«ÿ¦z¾WÿMõú_ý7Õºgë¿©fŸ«ÿ¦žüÖS}Þ¯þ›úíjý7õÛÕúoªãÕS­l\ý7õôWÕÜmèzÐ~3èÅ?ºØÔ{•J/>¶€E 굯w¯-Gî^£§?ú¯µ¬êÝ6Ö>ÀÝ«_ž©çV?Ý`ý–$ÎôÛ%·ö„w™7–M^ði$…˜½Z{R¼¢µ'…kZ{R¼¦µ'Å/,d‡ù‡/–ƒuUbËQ-À8º–ÕÁ,ÇwŒÁ×D)^ô÷agOÏð²?Ñ6‡ÁËÎM×ü}¿¨'nþ;‚?D¼Ï==2ýwSO?¤ópz––fNÏÇ">a2Åÿ\ƧGǶr.ƒCî?s€+Ã8îƒÿJÊ¡MÁžOúñÅ>k'ß¡}7ðõñ,‡žuÕßwCÝŠ+2•¸¢øEyóZ0Å¿—73êÏq6Xe<|†ù\ï§÷¾(‹›ÁGX~QÝlA¯žáÙ ÎaB­ÄxüÓ ÕÛ §ÝA¨Æ;•Ó7;ÈfpŽ3jµãw˜ÏX¨Þ¾€/ž· ÿsøM ±ç2ùsšîix_4,|©€/:/!é¯ã;9©°`à’âåRÖÃCâÅ/œ£”¾ªégj6zú1¨ä6臨’ׯ¿ƒ‹¯§\Ú I ÿ¼d8žÊà›¿ÃœçîëPŸÀ‘ÏùoœãoB^Þì;Ìih¸€/äôJ(ñæ7‚ìUXÜ5Ûw>‡s2§ôãg˜Ïø~†Oà(±Ù/œÃ‚uö¦ 4Ü(QïüÌ’Añr(ç'ëé:à38'3ÂlÇñ;Ìg,”Œ_Àɳß8‡ßÄü7;ùsš.à‹¹ö +^¸àœ,çëCÉ6_gÙC %Û~Êù7.èK3TJlW%°ç7”ìa…ê¿A?ØÁqƒ~_ͦªO:É §¶zôÌ$6ç¡sÂS ¼Gãw˜óœPcí{š_EÞô7Îá7Áá˜Êä;Ìih¸€J>wñ\Ïç±<â›@ºè†b/'ç ÅËd›pC1Á"ä ÅÙ.èÙ^BNŠ ¼llçŠ g¡sÂR\¼¿‡9ËݲØ;pTLøoœãoº ESãw˜Ó$Ð0\) ‡~ÿÛ.,~’Ÿz ŸÂ9NɈ-Žßa>åû)>“ef¿qŽ¿¹p+ô4ÝÓðjÙß'H¦øgOlô‡ˆ5û&{¸²˜åÞIñw t3¯C²ìyA‚¿¨w‹(²~á%Å"Š—mnˆ}f†ÿó¥MÏHöPC¬´0¼üTØß†áe/2dkº z2Öyê×ó²• ^î¶¶²~{±‰@ÒOš˜¬Ÿ®5Ø’ñ³›ÇOþ‹’7‹gR»>©Tv&¶8ß_¹J¾Ê5~‘©ä!xHñr&”/ðZ½~ÃB€æFúùB‘œ×Ë“+S‰âå̲fjÙߦ YrGÜX{xÜžóÂ"‘È£uªÇ§žžEœëéYt¨ê˜~k]=ëncyÔ $ýÖ^õqjòÅZ=ýÖõ¬/M­>N-Jœ®"y¾Þt¬,7ª'=DýÉrÝÚË–Ek7 ƒøþÆÆ=ÑÚ ¨9ùj7 g…jH™VN2X(^6ŒêIt|¯äîÅ£vJðß—ðþn q|4¤¢~¾ØÄН§œ"cšgS»_Xvõ¼ìmê®x´¼s½)§È@JпAJPÜ%“^BJPâ¢aQ¦ Œ¾Ï;ÇËW¥ùàÓÝ>ùþbݰ>½Ò)“ßÊ0Ô¢ ²‚Ò†Ò€ò½4Äyw”r°(úfË&øE›4l“Mñ21W—à]F^&x¹²*= +ÃËHjÌ ^ŸÔ˜àåè^šŠ—ó|rc=Þ÷ô,,4L)£xÑÇhÊÑÓ¿ˆ~Œðj×ÇJœ)^ŽV“+sþ\D?ZD/Þ¥Ø×ÙoÐ}ãý® ¦åèþq‚_4vNèÇ&x1{»’p¼Ø«-®¬ç·§Å¥ÆCú(?-ã zdÔüPu16Ö³•{èù!òS¶Ø/«H+¯ ¯ZÌúùºÃ?6¶ B[Ýñ’Cðò„Ñ‹°ŠŽ¬_Ng±ã’úxa³±<.cE+ QZ(ô×ë1™ ú«å’7®G°\lÒ³3¼ò—’^<@/^»q½C1Fw­ÒZ¢„ö¸@ãÜhôÇå3Ò^ïÐèÖDý|1ÆÄŧlº€iäõüyu$ÑÓÓ:’¨ùL£ƒã¦Î¦¬v¡ÃH§^ɺ9$Î=ÿcЂ‹g¹Ë”o,ÕV=ß^9a¿Çà6¶«š:8‹}=ŽaC<øzíGf(€àã˵3kÍôÚ'˜";¹®eí3˜Cð S›hPüÂTÀæ…ÿmßúbP¼ØÂ 9ý ÕÜõô|i¥Ê;NÏ"ÑÐGO½< Ésrd-hò^?]¶€¥¦¥:6¾½‹Ø‰A^&øE•·GÕDMÿe)|‘5´×ÕìŒUá|ýeÍÐ7/Á˚畨eŸg~ ÁËñPׇÁE§á3™O½]±9ÑÔÓM®—2;_Éwêí‚pKÚ`O¨ÛæôþYó7h‰?cÉø‹Ùàç‚Cj~ËÂlœ—gÖÁË-¡«êÓ/8,¼’Aá²ÏŠÍøteMØamšÀ)·¶#äÇw‘”zñ³.óÖ_¾˜‹õÇáÜ/† óá7†¯§Ñ¥Ùf¬MS OÌEãxùíñâ¡ôâeEò²+´ÂB.´ZàCOÏÂnÉhi¹ÙW;?ýzb‘÷=Pä½qZ ‡Ìºõwí.=>õ§]Vü¡j;oŒ‰Ã×/襃ˆKÞ8.X´ívðí +‚_ÁƈN/ËÑÙ¸+|ÆÞ¬zö¯ÛÆéªWiÇýroÁT_¥¡^)ëÙ!è[§7,@¯ò,G…•ÐÞI¥xÙL€€_~8¦½QJñ‹V\Í#@ð¼ íh¦áƒaô~'ãñy/Š—#@õ —S ᱩ´±þð4Tfxу‰¢!ofׯ?äÐ%ýðÏxÁËeÏáã¯ã9eƒ|°ùtïöÀÃX.Ë]áíî>Ã?/‡‹ª–6V'´Ù ^ŽvACܼA~Œ²A=4W嫹èß¼ZÞÇàLÜ`†ì{zd“:ô¦üâÑ›€ÁO‚—½Ùõžè‹l³ƒ,\¼ýØ¢3ZöÁžîN¿žÍ)ôØæîÔ®'>“£¿Zð•»1]x%gCbΚ–—]Õðº{W¶ÿªŠ¢^Ыqƒ7Ñ@ÛÙ[ˆñ½Z½ÂèС¡&2#6Î +´À´gÚpm\Rѽ^tB[-_äÄeô޼œsTÞß:ôþi§ë-¾ÿ¥¾§½³[G*`ÒÆEŠœ =Êbvôhl¨©>¶àƒö¸C$'ê¹ÓÇ–½«žn½݆¤…·\ôÒrÜ:Q(oo믟oi± µ4ñUMµüÄnØ^>ßóÃØJÇc»ž|Pšvî¯içNñšvî/÷1ºÊ„^läo‡òñùêtZ õàã¡úùVÙ Q[‚ÿšˆ‡ÇCËͩÀÆ=†à¿*áÁh1^O?>6Êà?á¹âx±¡>Ø,ÑëÙû óñå6ðUO +;ÓõÊ~‚Ï2>÷ãGÞ-¾½ò;3ÐØòó%>Ýc¾É®Ÿ0¼]ÅÇûac÷´±a$Æù_ìã…Ib||±”Îä¢gwðÅ›a\&鉇¸ŒÍzâ];…Ð/v ÁðñÅd`"X¾’!ã#Z¤ÿD|ÀNçjɆÍw¹dû"òÃÂÆø[£«%36ëµëSõ˜£è%3ô°úƒ /»[¾üò£a¹eËÞáG#ŸV x1EÃD\.Œ¨zr;Ñ)ëaõæŠ|åW{ gŸ€¬·Aþ™Ó/äŸy¾¿r¾”æ˜{a2šZ±/뵘øùZ˜9åQ6¦ëmÜe+'à£ï·âmÄŠ›\½mýÀÕÆjÆAo[ôÓm1p‚—³#Ó ·ÉVÑ•~¦¦'÷zÛ¢ý®ï¥ƒ¼[%b_‚—ëÌàš¶z<Ø89ë—žÄ*EØ¡½og†,Úç^˜ˆ..èïÛ©%ò“^¶5ˆ¡ÒSL‘ÁN®´¢Å üÑwEð#øE­EÅ^nlpEÅ~‘»Øª— ^ŽÁ5/?È“›g—à—¹‹†ÏwD‹»A<¤ÌñrßŠÒ d-ùø2Ÿ®71-µ“àåä¶+jEð¢÷_¨qã;‹gõ|¾Jñ‹ÜBƒÞí~a’×ï—­j°çë¹È-„‡Ì6à¹?]rê\Dß®z5£ï©_?¥œõ‡ŸFæÓ•S³Ål5ý¹ÙßêÝ‚LÄúëi4zÙ€íø¢žL,ääÈ‘ˆŠñí• CDµ^¥¡´[å¿_àö_Ÿ]‘ü(Aë_x âßÓŸÁ¼Çþ§"¼8žþ± / åø$8>>>/MediaBox[0 0 612 792]/Annots[353 0 R 354 0 R 355 0 R 356 0 R 357 0 R 358 0 R 359 0 R 360 0 R 361 0 R 362 0 R 363 0 R 364 0 R 365 0 R 366 0 R 367 0 R 368 0 R 369 0 R 370 0 R 371 0 R 372 0 R 373 0 R 374 0 R 375 0 R 376 0 R 377 0 R 378 0 R 379 0 R 380 0 R 381 0 R 382 0 R 383 0 R 384 0 R 385 0 R 386 0 R 387 0 R 388 0 R 389 0 R 390 0 R 391 0 R 392 0 R 393 0 R 394 0 R 395 0 R 396 0 R 397 0 R 398 0 R 399 0 R 400 0 R 401 0 R 402 0 R 403 0 R 404 0 R 405 0 R 406 0 R 407 0 R 408 0 R 409 0 R 410 0 R 411 0 R 412 0 R 413 0 R 414 0 R 415 0 R 416 0 R 417 0 R 418 0 R 419 0 R 420 0 R 421 0 R 422 0 R 423 0 R 424 0 R 425 0 R 426 0 R 427 0 R 428 0 R 429 0 R 430 0 R 431 0 R 432 0 R 433 0 R 434 0 R 435 0 R 436 0 R 437 0 R 438 0 R 439 0 R 440 0 R 441 0 R 442 0 R 443 0 R 444 0 R 445 0 R 446 0 R 447 0 R 448 0 R 449 0 R 450 0 R 451 0 R 452 0 R 453 0 R 454 0 R 455 0 R 456 0 R]>> +endobj +459 0 obj +<>/Subtype/Link/Rect[144 531.89 162.35 544.18]>> +endobj +460 0 obj +<>/Subtype/Link/Rect[162.35 531.89 171.52 544.18]>> +endobj +461 0 obj +<>/Subtype/Link/Rect[171.52 531.89 195.35 544.18]>> +endobj +462 0 obj +<>/Subtype/Link/Rect[195.35 531.89 198.4 544.18]>> +endobj +463 0 obj +<>/Subtype/Link/Rect[198.4 531.89 243.02 544.18]>> +endobj +464 0 obj +<>/Subtype/Link/Rect[243.02 531.89 246.08 544.18]>> +endobj +465 0 obj +<>/Subtype/Link/Rect[246.08 531.89 266.86 544.18]>> +endobj +466 0 obj +<>/Subtype/Link/Rect[266.86 531.89 269.91 544.18]>> +endobj +467 0 obj +<>/Subtype/Link/Rect[269.91 531.89 317.01 544.18]>> +endobj +468 0 obj +<>/Subtype/Link/Rect[317.01 531.89 320.06 544.18]>> +endobj +469 0 obj +<>/Subtype/Link/Rect[320.06 531.89 332.3 544.18]>> +endobj +470 0 obj +<>/Subtype/Link/Rect[332.3 531.89 335.36 544.18]>> +endobj +471 0 obj +<>/Subtype/Link/Rect[335.36 531.89 367.15 544.18]>> +endobj +472 0 obj +<>/Subtype/Link/Rect[367.15 531.89 370.21 544.18]>> +endobj +473 0 obj +<>/Subtype/Link/Rect[370.21 531.89 393.44 544.18]>> +endobj +474 0 obj +<>/Subtype/Link/Rect[393.44 531.89 399.56 544.18]>> +endobj +475 0 obj +<>/Subtype/Link/Rect[399.56 531.89 454.6 544.18]>> +endobj +476 0 obj +<>/Subtype/Link/Rect[454.6 531.89 461.02 544.18]>> +endobj +477 0 obj +<>/Subtype/Link/Rect[461.02 531.89 473.26 544.18]>> +endobj +478 0 obj +<>/Subtype/Link/Rect[473.26 531.89 480.6 544.18]>> +endobj +479 0 obj +<>/Subtype/Link/Rect[480.6 531.89 489.16 544.18]>> +endobj +480 0 obj +<>/Subtype/Link/Rect[489.16 531.89 520.05 544.18]>> +endobj +481 0 obj +<>/Subtype/Link/Rect[144 395.91 162.35 408.2]>> +endobj +482 0 obj +<>/Subtype/Link/Rect[162.35 395.91 171.52 408.2]>> +endobj +483 0 obj +<>/Subtype/Link/Rect[171.52 395.91 195.35 408.2]>> +endobj +484 0 obj +<>/Subtype/Link/Rect[195.35 395.91 198.4 408.2]>> +endobj +485 0 obj +<>/Subtype/Link/Rect[198.4 395.91 225.92 408.2]>> +endobj +486 0 obj +<>/Subtype/Link/Rect[225.92 395.91 229.58 408.2]>> +endobj +487 0 obj +<>/Subtype/Link/Rect[229.58 395.91 251.6 408.2]>> +endobj +488 0 obj +<>/Subtype/Link/Rect[251.6 395.91 254.66 408.2]>> +endobj +489 0 obj +<>/Subtype/Link/Rect[254.66 395.91 275.44 408.2]>> +endobj +490 0 obj +<>/Subtype/Link/Rect[275.44 395.91 278.49 408.2]>> +endobj +491 0 obj +<>/Subtype/Link/Rect[278.49 395.91 321.29 408.2]>> +endobj +492 0 obj +<>/Subtype/Link/Rect[321.29 395.91 330.47 408.2]>> +endobj +493 0 obj +<>/Subtype/Link/Rect[330.47 395.91 379.39 408.2]>> +endobj +494 0 obj +<>/Subtype/Link/Rect[320.09 279.54 338.43 291.83]>> +endobj +495 0 obj +<>/Subtype/Link/Rect[338.43 279.54 347.6 291.83]>> +endobj +496 0 obj +<>/Subtype/Link/Rect[347.6 279.54 405.69 291.83]>> +endobj +497 0 obj +<>/Subtype/Link/Rect[405.69 279.54 408.75 291.83]>> +endobj +498 0 obj +<>/Subtype/Link/Rect[408.75 279.54 424.04 291.83]>> +endobj +499 0 obj +<>/Subtype/Link/Rect[424.04 279.54 427.09 291.83]>> +endobj +500 0 obj +<>/Subtype/Link/Rect[427.09 279.54 465.61 291.83]>> +endobj +501 0 obj +<>/Subtype/Link/Rect[465.61 279.54 468.67 291.83]>> +endobj +502 0 obj +<>/Subtype/Link/Rect[468.67 279.54 488.85 291.83]>> +endobj +503 0 obj +<>/Subtype/Link/Rect[488.85 279.54 491.9 291.83]>> +endobj +504 0 obj +<>/Subtype/Link/Rect[491.9 279.54 511.46 291.83]>> +endobj +505 0 obj +<>/Subtype/Link/Rect[511.46 279.54 514.52 291.83]>> +endobj +506 0 obj +<>/Subtype/Link/Rect[514.52 279.54 534.7 291.83]>> +endobj +507 0 obj +<>/Subtype/Link/Rect[534.7 279.54 537.75 291.83]>> +endobj +508 0 obj +<>stream +xœ•}oÏt¿QR‘n^P‚„*ª§U¡ÐÂæø¿ m©"’ühJIß¡€P TÑ7ýý$¥°žñÙgg|vÇ—…D´Éõœ{lÇ3ã™Ëÿðñõ~„ü©¤üé‡ýñ~|ññǧÒü§{ÿÏãÓÏ?²óŸÿ“þûŸüíÇ>þþÃ}ú_þÓw:êï>Üñé{?ùǧ¿îÿÜ}¢ÿûÇ¿ùüç¿||ë8ÿÿã{?ãÿæ ÔúÚ7ý'ç>ýðgýSôßöÏåþ…£Ýjóþñ;_ú§ßýáß‘´ã}ü«8ÿ«Úÿ‚;n5ò¿ú…_:ÿÕp¾eÿEÞÂÍ+ølx^ÁÿØ‚û#ߢ‚ÿ™ wáv8…ÿ–o·ìðÁzŸo^ã¿k⃿UÿÂÆ·[Ôø¿0ñ1Ïãý‘‰O~¯=ý©Íãý¾‰Ïiï÷…†Úz[¹…¦õú5¸«³ÿÂïÙà®Yá¿mãó­ÿ7ÿ‹6¾Ý\QøŸþÔü-Þ²þnáýqÜJSøÛø|k¸ü¾[“¦çç;&Þu•« +ÿ-ïýM­­ÖÐ+<Ý|Úß×[ÐËõÇ&>Ä[ +ÿ…‰Ç-Ååå-7»þlLgêó£çó¿Ûøz«uŸý<^[;s½å¼ñýâoAËÿ6¾ÜªÆÿЉ¯Ç<^{ú»yh[ëÛ÷{Ü™ –n)áÛ7n6æÂoE+ôL|?"«¶ßµñùnBßïQ÷Om|½¥‚ˆúü„ùé>W|Ǿá7Ì[èÛ½ù | +³yøßÍÆ= }ÿz·1ýÄö§Q(î6öW(qÞ.öxûþMyC=kÀI¨]×ð³"ÐI­×ö>ÒI­Çú}nnC×b?ª74?ºnjõp¿i㻩Mâøn: nú£/óÎ5U3†ã–¾\1dr>aÕ‰ÝÙž\ Ó2ĘnaÃ2ÇXgWÃôíáV?Œæf}³O޹é9Äæn~g{uëà+n9S·ŸžÔÏõ)n1ÅIG¹9kêÆd2´¦ö'—æsÔœþäÝlÜLuK¾OgÄÕ9uë2nl…â;ð4‹³{LZ#Ùÿµìcz…7E×< ƒã+[~7uB̪àvŒÖÏ­ºõùLç–€Ûs?·¢Sx;DsýTøìû®iY‹oª‚ïçÖÑÞ)ºfºïwÍLmc:»jZL·ÄǾ³ÂÛ!ZŒrÁó™¡àï§xËÃíÇÜ4\;BîçÜ4\;Â<#Xxy»\ü†zR6䧈4màÛq; +n|ëÆ§á߇ç úýpt·ÇãóÜp{Pu®Lêcì¡»©nCŸçÝkæƒç©ÄÛñw¨ìE¢»+ôÝõrÙñwßÙm,oÊœ?øc0Ö¶!w ·!©óٸμå„~öNÛåÏL|w §ï a}ëF®8þd +|±ñåõ~1OßèÂ<ÞE”™9ªCÍmôþæ6Ìaô•£4"û…°ü¡ÌæÊ£bà)zºSÔØê~D°üéb>í(¿ï÷I[òl>í 97ÎO ¼ôvóà ¾Ýc‰óékš“Hù`=vÛÍÃtúÚQl?}§ín«g»˜ÛE”Ùøö]®ttuÓëõßì°®›g-¿¦õ0ð¨øz¥~Z'¿!?­sÄõ-õã·lx{×i¼™Ht\o˜sŽ»N;@aànõ>áæJ¹ÖGÚ`aüá8êzÂm'¾ë£O¸šwW¶úOøWL¸Ƀ'üWmxœfæ›&ÜÔÁþç6¼°Ê¿Y¦ <„›BÛFãù ÿ® §ëH¥2ß±áeš˜›ð4B7:p…×éëß2á9rVU™\&…ü² ïa™VÈœ7´€ÿ© ¯ŽoµÐ¡ÖÂNÔþ}N‡ˆÚ¦Íæb‰ÔH ÅO°í,’E*êãö噤޶x­²‚ ü¢8aoz«$ð‹ÌT_'ýýEª)ðB ¼qýtÒã]¤š<ÇæðüœÕoç:Â1Ëcgú†-C——Ê—šVS‘µðpcãL¼¼Ý7NqczÎT,O>fyìé$_ZOÿ¢¸¢±s ËsW¼ <Š+Þ>ôÉ +¶ }¨œªwK ³õ±§“|é õ¤LÖÆæ +äJol–p´ÙXÙ•Ý•vaC|ïø¸…å÷ñpÛº›2®œ¡Û†XpÛºç=‡¾îÉC‰2­ e'¾<þ¨1 )Þª¯]HÒCÓò؉¯îï¸Õ-§¹Ñ½J˜÷º­m¥qVŸòjyc:G-jšÃ$‹½[™e±ƒxʩ鹱sÊñÈœå@‹*7¼Ö3é{@³cÙbhjÛ€Ït¯)ÿÁoÚxÂf¯³Ÿîu`ÿ‹ºOø´}H'±·•¿¢„ÿôwVþ#Õ<ñÿiåJ𝝼A2øOø×çî ÷€¯öDÿ¶íJ9öŸð·ô¼*.:U©âó’»-O¸yá»å‹ýtrЉ©‰J 6²Ï¢TÀ¼-b—E}ÝÙ.Eœ¾nëo lžÒ÷?Zz mÁs)¨¡Ç­)Ùׯ—i¬f¨ÊǽÚL°<½¬4TFéÔöH«ÃøhëÔuR o¯S=Øï•,ÔqEñ„Û7’=ˆ×¿¨Š¬Ó~²ð]…›Æ>Éœ›ÓÐÁç=,;{—=xNÎ=á‹‚ÂxS«d_ÄD®{¢m€®‘`…¡K¤–a›ÇwBm_‘ô(öPsn;W9ó' +ï[)$\_Jž–Ⱦžªþ–”0v d? ²Z¤mÃ+W¬>á¿eÂûap\½úÆ‹*&%L0á}ãµï¤äêíHðDr5 D›‘qꡨÞÕÿÕ„÷“Æ«E]û¦}«:$'ñ¸£xè’Fà¡R=_dDÇ5ÀÛ)-êÓx;eC.mPx;s¶ƒÁò“7¾?ÚÇÜÔœG;<ܳ Ÿ®kšÂÿ¥í7{v‚Pu;»ÁÜÎS‚SkÝH%ãecz¨f|gu»­¯;«›ÛMÏŽ-ÜîúVœë%Oãëÿm_Ëüýß4ñto£§çl|àËÿ…Gàë‰w›ýŠo|=!ð: pù=(iãt3^ >`JA6½}ÍÄÇñ‹À›÷ÄÔÜ¥çç_šðîry·!~ œ·¯øÑ+÷NŸ/xjÓÓo^\s3X~oM.xjîªòç‘.y7?—Ë."»JÀ÷Ÿ±Ø5äÝB>á¦Å…UÂ'èÁ6ð _ÐafQGQ( úD/Og5ç«^íÆ—ÜàÄðíãÆÄøQ¹ø„/îI{bèd–èE[nà“]$:–Õ´›Á—§š¼UJ‘oÿaÙó¨àF…§[Ä áæ=Ç£0U‚¸Âä ·=’8Ò„áU¯ê¢9Ûqp÷„ÛTuQñe¢Ó—…2wJmÜžOJp/QÑ|(°èÁ¢ð'Ü.É÷Ç-Ã#¥‚ùŒÏ:Àkû¸¨Ç³ù]ôoW>SŸp3•AG°þº]Ížç4Ÿp;÷•7Ívƒ®ôŽŒ¯j “ý]ÜfnXí/]èy¥3öujMh¢ÂÔ:mUûr·{ÎÍáÂÐ…ž2Jvj­o>mÃì¬`ß|9ÂI)J|«rWµ‡ç‘oò +. õ`+0=%j©>ðƒŒ:ªn8¸¡Z Õ.ýުvú+ÆÉ)´3}é˜ü0[(Šëo¤‹P|b²Ÿ6‡™¿ÝmOjs˜ù{*‰Ïi|B ÉñW™6òG ýMÇ(xeOÇH'7²; †%—§½gZ™ÔÝe}f›‡%5+îop¼tp3Âú ~d)Þ¨ø"+ü"«9HTÞNc†b_A‘÷*þIq%à뜦ž;°¡†b·9‡hIõpU›‘Ó4ðlžU›èjù0ôXàíŽÐ3I Ë–m +¼”Mžx½¨®|GÛ2‡ŠðpËÁæ§äy¹U’;ZðtÖÀWo9÷ÍÝÆn雽êïÛ1aìl¯Vfy±ŽçEàíŽJªÃ,ø|r¦¿&A=_a¼™%¦hjú¾™%æxJÏç"iš9Q"ðv–¸o÷d˜·k–Ò³»+ð‹,q¬\´ÿªµ¨N…X·³Ä}¿é½]ñ…)ÞN÷8̇ ùKží•fí‘XÐ `§‰ÏÒJ·ÓÄÍ3óÍ;ûyÅ×yÛòÇÃÍËœ*‰øþ}t,£ö„x®šÆÛAkó~·;`=³ ¸]û¨¨¹!Ì»Ë<¾(ʪÞ…YÓî²§‡JýÒ{í¹†BiÖ6óJ4æƒÃôxaªñæÆ,ÿ™ÁD½+*!9vä©£ÌÿÝn¹â+‡DèñÏæ1Xþ3‘ùΚ¼ +Ñü†û@u'Óqgî—DdÁ׊Ò&}6õ‡:ŠÃZ]ñùæðå¥8-5f,ZëÚ§Is9?.>õ§… mA¼[BuäFJ¼}wWËÖi÷Úí–-P>Þ–æùYܰÕYþ¹pœå±£.z…DãmzUçgë³ä•:nݘWjõb^©ˆë‡iqc>C›­É:Ló¸µå†mí°®o÷£mÈOIØ ë»yðz¼ÿlã#¹ñ°õ¤[®Iþå5×$¿Ý`A}_nc~š£{]|~'Åàý‰yvCŸÓfßÍ&B:*õåÀú–¦Íµì˜ðvÌè™õ}¯5çÿ­º\ð•∎š3`\W›¤à¦•r]k²WxSëÏâà °—#ð&1“£>v73é.$ºZ‘øÙøÆÛCàÿÐÄÇ<ß¼ªr=àNE᳉O#ÿ¯U?”kRx»¿žNüÖô°›µæŸ`ú_©äðÿæÃѡԷi7ïwùãçdôôâ·¿øüAOã½ÿ”Ëc§^~¿ûÔëÑ0êóhEçéà#Nàm:¾(M¾çê>‰p)éÑÞ¯£/޵êòÛ¿ž÷ò>e0Y"\N7=…¿jùfð^á~R†Ô¿ýë!¿âø”ÁÌI¹Òf™m|#ãK¸ÂýÅê-^ú×~?Àð)ÁW>K þÂ}þƒ>rÕÌõ·)!@f`áÁ0užÄÛ.€;8Nx;k游NâíCݵyßÚY6Ï´›¿¦dkßä ¼’¦Æˆ×vG¯ðýÅŠsoçõ·­oUà3ðªƒúoܯ“: +ó‹ßþµL† 'Õ“4Rÿðº¤r+/Õ\áþbHm¬èüÛ¿òû!>€W{ªÿÆýò7‰TÿxõÛ¿–É¡Íê¹(Æâx|š+sÀö—_GÐÛËö±¿ð*ñ‹b©q‰€ÊÏŒ.ZO–IòÚ^Χ^³ûu ÉŸÊ/~û×küvM?¯z¥ÿÆýú7ûÇÃõ§-Ñ{ À§ ª¼Ì~ø‹UWݯ&"»þö/ð^à÷bÆÔ_¸_ÿ"+¥¿ýk‰ N ¸Ct|— +Ïq,Ä/;´ü0EÚÐü”ç²àçk[;—ï3´<ƒZ¯Áýº&eä/¿ýë5{¿Fàõ`Ôã~ý›mäû.¿ýk™ÞËð¢ëR¸Évpè⥾dÞ^¼4í0þä1'jÌ÷sÀoš]û×sô~NÀ§ ÿö³ òoÜ/3òëF—ŸþµD†'ܽñàçÙàÝB=OSøº(²ãÎcxãh=†wcÌǰÆ‘XðááÈÂât/Ûo+º½™Œíâ-ÉJvÿ¸U +t¿èS·ZÒGÿüÛ¿Ô··úõÀ=ÿþ§ÇßWá~ý‹T›_üö¯%z/Â8‘Œe|9ÇZ¦ûUÆzÜ^üô¯Gð^âPhÝÿ|ˆ ÿÄýú™¹áúÛ¿”è½'Ýå•_~eE´D÷‹„«ìÜ<CäxUµ7_i¼~þÈrSàõ¯l8÷cJü¯™xÇ–ÿU™å¤çûÜh·‚¹êÜèûÔ㬳´×Ô ãRàíK§TÙ{x;g•ÇÕ»ÀÛUŠe\½ ¼i\]a~\þÊ4;¿¬²ÔðåëšM‹oß6~Ñ ‡1høtÒ[)ÞáòÓë'ä¡ò{ÇošJ¼ÍYÚwþ¤ž‹;ÂÌ®‹À/2`~VÏ‘HšÕmÁ©ÅûÂêIÙªIÝø<˳|ÅÀÕñ&?Ë¿h·EÀ¿ ùE½°ü™Ÿt‚ÍQ„Lß_0N! üòU‚T7ÆK¯hý·3=pmc½Úðþ-<³|5|þѹÈXàmÞ^:Á*¾^T9ÙCó_ÀÌò~¥—?4ÔÑõ 1qâ]/jo«zÙÔ.)ÎǯÐf7Û7{~ú~œì‰ýý2êhÑýB•–ZÝD Üî(ñˇ\اû‡§)ÕANÚi×ü`Ä›Eq¼T¯±¸ÝKÔþ“u°ßïì§o+¸õãµ2ØÚ³ÒãµôúôÎü„º'½p¶#OÌ{ò &{Ø›‰LeŸ8¸ì7ðev®ì<ÑsmÃX¿Áß§2ÈuÍåo“¾4·c|ˆóx2>¦1¡`pòÝLñ©Y­èé·« {ô8MÍdLg¯Ã—‹£ì mæ¸ñàCÿ¾ nT«(àÕ‡j +¼I½EÕW¼Í‚Oqcñê؃íŽ$C +ü"άÜ$ð VîL•ø%ëJÑ6•Óµƒh%ÞŽc»#™ +þ}*¥@A.€M<Ø‘%à @‘é4à9´£V\‰·/w{dÚò†<~dÞ~o®Ÿ.à +äél¬ø‚QdZvæŸ"ÓáÆá:À⤃Š$~Qš‰UPâíÄCö·Œo/ßíÑ6´¡8®¼§§Äy»/J ¢ax;¯Qù©\žîØ&§ðæ%¾…)QLNâÛ÷ÁÝQ”ߎˆdRËo¿¿æ™uOâí{Db%Öx»ú¹Ç¤ÔŸÐü«/º‘•xÛîw2;…·_Ií>d?%Þ>'ºYµéñ8 ·©ÚètôÓC§ãÎòŽd*¾¼#™ +ûnÔSÞ2nÍ9Ê)L¶xr®½ƒc­Þ¤¹|D9o²RUJÎ +Lü¶ûB sïH¼I±ØcþŽ ®üN=.LÕ’˜dŒDµìôÇMöOzo¦)¸ý$Öà5“xý,ëåPá§ž³}—:Êi¼I&ÉoÔ蘼¯h¸ÉEÊÅ%×JJáz¹O9¹¸1=‘87}7ÈÑáª6º`µçpÅmÌfî5üýôZÛ¾mâ+? !ñf¿µ¯œ£ÂµŸJ?´ü¦»æG-"¾ºÔ ðå:©aågjã õáž>Ÿ'e–ÄÛî;õÙ$|þ9üÐß·Ý}¢6Žøzñ£ÐÚ:ØîþàÀÂå§çbô÷ÙÆ·y~~ßÄÓƒmzÿþØÄGÌíÿ…¯Drƒë…+~c~úþš»¯šøÉÁ0i™ãqÌ'£Iî Ç¿ï¸Û]?³ÿ×ÉÂg —÷³yV˜dŸ¨°ð­v^ñÃÝ”^4QÄy†lÿ”ž¸ÎïÕùU-Çdní·¢Ó1¾‹p%L‡¯ÝÃB¼h…[D+i¶V¶»ß£›¤w¯Í•8ï^{¸8ùµv©TefÝ·§Ýßè~ñ­ß| W.ÖÓ.ž bÃxUÌ1 ‹â2ûñf²“Š9j|o=¯øÆá*‡g™éÖ™’“Dâíâ†Äoêp8çwð•ã_\rEöûÞ¾DËü#þýÑd ñö­RåëK‰·/Ñ(ÔòèÓâå}dâ§ ÜG>Á‹çR»* ü‚º†_i–ø…ê4¦Þ̲ñÒj¼­÷çý¥À/–6p +ðË¥¥sWàÍ,sº•ù©\¤&ñ‹: .R“øi\Ÿ|¸œp +oßÐÑóHŸ~¾a܇.µ8‹ßù)LX{øB2à«Ë*¿há:xuùÓáÚÃí iCž4b·¯è¨"µ)¼}E—™ˆWbüHëUôÇmúJ¤É¬ao°5̓]àël +¯Æ:¾?ƒ‹î;>ùÜ;²±Y¸wDËc÷:ô˜¨DÜôSÁo˜râÐê\\Ü_†ƒk3àñRûjÄçÿì5‘øÅk¶1Í»×(rsŸÄÛïÙ¦<ÁÒ=Ê9PkB„ÉzÚ´Øåb=í®üú>?T ´qZ„Ñ] Ÿ¥a<þŽËC/jh²ëÛ‹µ]ð0„Ù÷±/TS †s‚r.àóò6À¾çàm€Õ‡2ÑoˆÊlÌý#÷ÞáË5ž>Ä—kËþ&Þâ+·ÙûYBAàÍÛFñ•Àÿ‰‰#ÿ(ðö]¹ëÎ]ÔÕ,ì,@Š\n#ð¶Zú<ÞI:åDÿ« gÝðuÃt—?ˆ@¬‘'sýÇï><è™_êä¾þ~÷©·BŒ¢g–x„žyÏ—K?Ñ3?§bý ¾þίggEÏ,eè™%¡g~…×C¸_‡4H‡¯¿óë!¯è™¥ =3ŽgzæWp=„û‹!Õ[¼þ̯¼¢g–hzf!€úƒ\ã_üÎ/ZÐ3Ë¿Ð3Küòíõ\Þ¼#¢ä¢†?œ=àû‹ àf½ëïüz‚ÞSØ>€O¾üYù7î׿™è¬ËÏüZ"C‚ø”`Ñ“A}‡øšD~ºFâÍDA•Ä?ÎM5àûuü|!wý_ÎÏûù8q×=¢ÿÂýú ¿hxý_KdˆpŸ2ؤ1ôv¡ÆÛm8ôxay¹õî/ÆTéZõú;¿óû1>€Wƒ¯ÿÆýò7‰3Æ¿ú_ËdÈpŸ2,²yê¿Nk]^4¸Pà á6—UÓàå‹“b'?»í|û‰9z`±ásÃÉÞ€Ï=W—é¹|Ø­÷«~P·¼ø_ëÁ íæ1šN 'œõý‹‡ÌJ¦ûUÆ…C<Á`f>OlB¦P)1Ûª‚KzíN\ª‚+z›¸n×"@ŠòVäWNÀ›œt˜mçcq¤cR4R‚ºèðè}ôñ 4 +8ÂÏ(à=£€#쌎3²nF¨afp„˜•åäeDçñ¤eDe?YQÙORFG8aÙ%£€#ŒŒŽ2Âó>øQ…<éqxž„AÈá¡.FG¨ab„eDŒnóK ^E_xJÇ$ûšCÉþë¶£äù y¿jÃë Ÿr¬ŠÒ_›`ð gÌÑE"¯GÛû‚ÒñŽ€Ûî>NvÀæþë®DrøÄ 6güëmÚz6“_ß©?öB¹š'ÜæLÜ‹ CEk6J|o®„±ßò¦SRm½%IÈ\çzO0ÄE"ñ‰Ä#\$p‘H<ÀE‚‹3¸H$á"ÁÅ\$p‘àò .x¼' ,Ïà"‘p€‹DÂ.XÙN.‰G¸HðÑ.‰¸HðÉ\$¸8ƒ‹ÖýÁEëÎÉE‚/îà"uÿä"ÁWwp‘àÚ3¸Hpy‰Ä#\$p‘àê0¸Hàõ:¹H$á"ççä"Ç{r‘là™‹žŸ“‹Dâ.’·óymd.‰_46NÙ +¼3ñƒ‹DâífCrHôxíëa"#™l“O¢ü5ß#ýcèwìÐ8*þÍvÂã4^QÂÇK™37¹NâçÏÛõFtu…o¯óÅ#ØúŸ/ÁêÏ\$iC|1o ¢fî톷ïI¼ Ÿ^\:W7äL[¿ñývÓ›Å.,ì»±î —*ç†øý4mÚzÚT'ý4mCÝètÄóY<'ñvkå(žÃ§‡ŠçvV·EŽýàÕm|ñŽz†‰êÜ ?ûZ‰™+ªÛók õª §i<Ât"ñÓ‰Ä/™N$a:‘ø%Ó‰#L'¸0UK‚0H<Àt"áÓ‰ÄCL'ò L'0H<Àt"áÓ ¬•'Ó .~à‡ðé‰Lý%ñfõ1£4·1Þ<´?£ß>-Î~Sø,=ûMqyF¿©Ä#ý¦°Á:ûMáÓôì7…7ÌÙo +÷ì7…çÿì7…}ÏÑo +«ÏÙoŠ‹?úMáý~ö›âË5úMñåý¦ðv<ûMagãì7ÅíÕù¾>¡gÚ ¥ÍÜÆ +_\Ÿ%/.?¿o†«g»¸òvæÁ ÀÓ“¨8áÃM}ûNÎðâ½2?/—Ýê/Ç˲)4t‡>½ŠÀ¯`n +•x )T‘¦P‰GšB%i +•øeS(•x7¤ò§ü.mO˜¯›Bئ¬ä&O¯ðÕÄ{®-”x;9Û=°Ã)üâU9ŸùIàŠ¾û#ÀPY¯Ä#u½öJDGþªÄÛíbÔJ•^âÕîó€è¡œÜ^ü>^øý?öñ÷í|Ñà[ž‹¤õÚé9Êöhgag=×vý¹'愼-»Ý YùzŸ›Ê×µøX©ÚI/•]ÏÞÝ“É{ŒW+Ïý…2Ue£>ÿ>^+Û[í~Èð•Ï2È¿q¿þM)3qý}¼–Éáó‡!¯7v7ªf\Oè¨7n£ÃýÅ˜Š²ãŸ¯Çü~ŒÏÏfDÿûõof.6¹þ>^ËdÈPæ³Ãf?¾ë ™€ðþŠÑSA•ÄÏÆ§Ù=\¼eåfÓmšŸ˜ÊìÝ.ØÛÊ¿2ÍzÍî/Ö°>L‘þ}¼^ã÷kúüðE¯Ô߸_ÿæHl]¯e2d¨³]µ×‘ê$´Ì‹Gº¸ë_Ç‘á{iWÕ˜ï×9àäÝåçñz†ÞÏÈó³—U‘á>ÿÁÔ#ʘ_ü>^ +ô^€ÏŸ…NÆó1‰·“Ò\»§b?èêÆÁN/<·×>ž û‹ 㶬ëïãõ„¾Añáy õ߸_ÿ&ñÞ]¯%2$øüYh[Qæ¶mDÃɇ9Ú3·Uò•Ê}_­¢ñý:v@5MÐû ùüÙyE8º3›ü)”÷Í>Á«T#ñ·éðÏ…P¿ kDX'ñ‹78ƒ,ñ‹f½Æ¦[àMp…‹ˆqùKeÓ-ð‹n=&óÀ¿_ã<ÿv!ZcÆN‰·3øƒÊ—¿[º¬Çk¶…AÖãýÏ6¾QI¿ÄÛ,މ=$>Øx"ß‚‡ë½gO\àíbªÌRðuwŸÇµÁÓÝ­ßÎwQÃCÛ.$mÌ»Ï³Ò +hTZIü"¡Éwÿ°y è‘6Ü=;‡ï.îôÃ%‚½{íºA¦b‚7/½Ý—ýÆhéí>­>v>H>\boªZþEûÝ1C;Û€É8,J¡<õûÀÚÃoýiyìT%7´“‰î=þÚÞÇ­Ôo^$2;{/ÿŸéjUâÍzúºÊ—øïÙøá€½ÛíWülœí§3³¾U‡—̓ñýp_ºU)?ܪ'¢4x„Ò@âJ‰G( $ 4ÀÅ”PàâJƒï}+ðvÕQ (ø¢¸¼ò©.ðvìq°“!ð6ïµýT|ú¬lÜô“ñÙ|\â +¼}‰8(àÕ=)ðé ³t8>Ïò,8ü,½\±rÈÏ'QjyL3żz·,ª×Îú üÂËÔü ñ¶L—Êicþ‹›å±çs<áóS¹€Ÿº„öã´Po;ýƒJâ„›•³Ú¨<')<Ÿ\Àžpýçöù$6©É>,餦ý»¸Þ>ŒÔ,,|¸\Á•-„‘Êx3§ÅÕñߌT?mûÆ1|o Ñ9b4x«nW|œ=%3‰®p„ðnw]ð>ÃÛÝuÁ‡cv•Ìäq—^OÑê`63EÚo +³zš ½±cx¿½®øÆùªwÛë‚Ïù¶áù8r“zÌ{>=ü¥Z¼èÿ­Ì‹%ñ‹´+óbI¼]—=zf$Þöú>,oû0£Fâí¦À¾§ï/hÒF"Làm¯ÇtÌáøÆÇ4<^ê™Ñß·}`_ùXxÛç§Äë†8Ô3“Þv±Ñ ®±qbŸÒ® +n{Ø”uÝ™}zrMÏ¾Æ¦Ž™ ðvµpË!.Íà³YýÍmHO<3yCú6ЍÞŽ¿é®:â‹KYZÊy£³ÃE­㥬lÜ…Ù¶-≶³·(©;í-Û…Í&°i ¾ð-³ÀÛTñÝ4L{Ñn'«PS"¿.‡ÏOo¨)¤¡îÌOŠìÃóÓC„É8,hj3ׯ¢Û%”ƒ}N_ôwŸ?ïì—R¹‰Ýï¡Fj€Ç´Çuãlí˜íƒ­@ßÁ¸¥Y~»áóp³Í+mbµsz>íþÊàn_.*J,ËË·©ÌØ ^ßR<ÁØ-…ÀCÍ`o–_© M¤ÀÛ;—‹9ô?°óü…©$Þ¾G(£ªMà,8‘3‹¿hs­Ãò7n…•ø NaS.ð êeÖ1x¼¾ïÄcc>ÉëwZ!ìëïóf–ÿ¼@瓼ø´!~å÷ðçã(¿xÓð3­žþ5­þ¾D ðt¦2˳pûÇE<^¢ÁI¸:óã·?&ä°¡nƒ}oM³ü‹@¡Þôçíâ’~îËÅokmhÿ£™ U¾ˆ¸zÒ‡¶Î¶ãé8(EW—žÁšŒƒý²ƒA&<Äk³aü™{·û–bšw¯F™{x~FæUÎGæÖž3s·ŸÕÇÎòž™x·/BÎLÜXæÝkË“ø)"Ø:p&>o,Wöœa„å§¶=ÿf*ž[dôx×-2ßîÜ"“6¶ íic~¨¡¥lŒ·¹Ùu^’G7=ÿ‹†•:»Ú öè8»ÚæážN‘¢Ö!Ñÿ†uHt‡¿¹ÉŽ^-3O”ÓÛ8¼ø¢¨‹”á‹¢'x#×ÂvJàíÊ©rE€íû-ºÝÍ +o§øu _\BÕYvûÒäH³8¶?Þ ŠïÞôØø@·Ã:ôl.XSŸÐ¿x"0ñ]¼ÀÛþ;±A§é¡#¢(üâ-ƒOhT{ˆl$èé·ëòÒ¨»x;|ÊÃD üâña¢ÞäEô…7Áõ¡‡g¥nÌ™|½¾&¤o_\¶ôb-JÛö/~Á"šÙ_@MUQ¬‹N&±ˆN¦Êv÷‰EtôQ´µò›LAÄ‚Ñ4Þd +âÒv-Ï‚tT–¼ÝG/Ý8=¡_·ñ•ïTaJf‡ÕNz¸&z|7R¥QŠøn¤Ê¡i·ÛÕfkø5ßfkhT±°¡ ßx‡[[âT˜ä±¿ß]’¢ñ‹[„‹õY,n¶Îf#&ÑvNÖñ ?·+ñve•,(ø—mx™¿ï‡]Õêüoìx¨ÌÛeÕbÀþLƒ.BN'Oà×NžCNžÀ›‘Óéä ¸]ZB ˜^ám/à±À/š "ÑSÃÃ%'ctîéN`ú¾}JJ_æø“®í”[íÎô[mPxÓ ’æõò.ŠíjpÛ§v¾(Ôi³4ö绋W4Þî.ã +–§ŽN7 •懌ŸâDG×åhœ(ÀPA¡Ä#…J޴)=%0$Þ¶jÑÍê³0ke^.Û¬¥0Oÿ¬ñÃÖo›µÌ/[ãê™4Wç·o’’gy–%‚‡ÆÛ†­òm.OEÖOÛ°u`nßïNCÑúüÓŸÙñ+Çsð†¡W3z<'ñfÁq ö‡+Ö„ÛŽwà•*Eðáúî+¸}Õé¹e Þ^\S6Ä L|&ñ‹."&>ƒÕŸžØ(;òS4­·£ýÈ\Ò†7ÇɧA- P è7¤)Lzcú¾Ú·4ŸuöƒT‡Û~z4vÃôÓ£±iÃ2P9^*¸©¢ç2²Ö}ûfŽï ÝáÀ[Á틤¾w¤‰|m,ñf•ž€"›²0õÑâf“¿pn1þ¥¶¡ =ž(sß㉢Ý3ëûNôofýbív ߈t‰ç¦SÑLúÑ­\ÜpÒÁI6x~è/ïÀ U2Küo™xÇü«›<7ËÂòpD4õ×g +? ¨àæ‘Å/üy…_ÔBŽ€Hൎ¬ €/â¡H¯ŠI¼í€\Ë&ñ‹»3®eÃå¡«ŠO8!mLç&w‰_0[q½Ä/HêMÞ¾{¢ø&oˆßã›V7¦3q¶_Þ̬åoßRÆmÈ_ÿÞëÁ.¨q¸À^âe•|OøÚR›lJ²{|n"óÛK¼Ý÷Úëæ6äïÞu˺–ù=r\þânªÏì„iCœzÌ[ÅVýÊïo_ƒ‘¿–ø RÙôñ¿>Èlã+'2ñmü'~Iþ‰+˜ÊØ$üMxãø@À¿iÉNÂÿÄ‚SÎ;âÂð#ÑNáÛÆ7"“øß4ñ~øÿG&¾»lUã¿g㙪UâlâcžÇkÎ>]Mãý–o{ãí»qï7L|÷Á¢ßoá +x‰ÿ®‰¯#í$ðß7ñýdôþ¥z yKM%òËd»û’šñmùD#»ò‰F6åý`O>ÑŒlÉ'üÏù„Û +znHpZûñ ÿ2²Ÿðÿ€ìFT˜s3>áÿÙ‹OølÅ'ÜÞ)çN|¿@6":3ç>|ÂÿÙ†èD¶Ê©qpf‘¦¡š +LÜlz¨¦Óµ‡ª©ÀD¥ ‡úmN%K^Õó¡+7ÍõS—š!ü/l8óº ø?›ðÌ=ÿ¨œO„ øWlx†jûŸ¦‡ +>#@ª@uœiû\<ø`pädpÓØŸGƒ€Ûfdœ n›‘ópøïØøq:ü_™øóxø_GÎÿ*r@¼} œ':û#BàíÃö<#Þ>mÏCBà¿…é5å¨ݣɡ'Ø~}à|ŽYâm"áÄ*I¼ü ·îŠÂ/Ò¸ŠÿÀ¦lèv‹"d·³ULüŒËOÉ'=?‹äÐÁ²ÀÛIþÊ\oQׯicX~z¿W¯—ì9ü,ÿ¢ê‰_À‘x» Å1û>Íß_$Ÿ +' ~‘|ŠóxÍ} :Ixú‰ÉÙo¨Y¸°#>½·¦ÕyñÜEß¿mCÿ‰šùH +¿ ^;æý¾H(e¾äx»ÃŠçÏw¿cR{>+ÓgâÃmW%Áò´LMš°<áðórÙ=ßGõaQ”tP(,??ß«Çk—ÝPWdÂÕüó¬ÍÕ‚­R‡|ZPYRÙ0ÏìÑÇ ù£»éáÚ=AQë‚Ý”˜UOâí"ìù†KÚ»!¨p—üf®<”0ïÝE•QæMØXCB«[Ë|XÛEdÔ¸P6@ÜÃz‚ìÒ˜îžûÝȯ¬êñš‡“ ku³[îý1Ž‹¢Qćο^º±»˜|xÃz2ù°^_»ò)z*žÇ¿Gq ¼^éb=ÿÒÆ3ù0.QlX¦<Øø|%ÙðrÑ•üÎòRÖjcûÆAKŠ¿ŽDì “%U¾ë½ËKVxÛ1§X°*¼]<”ÇIãÉ8kü‚ ŽSnšW=;Jðp+·©áâœÆ/â–Âåäèp©»#8…_T3q_ ,¿êç7¾O¯úéå²Ëi\å²E_<Óçxo¡óO©™7ÆëÛ,í—‡ÄõÕ¿ pœn„ÇKì5EámGž¨ÚÆzõíNå:o·GÃûÆtvëvÔ-sϣěŽ$¿¨ñvOea2 \}º)/ac:1>ÞAL‡«Ceös\ºù‰nc¼­qÚ/Çi7W'ÓœÄ/º;ÜlžøQ3…Î?Çuæ-øc–ñ um§ ?3è7Ä£d +=ÜC·&“5´ÃäÈï•ÁêÒÅú/ðeþ¾-O>æÓhÁ`}±þ¦7ÀÐl˜+ê7™¬ÿâÑš:;Wöx©ŠRÁí~™³UUàoÖìØÂ»·ÍÆßöSck´ñ×èná°qØSØ83Îg≊k…™!âÓIÄz1ãÚ©2[ïö}53»áòS«êÎúRV¯—Í—Ñ8áãM£I–Ÿ;êa[sàzMÔ–S L­êÙCÛ™~ +Ó†úT¦%…­õÌLêl‡¥­L‘”ä'rðÙIG›OÞeÛ˜YdÿpÔš%Ñ òs®p;@, §‹4%úú-Kø‚Ç<Q›€/hÌé9T^Į妾½ˆreÑòS¨EÂíû'ºÂoø×ßP ø2ªÌ žuï 1 ¸3Â9^AÅáyR°´ +(õ×í7jíX¸ÛkçñOwû뾤ãqR_”T{:œàYìÆ:ª}gÇ‘ÕQ“¬0µ+ .ú¸\ƒ•—KmÚn hL ÏK«Zòŵ]œ4ݾ··p¨,Ü5X¿(VsJOȇiS/àLRup”Ã_e²_‹ë7¦3¾NÉOVÉžxb‚Ucµ#ܾU[µ ãû”iÂ•ÆØ±±„G|œÔ•º¡¾ôз2§vdH=¬jÒíÀ°© ·1D-P`Ñ)á¯n—ކW·‰Ê¨B±J¸MiÝ$Œšä2 ³¨OÜäÉØž,‘©mÇÄu„ïl~ßߪq0#¡êNtrß{Ä&·aóømׂ•È©7d'rjÜ›%Jv¥¿v„Jí]øÉD!¤Ëð:«ö´Ó-neˆv®nÌc7-áV¸ñ †nÜ2þõê'ïÇ ©V'â +Ù"…´/dÿâã>ŽO¥ùOwî—ûùGîb<þ“þûŸüíÇ>þ¾#¿øøÿÄ6S +endstream +endobj +509 0 obj +<>>>/MediaBox[0 0 612 792]/Annots[459 0 R 460 0 R 461 0 R 462 0 R 463 0 R 464 0 R 465 0 R 466 0 R 467 0 R 468 0 R 469 0 R 470 0 R 471 0 R 472 0 R 473 0 R 474 0 R 475 0 R 476 0 R 477 0 R 478 0 R 479 0 R 480 0 R 481 0 R 482 0 R 483 0 R 484 0 R 485 0 R 486 0 R 487 0 R 488 0 R 489 0 R 490 0 R 491 0 R 492 0 R 493 0 R 494 0 R 495 0 R 496 0 R 497 0 R 498 0 R 499 0 R 500 0 R 501 0 R 502 0 R 503 0 R 504 0 R 505 0 R 506 0 R 507 0 R]>> +endobj +511 0 obj +<>/Subtype/Link/Rect[171.68 498.06 226.12 510.35]>> +endobj +512 0 obj +<>/Subtype/Link/Rect[226.12 498.06 229.17 510.35]>> +endobj +513 0 obj +<>/Subtype/Link/Rect[229.17 498.06 244.47 510.35]>> +endobj +514 0 obj +<>stream +xœ•}]¯nIqˆH–$ûéä"ŽÀËêïnK’æk“; # ,aEÉM~F~I"å÷¥«zíÙÕýžýôÓBâèœyöÚÕÝÕÕõ]~÷Ÿ¾ ù}Iùý§ÿôîûŸ¾ûäÝŸß]ïKóïÿÔÿ¼Þÿñ]vþ‹?åßÿøîï>{÷¯ïÜûÿùοÿQGýË;w½ÿé»ßý·ëý?õwïåÿöÏ_|çõ'_¾uÝÿÿò½ßë¿\òC ï|äß;÷þÓß÷OÉ¿öÏÅø¾¸ëqÅ÷ŸþéÝß~éoþîÓj? NîÑfüñÙ=ú¿Xü÷0¾<¼Ÿð?ƒøâeÆÿãë£Îôâk|´<á‚ñå1þ×Þü£MðÏ0<­ÔÀÏûË=âŒÿ:ÆÇGò<=þ*T&üï Þ…ÇU¾ïòÃ… ÿŒoW'ü?B¼÷ùÓõ>>òüý1¾¬ôCîô!<|:XoÈp@~¨2þˆñQOØ-]ppY|ò: ‡`|}´“íÌI€üvæúpÜYºl›—ûcŒï²­_Ã#´òk~Äùx¿‹ñí1à +á­‹þÿŒ¯kÞž>\á‘2¿=ájëe„Ë ®?Ü\z”Æ “àúÓ2ïÏ/ ¾ “Vxaº0‰·%ta’nK}?gúñ±³§;ØÏØ…U9ØÏØÑìgJèOíáÈÏý­8aç®É”|p¼åZÈ·+”¾›ŠO¨þ4“Йvr[š;8ªVV­>D±‹ Ä+?|ã%sì¢!òäÇ~Ó5é·ï»`.äû¶~¾£1¸U’À‡+†þ.Îßÿ_Vú!ïÄèWzðz»d¸ÔÎØ%ÃUù›Ó“äÿüsüõH/ŒùzävÀÏ9?fúáÝÈi¢*–n&Ôƒý,}?Ãÿ×ôpjj¬};/ +c»Ö—ÓÓò£^4§Ë¯Š4JÓUWE îgrn•µP6'WVÍî§X칋ÐNÓ^ p])w~Âc 9eá}‹ÿ%¶Øý#¤ƒïw%» ‹‡wÅ•n“¶ƒõÖëQÜ=]k®þ€1ÙçýÌæº¼œ6Š®ëQO·Á'0¶ÐúC7ŸÕ_bxÆ´øý]ÙÓUà…7±I.Ñè½÷ý¡+3[hщ +ϯ·Èmæ5(H|ròÐñûÓïbòôt•6ÕÞéòÁUƒw¹*ÿugðÀúý*3»Áw] ä8¾jðƃõ¶ôÈ3=?Çi\÷ëä]à·zB'®™ø‰šM³Oðáá +¾Á÷ë^xö!ŠEMŸoU4ÿ„ø$:1=±ïç¼?ßÇcwžÅc“N,ÒrÀÙ‰I‹11]ãŹš˜â-”náW7IÛÉrûõ½fiÕàPÅ`繡9Ñ"ùÝ£4ñ·+^×B6Bº [çË»1B®&ÞTú´Ôˆ ‚¡“Ø¥I;V±?ÖW¯ß߄ƼzùõÖ"±"ßÂú}HnÃiÂîgè÷qá¬IŠeq/+9ø©¾cc4¿Il¬ò×+x·^G¼=ݰX®#VõÂõˆ'ûüJ6¤‚:T-+Ú¡­ôoBc^5ƒ‡…®#qRV͇¦GBcŽW¡‹‡è)ê =À—UœàÐg·,–ëŽ×+ïo<à‡n‰,ïõ&Þ•ÔODÓÓªZR,ÿGÉó98¯(y;‡Qòv¿?ÑeµìXu J}ÅÉé_Öë… ….N–벉¿yuQÓÛÓÅI>¸ŽbèÌÜðUl·<=.˜|Ió™¹ÛÝ.ªuìÊÉ"=7vN9’ž}[ŽÛ]]Z¥ƒÛ»´*óþÀˆHìҪηec(K¢O8XpW‹vˆ¸Ö• ÌŸÍ©¦§›#í@|Æ…àî§kÄXbR—m‹-¸ Ö˜kê¤.Û[÷ºl‹¦‹Ö¥«·ŒÝ%ƒË áNº”4:ó +‡+'J@åáyÄÅ^á›0`SŸ]©D'8N”íWp^*Þóz©¿áµ}×ï«„•Ø}ïÚBŽ ¾V`çÄ+Ç;%¾èè}×ß@Ÿª¿ªº˜_ᛀáðûî]|L´l‚—íQé]q°¤t“£|]|•æGõLû²‰Cw{¦··€=Ó×Á!õçØÑÜ«!Èéã8ä'>ʉtì§‘ ]ǯT^îi±WJîƒ}¬îh©•—޾¤ öf´U²ãmuw›ÄÜá]%wQ¢š³üÚ5ó"¿6ž‡¦Ï))ªC}“§ÏHsr3O{pjç¢:„òàOI¢™žg/ñ!Z …˜¤ÀÀ?ÿýæuŸûÕŽIÑ_þ7xü×—Ò¢øü®¾Ï];aüŽ¿°¿âœy‚Â[Í4ðŸc¸>þ÷WçÊ þ „‹ì&ü0¾=òŒÿ-Äû¬ƒÿkˆZYañ…ñM/¡Á â%cÓñ»/•Ëz¿‡ñm]ïÏ ¾›tËzñeÄJYf“̔˰O™æÑùfü¯1¾jèÐà?Cøp¥u½pÿż¬÷cŒ¯ëz?6ÊOufêª×$WÞRÓ-øKƒ³TZ<Ô¹Dí–Úàq¥_sÅ<2øM-Þõ(3~‚ +=›ï·Gˆüz%·OBF¿Ñ§&³<ù¢É,Gqº… ‹ÁBÖç‘ÞÏ.â‚›ð8$u{ÅèýéJx›é‡^"{¹ {‰|7°SuQ’,…äóª9oðu¥1R='жš¥]Ù²¬?d– +ëü¶ÜLXÇà·á OüÆÌ©#¿iùµ|Ïà7fæ¥%IÍ„®¥–òÝ(¢ÉñéQË9aÄ'ØãÕ@ãK#=ဠõÌÇ»õ¸ƒýL£ÄÈàqâc¾VvÞÄ{F&¸Ác¯€$žºƒý‘ž,ó~b¯IÉjÕÑûS´é]êH¬4øM‰ZÕÜšiÊ2ï4*¼¸Áçïc£¢¿,Ë÷±QÑÕÚ6ß/lT8m"Bó³±…ßO)i»æû‹­ +¯5F49âg/¼xж6³®(Œ#n̲CèŠçL>¶*Äfl×÷Åfd¯¯4M©×7díðD_ßÐÉØó62iö¬£¢“æ‡Z×ïoCãc¾P/”µ+ñÛ)5gnþ>¶+®ád¥[tN}ììö«QZyvS£ô@YR£4¬×k7@šÅ(õ3ýP/ׯ)¼2cÐ`5}¼±­Þ~‰Â5žÝ¤@myLñróÈþ¡·¿›¥å„Ë“´Åë•>(3ý8ñ´9[RÎ<Áq¸Hª™gr6 —F ‡÷$£Õ]þÄz@—'³xÞö6ñ¯](MÃu4Ö'ñųší€ŸÅÐtôwÕ0Ïë…^,Mƒ‡Är\žè·Š®©åkïìx =7Cã,ÍJbäùMkþxqC\µ½¥YVò7¦`ÐlVКü ¦ã¢}â–§ùI>ã¬w„’^oaV]Ó.ÜßXÝ*~6ÊQQË>×±-¥ù§?ï×ø­j Ëàq ®?×ù@ÛÖ*;~ûSÝý¼Ð ›úuóvî[×\ÚÅTÀDëšW05ðÂâ7UsI­Áoêà† Íà·2êLϦ&§5‹ ~[9'zM¾„?gz¶áÏàèiIï9»^ Vž™x1w@ì|?S¿±aµ…9Ílýôó÷·5qÁ¬6Œ<ƒ‡J¼ïJêÉæÇ¼òþ¦+Ž?â}ßïbãyç¥)}¸9j5ËûÚ§œn±aš{$–Yè“wÞì2é:g›¹mcbº³»Ø´Í8}^áºôÍ5øM[Ö.ìþH„KüzƒŠyüÈg÷GÛsÎôàr3‰e‚ýtO&©×G×à¿ñu•âãPÉßzzŸð)®ôÌ:ÿÓHÿÌyÁÿ€ñe½ÿâËh'lðßÂøº~?a£.¯ßß´­ië÷79­«<Üt‰ñ«.€ÃWR+yòÅœ?¿iB£™Aìm‘ž2u–V8–ygÑÔûª¦¿/™D³tÆ‘d,W‰·—æ–ìc§3=mVy %v¸\öM¬±¬ïÆ` ëã»™¡0ƒè㽃XULb•—Íb³¤n†9KžÀÃf±øob¼Ú,ÿ]Œ×4‹¿€ÁE÷ÿ Œ/øG,;ü1u¦ä{Ü´SÅÿá%âÖ&8d)Iîê©ÅÏÉ=O?ІႱøOE+-û<†OÅâáÓ쪶™ç÷§Ûq×¼ÿØ¥ÕÔ gñ¸ßQ·ã*¿\ƒnÂc'ƒÓ¶ñôö«“ä€ñ‘Ìä`'C×Cá¹G}*?]I$h3[õ1ˆUIŸ®Š5ÇsM¬Pžž®\øy6-~œX‰¿ÉRXƳCnëmÜ$Ìßf,ßd„³ÅŠÖNðu…Ûtò«©No¾Îø<¸,â²É3=¸qðècL‹~é[áD¹Ô,‡é]ÜuüÑÆÄüzefgä÷ÿžÙiñ›´ƒ˜ÖÛ»I;ÐÑm¿)ZÎë÷á|píìyi¢ƒg†ÀiåIzîg’œìÄ3^ qÙ¸™¶ƒO.°t3á0öõ$m7†Ãªûl|Hš%H_í| $/À~ÿÅ+äæõb/Œ¼î<ûH˜?úòCYå3G-•ä+æUÀÇ•üÊž[/Ïò¸ãªë1’„—Wêæ‰Z.É‹á nw°A#Mç窓@xú¥žë€=Û“*Ky¥•_ä·G›ã&~¹Ú·Ð#=CÏ?Rú{ò|©]š5•o/ ]ÔÚG‹Çv”vßµpÜ×õöÊüfg]ÉÙ˜±:?Ýâ§œ 1é-^Lð¤î°úžž°^KÅûvôÒµðß@x°«‡jÂÞÚ©¯ª®9-þw—–X<Üw¥•œÏÿ;üÎ~LÉ™ÁošñþZü Æ—•žÕ#7ãûë¶íg_WzVêŒïÊ©(/ìùºXWz0>ùƒÍOOÄxˆÏO›óKˆ_îÔêì[ÀU]0ôÉVíÏhñâ[\ñ?FxI›Y6gu†.ø§“‚œ#sj<<,ïf6kì#/r¤Ý²R(Düó'+#gvò™çñÎHâæ|²ßÁø¶Òƒ÷'?Ô÷!¾\xu¹/à§Í„D:2/Äãï?_“Y}ú¦”üî7lOŸ®øGBâï¹ôZ^ä¤GRTzþâý“„Ü aäTOo—ô\;¹-2(ia ßB|ž¹>‡Rrpreüê²Ø¯büÁ[(•íG'õ¬¦Á{= o{{ÒŒà[(™&‹¢…f¼ž„d3ñ*,‹…'{בÓÏ¡ Z¾÷'†y3á[ã|aq£nÑ*œF q’ž4á±)½â‡öK®p‡¦Ú­84Ö¤B™àÐVkMÊ#,‡¼.„mñØöºõƒÇÁUiœøÍqN'góôxíÁÏÓs3<{¶Îk~‹‡Õ°.$éů7h³Uúx]ÔFüC¬’ýt@NnšI–: Fr¥ÜÁévS#¸ƒÓÍE½2“ôKP¯ŒÁcÏÆè³p€¯+=›€õ%]Xøýìj]›¹V›È(ë@T¹6œþôz¥ç€}ü"qN*qæÍÁ5RŠø«+áóxÑ ñóxÀüO¢ÍæG¿Z?Ùž¨…›ôÝû*H6 ‡ÇÉ& Ùj=ØžÎ葺Ùp°ÞÜVÙ€÷³ŒÜBšž2|Fô÷ëHÞ¡¯‹¨%Ëí¢¡e^tJM‰^"eõé@´I—ð| 8„®häƒõŠX»¤¿f^:¯M5yúƒNºµxÜF ´“Û.áðå¶ã|ôôáíLa½½›þmy}IqYz¾Vá¹é¯6’} —ÌH™­;ø¾¼ìါ–Pñû)e¶ÛÙt 9¼MÇÓì#v«›'­÷Û»¨å8\* ‘2\Ò/-ÜF±sOÔr)ª_¤¦'xÎÓûÙÕþEÏÞ4L‹«"¹é³=Òq ~3‰v¤ãÐû“d„Õ|dï°öºÉ/ËÅÑáâ×·zS#QÞj)’Ï×KŠäÝÉõ’_'׫[ù‘¿]é +ëmß¶ÍN·KúfçƒÛ%¾˜K'9îi)* n¤ŒJ˜?¯•”•Å Ž=IS ;z´ŠÔ±ñ'¡¦ùóWL>"ÇI†ÒL6ŽV‘Z<ÎΖ¹Iáàû27)ìOÐé×Qi\rB¸bæý„ +¶‹:x‚§'êà šÛ\ÒÁüù&­:¥ïŠÌ1ž—‹} ¹®wë…H=ü¿ýó;W4…^T ïÿ´üýï¤ x7šŸÿ^Çß¿Àßÿûßï¿éµ¥ÊóßÁ7ßp׌ü³ÄïÀ-)ZVËsX ë „bÞɤ§ppDm$ ±²U‚Û ÇcÃUVŽßxT†QÀî÷×e÷|ÀúÀëç¿×3Ä› p- _ÿ‚û;þôü;7Œ½ÒhP }èR æ/V$g&üÌÞã7'Þ+úÐæ¼/jñ³òK:þ§Êã»!zÖgÍ»õ)¾´G®Sè—ÿ÷&Âa°›æ[ÎiØØà·‹VÔ ¾ VÔfá8–ãu¸ŽoÞ;­š4p<˜> fi^¼¯¾É_T.æ¿^—}ßÖE1 |ÓªH9‘¦=1 ·pÊ:óÆÀÿË6Fá,ü[®Õ•û¾Ë“t°ÒšÅ FŸRUÓÀ7åtªpÒÄtQ{Mû¸+yi×–™çR&âq[Ò®-WOßÕþÔ‰ÅÊ®Õ{µÏY~—7$g~©ý )lši‹?ö6ùäÄú¤—š´¸ÜÀñ\–T±´éÞ9³ÊR&–ÄCnºÙM2zgºþØ +Ï3Õ-rN4‘€A~›ÅÖ'Ò·ÔÀaëßáùë°ó‚tá ÓÎÀw‰ÌBèëÔç‰Å`ý¿ÄÒÄbkFÐ ï¼o²ØÜ«/ÓÀ×” ®™doñÌ^šZþ¦™ðŒ¯ë÷¡I¬9/osÛ3ß™p5 ÞòN •ßí5˜èÑVƒ…ß™0"§äíx‰›ˆÙ+ÔTez'» [}µÅ„­fI™r_ù[ ÞY`¦éönà_ìе™vÌ49-Äl­×kºNØ“ÑÕÇ )¿ÛMo$ÑôwÕ2Ïk’[µÈž}~.Ïú~T†ñäŒÊ0šõ5^6sô²ªgÄ‹ënòŒŒÿø’*?ä"‘òø[êÿ…ý Oख—Ã¥£……áY ü.mUˆ‘)’nÂÿ ÄKÒŒÿ&ÄwMÄÏøïb|VMÝà?FxIgüO Þ]ëz¿ñy]ï/ Þ‡u½¿Äø¶®÷‡²jvÿ ÄËŒÿkŒoêÆ5øC|½?ØŸ<*ƒÿ ãÛº^È?-^Ö‹Ï·úu½¿Áø¶®ó›”ÜyžŸ5o0|ðº_ +y«¸AÅœóOsu 9'5ÇË9gäœ3rÎÀNÈ9ÿ#ç þgŒœ3xx/_ä½9·œ3ø¯1rÎàÿ#çXz^äœÁÿFÎüÅÈ9ƒÇ÷æ–sOÉ9zn9gðÏÈ9z?o9GïÏ-çX~~‘s,?¿È9–Ÿ_äœÁÿ##çØó}‘s¿‘‹:~¦_<~yÆÃw/ø‘¸bðÿ㇌å‡ÒºÞ¯C|ôëz7øº®÷ô»¤ç^>~7d¨oäß gÞ ÇÁx7 2Þýn8”+/ï†ÁÿâïwÃà‹ßñnü_3ï†Áÿón<~gîwƒÝý—wÃà±Üºß ƒÇrë~7 þ‡_·Ków®Fºâ xSŸæ4ÍÄâq6·¸îÜ„ß4Ôz ‹Ç絯³ýœ/îuÖ±Åcß fßóô‹«oÞì +Wß¼ÿØõµÌÇâ·]j> _;Íç…]k9¯ôc×ZÖÚ‹ÇIEAàÛúý«Ï‰kÖâ7®¾º®wÓ²1>üÁöK’Ûûˆ€ äûK»âñ×ËKÚÚÿK~ü•&ü&ç ®÷ûË‚NݵxÜÃ@4éƒÏG¿²ÞOQ<âÁr“¶­ãéÉ— ûæé‘´µù¸p ‰Ñy‰¾.Òè¾…úûõZØ'fÔ,ÞhžÝªÖjÑÏ‘öÅŸïÎå~âYûÈÓ/•ór7yE‚²ôqIÛý0ï&S K½=b7dÏßF±N^/‰þ/¯ŽüF-Ö¢Ù-Ä,Ž&‹Ç)ìIgóû“t–±Åãöì$ Óâa¬GJ,ëÁó²Vkñâ?íÒÊ/Xž_^¹ +5­ü³™bXWewÙ”ê´ÀßÍ?xÝãµ¾.8u@ŠÓØ!:˜LoäŒçÀK+‰ïûÆ_G2gú7mêLâï÷ë{(o1jÞâa‹3I2oʆ&™(?1ižÿ~«¶·™J˜%S…Ç—ëH\ÉÁrðyIJ?aOIÿóüííIÚâí”Çšþ2cðÀ²H]už¿¾™H˜VÑ EIòn}Ú7 ëjˆcòƒNÝã-±rŠV`VìHбøÍX‰aå<&FzÂÁ÷½¶ ±xœp#c"&ø¦•¡ö ±xl”†"ùEür㵃‡Vt-&Í»] ]‹É'ËMé±pæՠ{œ0CÖ6‹ß4`*’¦ÎïfbŠÇqV[ü·1¾ªMdðØ£Ô•ž+pOS￟Mêùå6­S乡µ‡ã™Á_Z¦H¯Vû6pæ^TI~QE.˜ï:R'x­Ò¡·_æöÕÑ&z Út Å|^HVØ<ýRJ1¯wŸ’q•‰g7iUÚÿä'Ñ¿Á×õûˆ[Ÿ"ÌÿåIöC=@k$¤•zLæû‚bíIøãû"JÕ,p'þëIšãÁ÷¢Vež-f¨ü~†Eøl¦>hµ Í,)°Ïóá~âãµ +lO‹?ã@1‘…–¾/£ž„­ø'ܰ՚ùar[éÙù3¢ZÔô•²«(Å¡±|;誶?¡¥¿Ù/ Æ«VÖÀ&Ú¥ÄèH8P6d bœ×û5ˆõŽ ´à‘¾ï’hf¯ßßäM½Ôôr% ìfg7oçÖÈoÍ cH’Åãe02}^up²Áo%UµúéïKQ€;8_™J7ã¡É*Õ?!¿ô|Øÿ|ÝtÔ™ëÞÂ7wJ§¥ø&ÇG§¥83-ÍÀ7e<ÚúÛÀ7~šJm–öèÕGð +ßýŒ—ûŽÙ7éÈ?b`Ÿä—ŠŸ76ò >¦¥½µ‘Oðûj¿Âa_Yͽ±hØEW½m…_i^(öë5,<;ë´4‹†ýˆuXÚ-]äúæ×Ÿ}séQiîõ×p‹¿ÂaPZGlxšÙÕ;é›§Þ¹‰\PF »Tq·MÜ ýâ> Ô,ðìnKÏ"E˜Tá{÷æÝxöÎésßLV‹úh¼Â7•^ùZ¨Ù4 ªð³[#‘µÆo|7'êÛwïÙßæø]—¹jå`_ºÍïÊ›7õ4ßíŽÓ³d°Z¤y@œs¥Ò—) kâ]-·5Ar€øæfíaS‹Ô±=3bMãëB ÎÓ«øÝôýôê'Y,ÄEüâ ¨~¯¿ýu/¼8Õ®Ÿ™géúÉ¿š3ƒsÃ$û&ò»^uV½ëÒ$ÔÀ˲TìX”qüJ彦e†´Š}\Wzöè®™–MŽÅh)jðØ Õ¥@àï©v åUß»)«kHÒü¼ãô™ ½´Ù»$3-æ—W?ż<4Ø •ü‰É!ÎÂÙºÚ¸ó´Ý5ýõ¼J_ÌÀ¹.Š8v¡•‘HÞT–14¸lHJ\<-Pc×Ûcæ™ % vû®î?šÝ¥$i~gàÝg!õ’¹},å./7çúø%õv)_âÙQ½^ÍZ»rû + ÛúwjÁSÅE4=â,t{6º"—Éà·->%¬ê‡»‡oa$ãÊßâÓ‰FN´0²ðM/;-Ž2pÜÊn´0²xÜÊn´0â;ZYØnPw»Ñâqp@TïÀsƒøÊJâé÷"jðyý>|Ôµ@í€û¥@­fþ¼dÊO›÷sS@æÅÆ£¹M:`»™žM óë•Iqóùn8]±®ólæ÷T)бxœJ&ºòCëHž“(šHÄ3´ÄÖgz°¯­¦•6S]µe¿Þ¦Ñ4úÂÉ2üþëðœù¼°m.O㾬ßß‘iE*¿Þ®ú|ˆë÷ñšPĆæ÷3éD@?w’‹ê ¾®÷qS´•âzã7stÊJÐfÔ$$ñû“5#Éâ±ÇnŒÆá÷G¼dó€kŠFBùí·š? §kÄ ý›š¶´Ò·¿Ë“…ìlÚ‘VâŽä›dʵ™}°G ?ðWãï¯LjM3;†dR«ã÷G‹ÎÔÉØð:Óóï¾]Zt| ëbŸ^`ÀT~Å3 ÏdX<¶‚šR¿É1È’¬lñXsMl4~½1=æÏÃÚÉ;ËÀâq«ÊÑæÃâ7S{Äç`á›® ê(æ?_4çÏâ±Û¤‹Awp¸UãtüaU-%äÉo^žá%··¼}[žðÙK)ä›ìðŒÏëz¿ñE[§ñß/O² &òøÒÄÅÏŸoWšã¥‰ÖÀþz‰’gá¶iZWþß”Áh§JZZ…Kû Óô‹ƒ7Íôc¥mÄòß<¯g¼”X¸Q¨”±p[ѪDžÛ†‡‘}{Cõ+óoÚ„Öõ²o€j—å7‹g_#côéjéMá·Sko¿?Z|s ØjßOžyÄÉ™¿\j€^¶E™ô=“¶:»›URƒsEžâßÍï¾Ìï>µÒõs1[6M).ÉáâO7{ަ?7õ_Òû#ÃtæãÝÔîøõißï$õ_ÒìÖœú/iú[‘&Î4û§1Mƒ¦'ÝþE–ý%ξ:Ûø­=Õ æ¸âŽnü +"€káD׉®…\ g¸ÏpùÅŽ®Åã“#€kñxæßàZüGæ„7Ù.+Ú2›è c?ZðÆÑ’´Ç¢Åãö¨)«¶a𛆡M%¨Áã`Öž‰¿ ˜.ôÀlOWÒú}L©ê0xðj9Á pÓëí¢ÄÍßÇŽ¨¦}½ùýoÚcÑâ±sà’j9š|ßh›xy7X›~Y<ØiÓ/ ‡]§´Â`‚oâ‡2rdÂã^'!K{Z~3£Î‚³øíÈ1EèÝ×^ŽÃÃ)ªrHoþ­ÍÐäÜÚ ½·6Coç­ÍÐÛyk3ô÷»-²/.7¸£¥¿í·y5þ¼¤"ÀEž~) ˜–ãah3,ýêH'ß׉D£™Þ¯ì¿u<,üŒMÙn¼,² ++‰®úp°ÿÝz ‘çõT¼¡¿í×Áý Iû÷òû/o{< '?½Eÿyç©ðºŒ¸–Çå‚xyKg~þö%ø³õ¶´®ïg¿ïaæç툒å­Þ „•þmôs¡G3]TG¸ÁoëÚ?KÁÀ"?¡®§%î`?û}_Ö»‰–ªOëÎâÜHòP¼©òòV¼ª§T¸t‚¬¦ÉO#YÆà±ë­«Gôä´Ò³éÐé4xN³s·6ý ¾«å@Û‹]}¨þàû-®Ïï¦èÈ}a÷']šûÂjKÚ¡s&§ù;í=Æ[:bÆFÕ°ö~CÍûÍ~3 s˜¥¿Láõ©6xl&çª!\ƒÇñüÑŒÚâ7í/ ü&‘7«jkð3³©œ¦§?u!óëõ]Uóþãá„b7ÎxœˆÙíFdz$Îúöñýe 39زè/Eâ¹M5¤t@NÔŽôiIĺÌÜ€û^&íiAsF¸OàUõ6ƒ‡zždÙæÊ_F™Ó°,wc7½„¦¿½Äàq@¹Ž€,}Y¤ì|>Û¦©°ƒË¢·GãÛ3ùÛøör×÷ñíy¹›xuXeàŠ™yB˜™ÛF«húxÕÌäE¡Ž˜àØ^¼¬ì‘‚õR¸!9ͤc™MJ\.é!v•ƒõæ²¾t›”Ùad¾EÏš¢c0'ø70|$ã¼%«žð5¬Ë…É2¡>‰r˜¬$Õè \ö/æ‹¢×ûe/óza²•Ä·cyûò>áýH~¡é—€õÛ²ê ÞïârwñrƒðzS6<ã‡Kï-Ùö„—:óy;¿ñEzàÐìóbÓü/!¾ßÆà¶?kSÕ7¥'¼”ƒ§v¨×ª¸Áë%í ‘l~·°°LS“+óì#ñçèùã•*ïE€·+¹‘ïβ›z7ϳsêOiŠçÞç#i¢6`¿b]¹Ýü%”iððl%´½|æ‘Jl[Š+ /ŒÜ„‡¼)YÎRÛbð›–g:àÝâ¡èP^vƒ‡‡+6` o¯÷C¡Æ:Ó³kMè}MX°DñÀ+øK‚etyžð›ªm¢nñ›–ŸUc°¿éùÕlðØø3B-ÇG‡B‹Ç1í8ü؎ĺҳÃõM7x\¦›u61¿Ÿýb‰£>ߢc,;KJUG›ÁcgOÕ¡0üþÈÏ™?÷S<ýÿ´¼òó¦ À¯ü³)“~uv?½~r–~ïŠ& ³ü)ÀTyþñ^ýä4<¤•}6Qyí;Ï/7F•ãôv&í)·Ìôˆþãxz´­âµ#>´zð~é`•ëE]NÏŒp%8͹0pl9º‘sað›ÉAGŸµß‹Áo<£½ÜPÕò5xlùF·®w—3¢–¯Áãör¢Z…ƒýó,~3!«jnð8¢ëVÑ쮚QFŸoÎUa©–ðé`ÿÅs2Á7Y)Z-DフU8áQ­N¾/ªUã¹Sü&nÞŸ¥jßötÅoº2^á:8-ï5ðÌ2³ºYæÏã!Ò]n&»qÂð;ÐË I¿Ác·U‘júûc„¿ÞXÎ6igZúªøô$ù7µ~•„'ÎðiÓ›Yâ*Ù6µ×*Ù695ÃéÀJr)±Lþà°êÈ9¢éo£#+É¥ãà¸Ô‡sÀkÒè®ð’*\M};¿KÁ¡–‚wvšL¤¿‚¨C5h¢ Õ aãÛQ…jпh-B5h\ó9jP –|Þ%¨ô:GªãrÛQ€jà°Üö®?5pXn{÷6pÜžØå“¥Ês2/õ'Þ–¥~áÝ,Ž<ÇHå5ÁaçfI ÌžßwQ'øÇž5^õø¥T%,óê|š/í[ª²SUÂÏT [ƒ{úuýdÑg6•È×c>^ÜêÒ4VúöFçÕX`Ÿk‰I¦é&1Æ| >Ümž-~Ó»Öëˆ×òÊΘþèWvÆ…Ý]<ÄíJc†¼4‘¤õìØAú’hÃ1gñòóäK_wp¼];iÚaìÖÅòøn +‹Óãàm—:äåíÅäHò²ªIî?^m²æøãJýö.Ç» èÕÕÄMܤþë@7T˺1Óòជdà›ÌÝ&å½Þ&Z65Ñu¡ecƒk:¼oLð¬—ö¾)¸nâ¿6ðMýt’¤9š˜Rõ†¿Âqf»ŽA2hl¬÷ûty~ÇP#Ç!¼V¤I KºZö‘f iåJo»Úõ½ϲhlóy­¡)³è}£Ø‹§ßÓ×·õÞ±ò´÷÷¸~G›0–µKØÄØ4º~±RãnúEïûèùE3ØhùeàØ4:~Ñ´†_ô©Ž~_ìÅ–<á:Á·ã¿gŽÜXÌY]^¤<•£Oéž‹dàPÿ .©+Ÿ†kœ†{'å¬lS<ÔxY.î1u[Ö䡾Ö¤˜ÑbmžÃd|Ò¼ï›Ì`wDŒŒ? F|øÄÜ&õ+'M—kù:Þ÷Ûà%Á‹½K¾ÁÚ8Ìñ_—¾aß™Ñ6ŒQZ©Ðr@Òc¦÷Q†§J¯T’{ ½:œ× £‹B€9}“Ü(š˜¼ô•,Úù)ø)6pÝ£ðoªVqózUìu–x˜R^$vd·('cX«™Ø{­¶p eRìz~à+Îëw59½Ô–‡ióõ´0Á&ïwî?ƒð¶JëMgõv²3éZ¥5ާH’m)ôNJŸôj\X¨—UªÔ/PS7 ½ï)ðožz’j´¼kÀà·¹©®LxlHÞ1zƒßŒVnês6ømË4QÝ ~Ó2M [,~3,©!LÓ/…Bóz÷¼çïcߌtòWUküùŽkm¡ÑbÞO/…?CR÷ã'ü¦¸i Ëb ‡Ào—I#‰gOmÉæxöÑžl™¿¾2E,{ž}4)óì©Ù©îàx¥Î&œ—ÔÙ„ƒýÉ×záï §á€Æèc~½cô1ÏÏ£ †_ï(ƒ¡¯»N›ùs3ÊXËZhþÑ RÇóŽJž÷'´Š—ý@ªOÀóû¯Vþ¼Ÿ°¼Úí3ý»n#ò¢ÞƒU¶ÍF^±Ô RÇܘSjàø“zœdá›Æ!#aó0\ûŒ8Vê¤oHð›âéIïLÒ*pßh;UL^ᛉ£Q5{v#e@é´‘ø)#{ |3S$IÅ M»D¦Ü´†­êœ`‰‘zåÄ3z‹8Ù0Z‹8~t¤B¦ÑÇä[GF_ÇIdR軪cI#O{¿«ÓÇ7¯ päí|Â:­tPˆúV²û( H*-|7L/ó´Ò%Ñì.Í`Ká·=ëÄyövHëXÏ_UI# ü+E1ÓÎàØI•bQšedŒjäWZëBúFê3ÉáÚð+çIy Ï2¢›ÌìŽU W5YJÚod‚c×sÐnVôÎmfÅ^¦ ½¾ +Í2P¨ž>U (Ì<ƒuTži“,=žÃÐìX9r^hÁ#]I<Ï%.ü‹£) +¥ék©<í5/J$ŽŸIÙ,-“î~$<jà |Sî­Åá41wu¸Áâïòpƒÿ1ÄßõáËÏïqƒ‡å/â¿©ù¾ŽÖûR#nð°6ÿ¥HÜàq÷]%NÓ—‰ü¯ þ®§×{Š<.ý¾+Å WÅߥâÿ}ŒoëzñÄjI¨œñ¿„øê×õâý¯m]/.ëoi]/ä‡pTYö~Išäøý‘(Gžñ°q€ô:õ穬?ßÐýe½ð~‰`Y/ä7q,ë…ü,‚e½PÜÊ´—öGæ¬Å~(:¯ƒ¾ïÒ-4ÏxøºH!œÿ0ý—B`ï†KCŠ§ïª¤èyþ]5pæ]5pxóïwÕÀç`Ò«ÁËóò°<~(ï‡Õà7åxX þúàZ‘Ì•ÃskÚ¬KÓ¿ß–S£Ñzh½QnäÈ ŠŠûÄ ·²fà˜ÝÆy8£8~æ‡dà¸ÌЂØ}¼• –ö[bwæV œÑ€ ?ÀC2ðM_Õ ÞÚ[ý¡wfh?8¦ý­ñNÙÛ·Éùú¥oíLëË|x“Þ'†µ3è­YíŠAc#SRñ›AãPº˜Ô4!òàÚEnrô¢8A_Ñ›î”úx²h-Êc×8jòØOK»Kö¦€O+òÈ ¼ ò^Ñ›QY"³$Ý*‡<{8"†}ðš¿gÀ8(+É{–¹7ÅuE|(äv{IÔ·hœ´ó+z“T§^öpÄïm7pÓc¦ßáIšlÃà)ÑžÕ»ûІN=m§è“—ñ©•_¦ŒÍ®ìÅÔ>Œ+Ååíiºe ª%zu5ߎ¾—Ò¯¦fzO´ýLf ýbF{{6‰s^ê\Èý¾ϼ¢qÕUWR£émþöf0©&n¼¢qˆtÔ®Ñè<{;Ñ¢Òâ^{»ðhéÔB?R¶Öx&¬aV8p<]zÎñàE´m‚À–[qþB‹3Í8hÕKGŸ£´}ñ4·ÆK#$GI°¸ÒÛ]™)ÁaEæû¾ ,k«/âüíM$÷še þvÌâ>>>/MediaBox[0 0 612 792]/Annots[511 0 R 512 0 R 513 0 R]>> +endobj +517 0 obj +<>/Subtype/Link/Rect[101.95 648.75 162.49 661.04]>> +endobj +518 0 obj +<>/Subtype/Link/Rect[162.49 648.75 165.54 661.04]>> +endobj +519 0 obj +<>/Subtype/Link/Rect[165.54 648.75 209.56 661.04]>> +endobj +520 0 obj +<>/Subtype/Link/Rect[515.89 148.45 515.89 160.74]>> +endobj +521 0 obj +<>/Subtype/Link/Rect[72 133.9 117.26 146.19]>> +endobj +522 0 obj +<>/Subtype/Link/Rect[117.26 133.9 120.32 146.19]>> +endobj +523 0 obj +<>/Subtype/Link/Rect[120.32 133.9 156.39 146.19]>> +endobj +524 0 obj +<>/Subtype/Link/Rect[156.39 133.9 167.56 146.19]>> +endobj +525 0 obj +<>/Subtype/Link/Rect[167.56 133.9 193.84 146.19]>> +endobj +526 0 obj +<>/Subtype/Link/Rect[193.84 133.9 196.9 146.19]>> +endobj +527 0 obj +<>/Subtype/Link/Rect[196.9 133.9 217.68 146.19]>> +endobj +528 0 obj +<>stream +xœ•}k¯tËQR¾íHDÂhK Á܆Õ×ÕM"EB¶1æzìƒƇoÈ ë¼HæK~XòÓO­™wW×ìýtµð;gžY»VuÝ»ºúç/öåKª¯g©¯_þóËw¾|ùâåç/ÇëÙãë§ñ¿Çë7/5ÄÏÿ‹ÿþÍË¿¾|õòo/áõÿ¼Ä×ïÔÏ^Âñú×/?ù§ãõŸÇÏÃ+þïßÿåósÞ~ùxÖqÿÿçýTþË ‚þä»ñ5„×/:…ÿ:—óëŽÛ‘_¿üôò­_øÛßÿòg öp½ü_q|»µ>á¿Cñ¥ÜŽ0á@ñ5ÜÀ…ÿ!ÇŸ·8Óÿ=Š?Ó k¨ð_p|¿å6áDñ-ßúŒÿKŠïávô þôñ¾3?¿bøx·xNøÿÀñƒ?qçùõ–6Þ7†x+üï9¼ÞBõ³'Æx‹39ÿÀñí6KÏ÷)<å[ o›[MÜÏéVû÷‡öžyƒžo­úµ%–f¥™Ó_#€þåªíŠ_Ûã™­4súÛqKݯí±U»¾TÛcÖºqþ÷f­åO:²µnTÒqÞ6Ä- `šÙÿwßoe‡üX¬øÿ9ŧp;‹_{S:omêìÒPÇüâ“àwø™‡³˜Å:ÓT­'¿x¦¡ŽGÙ Ît‚'o6øúkúƒáLûŽxž§_WRK{ºÒú-î0³+ü¿L=ïÑ^ëøMy‡ñãÛ¨±g|­ƒ™Gºsñ[ ÜŽ üÅýNüÇ Þ3Ì“†ÿ…§ç þ÷ ŽhÿŽïöùôeÃpþõœðGññ‰þïQüðæGÜ 'HŒÆÅñÅÒC¥±um¾S|©ÿmНÉÒÏ×ÀèŸpÄÖ~zNjüw(¾ûü¿åøv;7ÄaÆSç%|˜Á ÛÂX ÿ6…Ÿˆb5œš²žF«ÑÜl ¤Oð‡TJ^y«È,Ã1\Ó•rÜ2ÒÒùó7/qèr©ÏŸáñù|FÚºzfÑcîÏŸÙ3?0Õ÷¿½"O +±ä§Ÿß!ä[˜YøcŽïë5ž'Ù#‹ iÂÓ,)Œ8kžCŽ0«‡×M—ž*< Câ»Áý’•ùÉ)Q™Æ?Ìð,AŸÞ‘¨á¿óóçÏf$îc {<øY‰æ¿ñééo.5ÇÐDh¸?Ø+…Ã<Ùo„ÂyZ£Å¥p$[-nHùðâ¹AÏðÒÌs^z’`MÃy%lD?;F#ŽÜì˜Ùó#mG?¬Ï}€gÙù°dRg¾þ#¯iöùtbLÆy‡µÉŒ#,{_U>¨±vxÎ>’@c¼ùºåd÷ß­y¢Il,Šëß‘Ôåö®9û f¬Ú/j,ç­– zÎãv¿šÅ³ÞZÚàg‹Hýô´÷•ìƒK¸íèðÐy£Z‹úÊ!‰—öt¤Û™ü²“†ih3ý¼Ê­Ÿ~NM~ÓF ²¥Ø¬nÑzj˜Ñ-ÎÏ¡ë©n¬W>¬.òšC®V·8²ÔGÝâ™J¶ºÎß·œ–ž?åœaj7\pºnøÉ×w躡ŸËóÐõê7U Û†§K}$ÀÖ!ÑF4”ýù(·¸ÁÎ|œ–ÊΆyØŸ<Ô7n¸Š<Ô7ÍêN#¬ŒÝ ÏžáªwàIê!nrÒ7´=çˆê½¹r¾õ ñÌп¼C{ÃFä“ëq‹Åo=s­R°ðz‹|F«½œ?gFyÚ­í¹”§ÝÞ7·§ƒV`s?¬:r~ödÕe¯V]N†/û›÷¥Þ¥ ï6"Õ2¼{ܘΑªç{ñê»{"NRh*ù#S«óÃi G1k^¸”kò„ç‰ Ê5u¯Ë53=TŽÃH Ò§lñ*«*¹^HyƒlSÔ a“jÆF Ñ=rúms.ùvv¿öfìSlJûmÆ>ņ³ÈÃ÷ž³´ÑíÏ|v©®xóT3êZ±i _¯¡¼&ãï;´×b4«.GµüYT"š)Ýô”Ðn}#Q(1Zk²¬f ÿ{z¶¶¯j†Bóîš«š¡àtaïÍ8 +Nåf„T†tJ̈¨*8ßÔF­¤Nxží>?žg—Ä—™z~Üa˜ðcÆó&JD`33µ•«Æ/RrUøÿ΋%QŠnvŽˆ Ù–›?ˆØf<ÏŽ‚Íôÿ"Ç÷[Íü!ÛL/ V7ħf©ä)¼t†í¹Y|xq¥ÒÜë‡á3ý´Ò/µž°±¾h¥©;øj­[åÕ›$Û©^mDkLùO+ñsn8S´Òœ}C~FççójÌ0qÃ:cÔLš­ó¢g•²Ÿ¡rVi^€E¹'ÊV‘û°õ33hqö(X…äå3œ=:ýNšu6Í:yÃ>cØLõÛ«T’~–Í:Æ>ðå­I¶wÝϯUª¯ +ÏNQjÓnvŽÀ|ë}G†¹cÑ«cÞ——«F(oìó¢Y'™ååÒv? +å%G¡LpÂÏví¶aMr¸&0xÉÏAƺ¥ ­@aC¹Ð +d‚,ÉQ¥â·Î9=YsÞÊ”Ÿ¬ó_·¼ÊIq#z“òPñO”‡v¢·у n¹<ŒhÀ¤Ž|}Ѭ6ð#67ïKµ·ׯ§—ÿÒ¬ã×FéÕ‰~ñA¯NŠþå*C½ÒFêR¢4àxmmIa+ÖC=f0t˜Ïµ=³´È*8U4d÷ N£ìvJPpÞ:t °RpÞ EɽO&&ÞWí;êb(N±ïºh:¤ßOáyëÊXý23gQí¹zÛ~qŠ+ÊA…çé÷H0qðBái|*­@Í/:˜vt¿ Ë9«¼±^ˆë?Ñ +4¯5ÉèŠ3ž—φÉG··›~l– z°ÿ7ãé]hÁ>q*ßf8¯.Žø®Ô ö ¾kìé݇Ź©(£$žV¥<4?ŸVc8Å£+<­.â\SœÅ™V#6èvÞwD`æù¼>4Ò3cõ¡jͯ•Ãò‡ç÷ØÐÛð±tkNx}½=~ëóhíñŠ'Ê7çL>- —^ÐOãc +ì)}k1;e‚„†S-:>HÐpú–]Fi8%ü¿©á´dÓe‘†s‡u$ä4¿h–i¼ø¶GÏ5OãùÁà«·Wã¡3¶Ÿ4~qzhø§)MH]÷âÊvÌé—Lí}ƒüafrønF +»ÁÌz œ«ñ|3£&D ~a¨Írþ·½¼¹Æó™ØŒ Üï ±ŸÌÂéYÎÙÏ~áÁ˜ý\ý«Q~™ñÜ; žÒüË‹ÆÞ3ûÅ'¢þÒ6èÁhÞ ÎUJØLr›*8ÿVýÒG,Þgòyãm>Q›õ//œöK[,ҽ䧿FxÛ ¼ä~¿8]¬çZlÆÈD¿¶4¹åÃmMÐzwÔ í9}CÞJoX“tȱ7= í9ê’B0®‹w–ŽX¼Å |”~ÿë¦'g±ì¤ ç{R·Æy±µ"·|¸ÅcÚ6¤cùq^l…a¯¤nЃ½’™~¾6œ©‰¬{ÑšÃå^IŸÅÿÿr|·âL÷^S«öù †öhõ‘oádsð P>dh†[Ð{Ì ÀËÅA6ûÝ €Áni¦¿S<º]³ßž Ûõ¬~Ê8(3”ÅöG³±0§'gë©}Æäµ™=|Ð\Iè¬ò/o‘Ò™[ÜòȥÌÿßl0ÌÍÀ~ñ9³µç üüðߥ`l•¤ fv©³ù‰ér§’›ùØZ1±É¢•¶ÚXƒoNRhs¿/¦´uÿëʱéPIŽMo„J#X7BTKF.X³£ä*Ǭ5š×V䘵†S>âÜtöÓҥܧá¼ú{öñ‹^×$Rà¥w›À)<Ÿa‡ƒÓÉÿºa$\%ù™»PêÎû^ŧ¥ª048…_\9pK~±ù±a©ñ|³'ËÕEþå*Y<„Âóò6?â;«LÒøå5†©oˆÏ™Äh*<ß8+v'üâsõÆúßw8 £^\~ÐÛ7ä½±ac½ºœopÓ/³“Ÿÿ2e®øÕSæâ¾Ùç/î1ÌV¿x½çê¦õ¿oÊR pÓuÓjüâàz.öðvKÞX_L™«ï{M™Óx^ ÂÕJ;òVåf¹ þœrUœ[a¤"³#@8µ#@×ahÿ _‡¡Ý“ù ŠIû!ú âý0´Û âpsò˃TdüÜI8/5¯|Ž^… ÎÏš¢Õu¶Î¼W1É5¤ø*1§ûuÓUÏp???YçÅXþ,;WÞà­´eÆ/ß•=þ”fù³¨ sRw:̉!ˆ@(l¼ðÕë§§]õuoø†Áÿac}ûU^÷FW/í\ziÝÜ‘^Ú Û™º¬æm°º¸V@&Á¹m¡ÌÕÛX]4Óžmçù²Ñï¶µh¾íÎ:`ãhüÉÕšþ¾¹Ûàmy6;…÷ÅÑèÜ`‚½E¹Jî ð¿oí–^nC¹êÜ ÿÌ–?œþ³[kµ8Ì-=Ë^”!Ç{å’ð|³kÁ¹Íx7ã«›]5ø'+wyj8½;³Kº†ó«Q¹êTãHñ!Øçó«6C¤ðü®Í(W…j<¿5>=Ÿ_Š‚·Ÿ›(O¤ÏoFÍ2Uãùͨù”ôÀMOɽ+<¿µû|¾\5K7‡{¹p³ëÌþ·»î¾ÿ_v¿óîþ ‰r°ü“ü{潿~óòÃéŒG‚{}Æ·óyCÌ¿¿>½÷íË×2Rï»fÿ­?^5ô7ôŸÐò£œMVè?£h9™ì¥ZÈeÞàÄáÍ<½Üák–ZDɇ^õñþÝóO+b¾þ ,s•MÞHý¼ÊrÅÙoðßáðfžþ¿y%ˆ[yƒ/fße‰Þà¼C&TCûbò]4ÄðxäÏ´k%ÿÆà”k®ÕÇ.çýóüûû§÷¾ýHýòíSq럆ÿOªRÒ át ºwlF¸‰ ‡tskü—óqv_é=€û;vȉ²i¤ñÜ$¤hŸomÂÇë¼Plõñúîù§ŸÅÄ|Íl‚¦Õc4Þc4Þc4~Ñ8ßqôLã¥×hŸÏ+yXûy-i+záŽz*©¾èƒÏè5Òx>v¢ˆ¨hürf¥!ÿëß_•^ÏY7C+ëm¦ÑßP˜ÖøE#|¾³Ç+ǸÏçÜÏ–°3¦ñôæyÌ%È}ƒ=].}Óx~gÁ!ÇÜÝâ†9G÷‹ +޹ù‰1ç†z¥aŠÛL?/a§ev<¼ÐŒÛ³_þS +~¿†îš‡/ +£’'ø+ä!náGç\¨ÂS¤Òægf‘áêî ÷¡uƒù×ÐwT ArÙX/ôÒÌÂOÊt ñÓ ÑøÿÈñÝÒÿǼr™Ñ¥¯ñ|ªáð¥ÇlÜ•K¹1Ó-o#ºüìAÛ\šÅá¿ðB¤\˜©ñ¿ÂñÃWLðÿÌëŠÙš*þørXSõõOù²µýߢƒyüûº dæÛïñyþýõé½o?Lꈊ<î~¸?ü/¼ËI +N%² æóØŽ*ÆW‘ò-Š2?Wáÿ€ÇüQVû ÎS4ðLO_dÉ<Ý$d…Q¾úxÿîù§1_ÓáTW~ðw¥opWvð§ÑŠ­nÀå†&ç±õˆ-ŽiÍùžúXóéáKâìd;.œ¸Î;$·Ä`}˜çqGÙÁò2çgfÝ aÚ)Êcò•!½Ácèå>¯ÀúÙƒ>*jG'™Þº¬x|ž}zïÛCt•ÔBá ƒ-€5ѧŽå7QDÊÓø”Ö$¥QøÿÅÈCR…çQÍð)H9ü/€zÓÌ}^ûÌrtTãy`O1Ä#œ›nï®îZòñ‰úxÿîù§Á5_ÓÐFÑêŠmÞÜ(¼+ºñ +Ë£ö©ð®Ú§Â»jŸ +ïª}ºé¹jŸ +îª}*¼«ö©ð®Ú§Û=jŸêžÚ§‚»jŸ +ïª}*¼«öéÏ{íSái +…ø¥Í¦€Ãî3xq·q–Z‘Âÿ)10OȽT)\Ù¥—vœé5~Ç$±[3ùJ´ûÅ¿±æðËÖ>>O?—ï|÷¡Sr§¯ÐGçÝ·º!Þä ÔcIŸ†/ºòlh<×´ûþ÷@á˜À´Gøƒ¡†ûÛ(7\ê,ºåXšŸ=IF²úß±êü|ão?–¢…ßTïß=ýò.ƒó—Ôß*:]þVá]þVá]þVá]þVá]þVá]þVá]þÖMÏåoÜåoÞåoÞåoÝVàáoÕ<þVÁ]þVá]þVá]þÖ-žw릛‚ç{š5~1\Oûß·ËèP畯CF‡jübZ^D¥Lã÷Zkç•;éwó‡¿ð®ü(_b_°,¸1°ó¯Oï}ûa 0Ôºx²Ö«§á« õ NV/öé|»ìªÜmàåfQ_uõTI¢Õh„„“lÇAW_Æó !UËÏÅöšŒÀvóGÙÌómÐð¡àQ×ÿöéþÍóïBk¾¦Aƒ¢Ó4(¼+hPxWÐàÕ" æù‹û *w¿˜àÛРñ¼I&‘tË-‚†cæçb$/.sÕðÅD^ÔAýÔ€¨ñÿ‰ãewä=¼¶žãßñºvcmW­ß?Ï¿¿zïÛí2Jæž0ôž›)8½à]óÓézß‹ +þ‡Æ,|üâ ýV¯ïžú™oækj¼¯¹üIãyQ<ÈåO¿¼iu~<aê„ç=bQ.‹Òøu:‘&übø¶*ØÀ§=zR—¯ð´õ úÛLÏ¢[ðøTá—úó,><ݪQâA÷úÖ‚³ŠÏÛ:Ï€ÙkÏó³óD^®ñ‹aÝô‹;1ÚPãñ¾ Óöó§Ë0m·<`4”yþª~'ùœÂóC2!‰'u?èoÞx_\„š›}1ªúÅ'¥,¬Ÿ ݯ›«¤g^õÂE¥Çly:Wd˜”ŸžZìrñçõÊ3h`øð.#>Œžíƒ;R]ƒ?PÕxO ªñž@Uã=[öïÙ²×x×–½ÿ\[öþ¾¶ì5Þ³e¯ñŽ-{ ÷lÙûÉ¿¶ì5~Q® +(iúñŒ4~áŽ:Îúéoá¶#ÎM&½n<~æå¢Ö±•¤ñ‹RXA( ñÿ•ã€nÛ€©†æùÔ6ˆ« ~f¢tVgþДã^ÚÒxîJc²Ï_Þ•_Üù-øéI²ã–eœ—5¶™ÚÎT2B1_ÜLqZúyé;ÕŒXÒ-Ðr`vØàfŠ2´$(w¹m9 †´! Mî ó+Löù´0ro³[ Ðu’gþÐI”õ×7ø‰‹#Žä G°Ñ"扞EÁ=U0ˆ +Ï}6\ã„ÿ-lÈ­ñ¿Nê-LðåT8“³(ŠeT4ž§‚WqVã¹=¿N]j<õr°Ïç±йiƒW1Wãù0 l½• ~ŽØ¼l°³Šk<ïï>eh±ÆÓìG,àfÏÈd뎸õ„³3~öôjé_ìtE±>^qÃÎXÊ~qC&kžÏÇPíóá×&8-ct†yqɆ*bqñ & +×YØhž€‰ÂÆ0ÓNÅ´â×ÜŒ»]7 9&ݯêy¨z™ñ|¢ðu[«Ÿ?¸­5úmI>¥%Ò/>g±ÊÅ×wMœÁçÌ`~ø¹!nh1Ý瞬8SeÏ]¶Ýüy„åçÒŒ£ÄuÈu"Ï;¸¹€Oã×Èý{ÏãÚP¤ä¦ð<®E'äü|×Þk† +Ï·kf©Æó½$—»ûùy/*<¯¡ÝK† +¿˜w!ÛÕ~zŠÜ×§ñ¼æ†-©™^ãÅÓ_\›-ù‹½‘æç6ý`QwK’f*ü¢¨'Ð5žïÈ^Cóüúˆû'»_>Ó$íUx<'NiºåMù™Ÿ?áø&±ž^0~AEÌö, +o2…À½²Ý?úç(u%÷Ü u +Ï£Ï+4÷Ê'êzÆ>sò›Ÿ~{‹ûAŒ¾óÄî öù<± +lž¿æO«¿¼¥²=ÙÏ>IüãµWéÞ¢ð|O³_{(^ñ”9xÝ/þ˜ƒfq¦#]raÿó£Ü®ä–O™›7óqƒGµêËé¿.ŒÖx:#)_Fk<’”óUñÊâó4Û[>™ïºZãé $‰Ïgù§‡ïŸï˜‰ÏwägäâFi‹DnÁê;—í¨~û–[Ç}@~þt)ó*8­R—ã*ózÙó·1&ìt¸ßG\áyø€Ë@û„ÿ1Å#|žñ‹*x“ðMáyøƒ-úùù‹2x’-_…_”Ù»ÔU~QÞz‚/ªà‡}ü¢ +žÌãEpB«ñ<ØÃ€¡ÏûцsÌ¯Ñ¾í¢½¬Yò99ׄ9?=÷ýy…çEüVÄ–+<§×ärlç[R]fÐj<ß’ÂTºù}iÿ…Ìu‰þçKlÞ&ü¯­bóäש±¿²Èh:¿®H½ø•EFÙÍÜäéÉÔ.2‹|•6ÔxYãì&8¿ÇãìæÕå™Ty2µ‹H>[mä³þ†Ï:gmùÍUÙ¼õ ñÚÛwħöù\~P6ß‘ŸžýƒÝö4ãëÿÊJLýv³©ã1pºœw +`–ëLMq$džÍŸ}º%Ÿ×d¤¦=K2 q·?&‘aÖórñ”«TKÎâÒ»(!¼W0s-8<í—M”Àë†8àî ÃxùI§äáv¶ÁÏn39´"Œˆüô[eÀÏ î#‚oÁ/=å(²{è΂ûºý-îUjÑoeqrúåQD`G:]?¸ö.,r•÷J<:Ä%þC_#6ú Šî8™ªÐßeèpœk/¢›±A + +þ.ý– +þ# +65& ··ôÍð$ÁËC\XÏ™øÎº\dy—zÈò,ØnÒp.RMÖ^Ái Ô²pEÁ©%êÒ7 á´–Öe«FéÂÝÒüUÃ.j<µD¸ïôóCúÛÌKjX¢‚y©¨[ÂŒ«sciŽu¿äর6¿/•ʤ’é§äâ¹o°„óe^.…ëìžÆSG Ó~wàÒæ'wÈž¯[e´´_|ª>ݺN™˜ã_^Üð!mMêžÏï¨èÒß­ñtŸ>t¹(ÞÏž‘»ã°(ÔÉ5±nビšF»G/“Õ.^k‰Á>ŸïËⲨä×Fô“æ´AÿHró¯WĶÚ9¹eäÜÇ.Ù¬,ü ëÇâõCS÷´Ÿ¶ mAå­mØBì¢÷âWö8”÷87èiWü¢ð‹“UMâP?AØVË €mµY~~‘—Ò¶õÝ/ŒR]?ýê•pU÷[OLr‰Áo~p|%íÐmµY ©sÇq—¼! )Eë¬yq,Éq#·<`<Â9›¾Ízåün‘®œßÿ¾Ã[; +®¤ßÿÂCƒë†`_ü,/Оüè¡ÀÆ_ðóL]&øYÿ†D“ë¹}æÌ·æç6æoj™à&>›¤hqó\·¶–¿i*(¿i3µþl°W­ÍâCë¶a¨yžÅ‡úÀdóëòrF1æç£Ouf?7ËÊçÐÍgŒ?2/¼8ÿy<~ü•€+üïò¼Ø^$àQ츗tʳ-†MVyƱÍá^_œÿLÆö‘»_çϳ߼Ýóu¯¶#_?Ã9ˆæ×åǰŸôÜv¯3Š×és?{Îh]éb4E“ Ìý¾8}¾áp¾4nx#LF3xÛ>®w®~ñÄyÑrúéÁŒ›ºáíÒu´Æ/&¯>™gNÏu}´ßÜb´Rí~Åh¥æ·&­Ô7¬-šeúÎóGþ½c ÓúËFôàÝ7ìšeŒ}XI ØfuG‡˜NÑ󆼇µ'œ?g‘‚žû}‡}0ôð3£-Xz8ýMƸßԤÙÇí¾p†ÕD‡¼Ü€ô>ùŸŸ'{¾ÈJ¶µèá1/ÌûÀCñ+;Τ†¸ñ¶#W87œ;:~Zös‡XûlÍy>r…£íp?ìñ¤:?™žTãæÌâÂF8€"BšÅyQtA|þ;£Þ8ý#»0Éà¢K> ÓÖÏ„~kŽC¯qGž‡uhÍÿür~S‹žW-Ã0˜È÷û„àç{AØýrSbÚ +ÛPì)2(fmtÐÊ1Ãé5™£á”’&³¾5œ×†¤·SÃé)Â.sQ5œFËáöñ¼€1¼|ÑøqZrï(M(8ßYUöž + ?Ë*<Ý CãGèþ¥EãGœ_——2Pyªž7~`$BÝ g¤¢}æÏb®|‘Ø×ÿ|™|¥ñt7 `/©ùÇÌÞÚP¯&9…ç(§Ü*®ñ¼ò‡­¤sƒ?ØJJôŒX3žü±fšùCÏ8…ž%´óÚžˆ#ÒÁÿ¾hý8ªß<Äã´––×&ÂeôÝô ûç÷åS“£Œ\ðógè{I~}Cßël–—þ¤þg9bì§'Ë‘açgÌ +uù—«ô›ñ»‹^‘b]#Ÿ{=瞳ã^‹ÒÖ“·[ôŠR:s/×½UÄë­"^óöhñÒÿhñº/œÒÊѯŽ8¥µ£^m¶£^Ò*²¡îÒú‘6øsoýðÊ›”ª’_Þ¤Tµ!ÿ)ËÄ ·»N#·ì;ôãÄöý#Íæ­%;â‰ÞÞH†­íˆ'NŸ¤ ñA¥jÃ<`Úšñ¾üËvZs ©¨<ÍôóÓNǵMíÆ‡'sËH…«ÕÎkÞPë ≠+uC<Ñ^Rçç/j7é)] ‡y¸÷p&ýïÀŸ² >¾®Dóx^š+ÍZóEe(Ë>š›ýUæ­¹­?æ-œê’ϧdaQé‰68çìoRšð«ËÎM0¶*õìXÃrçqäéóÏù°V”*ÎçÈkÐËäOÜh®ÑTgF~Wç‡S•éâ7§KÖ‹tv*8]±{‘‚ó¶ £H²ï¥7Õ‡üîËΫôéyÕ¢ yþœß_ÕWò3ð†‡EžÿƧç¿YdÜÎóçü>MÓð¾Ñ@[ͧ‡¼2õ8=¤ðÔÎà²Á0ó„ö²A£ãù®œÌ<úô̳*·p>Îïóôc>€o4ü· Óßøôü7QAÏï|ÎïÓô1 à ¼ØxÊ= +þuþ¥mh{h2 YãçxÂm~ü£5³èÓ;,«·þü1¿ÏÐø¾£Œú/|²på A„€ ÷ö÷y'ɈwgryµÛ#ñÝõ÷÷A•êþ:Ï|SÀ©F…æÉËÕ²¬àü<²¤‚ +M3;DnºeKÊÏ K&Ž/v˜N´c)øb‡)a;^Áù®…ô¿i” ‰ +Î þ¸I¿â·ÜÛšÝÄ_‡Š½"p?S¬à|§«) +Î[¬kÀ©D7íUnC÷ +»t4Oë´nhŽ~bF +1+*Õ&÷C¸¥àjfVpzäAB+~Î`æî†‘Á¿<áyïd‰²^Ö`$߬O‹Ûš³Ñ'^Ýǹ`ÿ²¢-¹7·]’SÄÑOûÕ”ì&Fz’ÝoŠÁ¼ù®ÙÕ‘ì~Sœ8nK ›H~¯‡É}31ËãÆ31‹¹€§±b|¿ %©æ6²4-êb;Hîp?ÎqCWáã'<í•ÀõW§ßË^Ó¤ÚüÔí +šß9É¡äì6Òí +¤ÅyzU^—GƒssÛÔ«¿ÙëWïíÍ^!Àéâ9žYÜ¥—çx†/rrÖÍõ"gÝkZúV<ƒsÅs<³>Vìg;:AüÎgŠgåà;QWϱ›ô«åØM .Ò˜–iyiNðƒãÄ1»u ›D©º³Ÿ‘˜ÿWüv@vˆüŒÄÑìš½ÃŬêbX`Cë§7ÂæÐ†ÉCßðlòø9îÙÑpÂK7æ÷´Ôbâ_._g0ñ/qœ7àÕ˜v¾¤8rì6¾ØêþÓóÛ{FýÉ­#t/~¶Ëö‘ß—£šPœ?=È G¯õ-#Ðïþ¸ªÀûÕzØõ`ÃÖ¡ïÕ)¬Ð”lÌ|ËM“ŸA&.6›á}†W‰EÁãá1(8OhƒÜ«à|{4EÃyv}ݯà>>>/MediaBox[0 0 612 792]/Annots[517 0 R 518 0 R 519 0 R 520 0 R 521 0 R 522 0 R 523 0 R 524 0 R 525 0 R 526 0 R 527 0 R]>> +endobj +529 0 obj +<>/Subtype/Link/Rect[256.05 695.06 279.88 707.35]>> +endobj +530 0 obj +<>/Subtype/Link/Rect[279.88 695.06 282.94 707.35]>> +endobj +531 0 obj +<>/Subtype/Link/Rect[282.94 695.06 328.2 707.35]>> +endobj +532 0 obj +<>/Subtype/Link/Rect[328.2 695.06 331.26 707.35]>> +endobj +533 0 obj +<>/Subtype/Link/Rect[331.26 695.06 347.16 707.35]>> +endobj +534 0 obj +<>stream +xœ•YKEF‚Ó\ÿ`ŽÉ¥ézôëŠH€å¹Á Ë- +(Z#… Ÿjo¼™jÛå.YZk¼ßô|U]¯zÞ-_ìÊkIyݽ^ží–ÛåÝ×ÒpÝËw\ï— øøÝ¿_þ^^.ÿ,°þ·àz#¨· ÄõûåÕŸq}-·ÃÚ?ÿþõ¸Î‡;kÅ÷ë½9üûMBèó縬»7²TÿÖ" @ ‘×Ý~yòÑ˧»·ìyl +1+ø/&¼†aõ/-xåPYÁ·à-Òð¯MxœüG^CSè-4D-Í“XC, +ÿÊÄ…¤ñ?ÛørsðÁ*(ü­‰'±—þW_“ƒ‹½ìXŸ[nñŸšø„Û›R€<É!`q¸3—@z»¾2ñEÜãá_rHšÿ _1äªðߨø +;øT© ÚÞç&¾qÀ6Ïc ¬ýó›ÿÐ|aCB›O„äJGDÓÑô'¢”No?™xâµ½wwö mtMˆ1$m°ÙXÅA:€¾³ñR?›ÃàT:ê3f +Töfé.ŽFй®Ž€–Λt¤óæ4Ÿ_(­’ƒŽô^O}Ci¾ä ‡&îq„Iû­mžõöë¨âœBñ£J¸Í»‡PÜéØ." ìˆf¢4f»í~éîÍQ~ˆK½¾©f(ј½fy¦”CC‡$Û‡rh*OÊuô…Çt´ý_J(àˆ‡CÑåá[ŸC­Žý­-ö§ÙîHÚuE‡½­Œ|n,<RÏ Ž%ä<¿Y,R»h2¦Öc‘ÚŽÒÆˆã¤`ú†%ׇReÎ-Œuœs̽eŠýg6¼Œtlïs•¤íMΣ2´×O¢ôôîÚJ†EÊ7}Ãg6¾Ûû•qœì®àÓX ïžš7éuŽâÏRLšchç +!;¤‹vvØ,þÜÈÇ_´€‡Š4ò7ó=Åæš] +®¹ƵëÉ%u_dÌnÊ)ã2¥máæÔUÅPMÆtd=ع…›~”mÒhsW!âÈÝžEIÔlñfÙ€‘½éy芭Î;D±ÑüNTe0·x{àÅÖØ<®ÀšƒCW ó|˜»bØâí)³ÕãÎTäE~:bG†'$Gìì§ó±#i[Èa¬ä­T´y{E~5íûp«á<öáV“àAG04‘³zsM9ŽQü£à¦"A` Sמ½E€¡£” 0ªóî<–Tr$ÖádEÇ‚9JVÒ|l"£ÃR™³\kK§åù¼ÂDgÓÿ+ª¯¿q@™ÄîÈ=£öÃõýr˜ó™ëôpýˆÝ_g\[K{ØßñÚXó‚}yÜË?ìCv€EƵóxmÀþÔ Š·Ž×é¼Á— <?p8jaýŒýÉ3IÆ <½Lç]fpN–Zum°K•0]«ìI=ÂØ*®$•QØ“1ˆ½oOêRÛ¢£¦~w.…ÕŽíO6à¡èŽ×éì_ÜÐ#î4¢ôö§O¼R +FF—)³>“‘vèöé’h­¨cöf[ù.¾i}´èÔ9ޱb@Gï9“é`/6^ê}scÎAÓ1û2uÙ…Ž\*µ¿ÐÝâ°O¥¨¿/žÏ½~Š¥ñŸ\ôd¶-ÃP8ÿÿV>ÿ®óB +endstream +endobj +535 0 obj +<>>>/MediaBox[0 0 612 792]/Annots[529 0 R 530 0 R 531 0 R 532 0 R 533 0 R]>> +endobj +11 0 obj +[223 0 R/Fit] +endobj +16 0 obj +[510 0 R/Fit] +endobj +5 0 obj +[115 0 R/Fit] +endobj +15 0 obj +[247 0 R/Fit] +endobj +19 0 obj +[516 0 R/Fit] +endobj +13 0 obj +[242 0 R/Fit] +endobj +4 0 obj +[20 0 R/Fit] +endobj +17 0 obj +[516 0 R/Fit] +endobj +18 0 obj +[516 0 R/Fit] +endobj +12 0 obj +[223 0 R/Fit] +endobj +6 0 obj +[115 0 R/Fit] +endobj +9 0 obj +[164 0 R/Fit] +endobj +14 0 obj +[242 0 R/Fit] +endobj +7 0 obj +[115 0 R/Fit] +endobj +3 0 obj +[20 0 R/Fit] +endobj +8 0 obj +[164 0 R/Fit] +endobj +10 0 obj +[223 0 R/Fit] +endobj +536 0 obj +<>stream +xœœü `EÚŒWUWßsôÜG2“I&Ç’ !MC ‘ûJÐH@nTÊ¡»BTäV`UÁ]Ew wY㱞ë+ ²º².ŠWVÞ…ô|OõLÜ÷}ÿÿïKR]]ÕWÕóüž«úé Œ’Q3âvÓüÛC¯ýÃIèÙ‚8~êœi·H_ʃý ñN»ùŽ©·}œÿBÖ£Õš>eâä¿UõŠPýj¸¦Çtèp.òÐ~ÚÙÓo¹}áñØËó ý%Bñnž}ÓDîø—=zàyhŸ¸eâÂ9îé|„^~ÎÍ™;eÎþÜ í½9Þã¡t³ì@é4ŠÒJœî,ÆŒÄivŒÕäk„pF²¤~v£gч8‡Ðü3ò¡ 8€»£Aˆ¢a¦Ï¡ô0r£Ñh=v¢läEcÐ LáœZ7'æ'¾B× ß¡Çð=‰p| z]€übTކÂùcÐô÷9ªO<‚$´ ©¨7‰½h":¿?ÀD¡?ãß&.ÀSÝè¸_%êƒú$^L\Bh5]ËŸ÷¡uè07%f .( ­$±Äñħ(ŠêÑг0¦n£QÍB÷¡8À½ +{£'-¤«æ_€' BcÑ­hZ‰v¢7±çOðg¿IœAr¡<Ó ô.ÃCȓԒ¸6q]¢×a¾ì·^Owð×U‰G/!:€ü<~‘/áè¸;ñXâOÈãé +Ï™„îE/¢7У“ʼnÅh Oþ ÎÀ!Š'²ˆ,âÞGÝ`¶ 0Úyh+jŽB‡Ñ ÍßÐ)ô9vã4<OÂë𿉅L&ïp›¹½ÜÓ§Þ”4º=‰ö£¿¢·Ñ;˜‡ûãáx&ž7àGñ)ÒB¾%?R‰ÞK/Ò>jœ2.&†&~@~Dס;Ñb íдý:†þ¾G籆{âéø1Ü‚Oáo‰L²È02‡¬'O’?rC¹uÜ‹´Œö¥³èÛô$¿”_%NKÛ?ï&$ÞìØàþQT½Pñ$z½wÿ}‚>cøû÷Æãñð”Ûðrüþ#þ ~ ³DæoéMúÁSg“¹@§{ȃä!xú;ð{”œ$ŸoÈÏeq=¸&î1®…kåŽr_PFi7Ú£ãi8SÂàGñOñÏð/ñg…Ja²0GøR¼G\"ýµ£ ãï2¦-ÆÀ®Hº(ñ{ô8à~/ðàM èÁˆO¡sÀ… ã\w®Áµx‡oÀSð=xþÞˆ7ãÇñŸ`0"ÂØc¤E&’)d YFî'{á÷yƒ''H;ŒÜÇE¸×Äç®çn…9ÜÎ-â–e×q;¹w¸÷¹3Ü—\;pÍG»ÐyôNº‰î {é»üuü-ðû8ÿ߯¿Ë_â/ D +éB‘0SxJøLÄâpq…øø½4§ãy]ñC ƒ]ÈN⦋q;td`Šì0óðaHÅ÷¨Š3€/6vÆæ!êbW +:mëoLJQþ Z,´"=…vãÉ)ú2¹Ã8@wp·òo’0z´ÑZò<9Œû¢½¤’Œ%[8„?ÇO¡Ïï ÑCx¾ =ƒÛq/|.Ç‹ÑÄËÂKPeâqB±Œá³F€î¦“ÑèÿüÁècô•ñ{j¥¿ýÔŠÖGŸEŸâ§ÑϘO| Úm4´ÌjÀû}ˆi½³Å Ð 7 ï ½X-^.\KïDgÑOè+þ ª/hÒ3Æ ú{úÏDy¢+HHz +än:ó9 ä´YëttI Hõp4MFwÖ[—hIlIÜ›¸#1½×þŒ ñÏxHD+\Q‰^‡ß5è#¼ +äpÀÿ=ÏÿíǘŒÚÐרsp ÈC;?Ÿ_Ëïä÷òæßºµ— Í€èÏÍ +Ìà&ô.úýˆ%àM¢8Œ·'Œ½ÝLê¹#¨ÑÙ<Ðã}S3¹ îrPo Èó³ 'n@F'0Á>˜ÑMð| îS tžgoÞ‹÷@ÏdÐÚ蘷 ÷$·Ãót¸ÓzÐZm0¦Ñ@í„9®BÐ ýðX¸×hš Oè†ã]Àý¨4k?î¯@ïl¬¡¾8 ?×5‚„ÚPªàÿ‰ *4†&z’ܰ1 èßÖ+ ]ƒ›`v˜Gòàa¨Ì cxs´¿gŽb™’XÆ-0nFo¡§':/öCHï3Z¯ºöšÊÞ½*z–—ÅKKºuëZ+ÈÏËædG²Â¡Ì.éiÁ€ßçõ¸]N‡f·Y-ª"K¢ÀSŽ`TØ?RÓj‰6¶ÐhdàÀ®¬™¯èhl AWÍÕç´„ÍÓBWŸ©Ã™Su¦žøé +n c>¿àˆ¨ï^‚ Al%Uº ñÔà"R£€$ðážÇQ$ƒ3ìGþ˜v¾²£r¨v®rHG%ª‚}ílº‡aGl08—B\Û%GQˆ¶±'ŒOœä·óïCäÒ õÄD_¨:”¢ #PTžY^ühövÛÓ'COgoïf‘© P_$‡+Ȉ†{?i羪ééÁŒ k àDBEEÅ={Z­%E‘WØ3=ÈÑh(spBÏ¢H(#=°Êeù]¸l€ b{E7kÞ"/ñ¶â%ºU)Ül×2µµÚ6j­¸‹n/ÙlW2•b…SC~ëÁü†tt4´kP†j_ ªª!íUí_…³¢;œPû*ÌÖ2Mª¡°z—@ªG×í9Á‘ÖÄ©=²-„úÔœ‹Å껣Ü#Fs!Ê–Å{”GÙ¶´ ¨ ºz”ûAôzqy²x4’%xÜ>N€­·´¤G9¿}ç]·Õ¿¾Òø×ÊYOí¨½îØ_þ||æcÍÑž¡¢‡;¢×Ñ¿ú:=bã‚É}ï¸ç£kf ¿î‘›ïÿǨúÇÞwð¥ÕõÛ¦ßëÓz-»« pgéÕGïq]ua|°±¸ûÊ×߯gÍ2FéÀ1 Õè¶<ûŽH2F²†œÒœ…d„a‹ÈCº"o٢ŔÐV²~ãÉY # íçÚµv ›V©:pŽDI™³+%Äãvú¼dÊ‹›¶Ý4vIÛŠi×”EŒgð¿¿‚ ƒœ:b¼kŒûׯS›§²‘TÃHts$ƒt.ÉU¦‘iʸ§l¢,iþœŒšcÚ+}Ïo¶°Ñ8gV³Ñ´wœ¾z0®k¹²8áJ½N[$\ÿQýz¥O]ñ†}kŸ5Fìþó…Oçý ?‹>4º\x÷;ãœq‘d zŸŽ¥@ü0PHœLøIŜήœLªBà l“& J+y\×xx™A¶,•èáb¬ƒËY’¥q!®˜£\?^C!T ‡ôÉ›ÙãN7 Ѿh@Eí Ý‹]p÷>$‚µ€q†ÝíAØ<‹pz¶î!=‘B¢v”iÞ¦Íï¸ï^\ +×?ÈÌ«‰3¤7p„C=õ  ¹ a¾è ü òÜ7p—Íqœt~P¿²ªrß-v—öJ÷b—bÏzßXà¿ýÙ \Ccg¨oŸ5„Ôk*Ë•x§¸SÞa; ¿.KcõÞúàØÌiŽéÞéÁi™R©zÈ=¬ƒÈ ¡¿\cÝ!¿EÞ^‘_±~Dþ&| `uhþŸø[mzŽÓ÷o—¬™ö";±ëвoG|ƉaÓ`–û„¿ÿÒ/ãmbn5±Âƒp‰ÏëÐD!’…Zy_– +ÍkJe‡’’c ׬]pì¸ñ3lK‡{3âÃJ“ß¶q¯1ÁhÜ¿Bºíø÷û×Õgô-ü¼öÍÀLòbàËãÀÒ(Ð@Fcuyù Yd¥­8Ïó­äÆ’Ìcd‘Ña\4äA·òˆfÒm¡””CxÄUIöUaºÚ$ü¹†ö +¦yÂa‡ –õÈ./墯™GÞ½“âÓ4²¶"û¥ ¥ÑZ`¸JŸ°Ï¿?x0íMúšÿ¨ÿhàhPªN«N¯ÎØLöï¤ÛÓ%!ByByp ­öWªƒR¶?;ä¼Q”åþ-i[Ò·dìLß™!9Q†–Êèž1?cIÆÚŒãRã‹×í‰gÍbÏ`& :Àí¡VòØ‚-öVç†G—†€¬¤—òÑGzÉ2Ïò›ôUéd;÷4¿Ã½Ÿ;ÄïwŸô¼n|¿÷~ +VD±Ïå gZ5‹ÒгuË0+Ö­k¬ÄjÅ`‰nÏt¹ˆ‹‘×µ=Ç@ò}à +ðÄ)nº=×ÚbiX¼Ú‰Å™k2·f>—ùB&ŸyJ<1,gcÞ¾ø +\¦s)q:*ŠR aÖljÇŒ˜)’2ªQ|¨Á•cÊ–I=±Ü{™Œ×’Òk‚‰ô¸Q$+{Ö¬sGŒ[0wdÚ̹ ë œªi·¼|Ç;wM{Ñã‹÷^3~Æ÷…§ßºdÎÌßz>çfŒ\7¹±ð¾­×/¹yù‹·¥=ß‹ÆÙÏ®×]Ëøí€~MÏ—l!K¹³¿sP`“õ÷¶ Γ6Ùép9ÃŽˆó>'¶*‹Õép´’mº×fuÛlV§âfë:æ†ãµ ÖWñ€IÃ4+˜¦ñº5S)RˆÂÈ­lw3«no<ä.vënÎÝŠŸÑÝG¦V¤‘"­J¦q;UcÏrÙí6j×€èG}X÷a_0Ó֊úӺ?amEÏ1SÐåýƒx@J0œV˜;L)h¦L@Gì2Gš€LGÛ@IãË\19r;r]`°DpYð4böõØo™?¤îÎ;&ÞÑxz-9Óñ¯Â'ÆtÆã­ÂwdL˜½fí²e³Âä¢ñÓOEÆÙö=ðÒIÐ`ã€â€dŠ #zï™ê†ù¿Î3®—p1Yø0¬Oâ êNñû¨^×ÛQ똢Þ)­žæŸ–¶Û¶»ö¡ƒÜ>[«c¯ë/èMG›ËwUë­#].!À/ðnò}¢}êæ§»p’ý™iEÀ~=Éz^ ‡€õ šÉþb“?•Ϧؿ-Éþ+4[ZVÿ‰aNì æ$‘`¹ç.{ÿ LA—e¤$‚”Åù ‘¬(Nùñì`Ö”ÑýÇÝ阹õ±üö§¸‹qü»g? 7Þ5rè4@Àl<ªË¨áÛ.ý«Ç?Åc‡1Ï¸ÕØr€K_¾þ7«¸¯¨øÏhԌݺéi\O,=©"?Ç"Dqˆ/æ ÿœôö3¦/΂´ÊóàÏTµ'}A0MŽ7˜7‡œ•Õ—¾ïô ' ítM MÕ5;Á2 á„B6Gœ‡hF·ÂN9®Á +W®ÉJ]Áå`²É=!^`á• QŽ3 s@ìô|+aC´ŽÊ` ù«‚íí̉ÅpCS¹cöL îèËýk;NÃnhŒ!gavë!FÄB.ð +Ñ ½jAžn[Xð=O©öÈB^a8ÇëÌô óbÏsâñ¸#Y9N—rç`DÒrçÍjórŸÙfn…¬ÆA¯/º›Þmx·Ænsº5w[Ûm[7)Ô­¸éæÎ +¡«La+Yµ§k÷QÎTL¡¡é|,iÌÌØ—ÓŒ™.…'Ѽ;£ÂÃ\Š «šw¹˜Q']”ÚuTm‹}Äøº]J|fêÂ%]ó ˜IƒàOàÃਔ”÷`j#7ááT#YOÿé™eãgOXº¶á±ùƒÏ +Î{é׫\øîNìÜë;J¿ãMþPÆ ›&L{6–ûüâÉG𬡝äåqú‘ùŽƒÆBÙÒ0´ï ŒëgøÁ£¢ãúÐ¥ò +÷ +ïV´QxMþ€û@ý“sä—Ï—O +¸^Ìã7ñä7¸¿¨|vo¤†ð)t ÊHîðÇÍZ±BÇë>W*Ùt›3n«`ÇÃìØ®{üqðòòô,gW…³g‹¾Cæ­‚Åé8Ý“»MÄv1S,9PR«÷¤-uÙ® Õ@&S*úh¦Ó1V³†d´ Î/ÐHˆ‰c8äóú’ª¼wHZ…3ûok|l,Çwâ8¶>5¹Äø[ðÉùxëõmów’´ëÏ~…×àñøVüðÖæ.ùÚøÙøúÛõ,jy:ªAø´X/Íãó”¾)tŠ…/ðUøzë½Ó½|…¯GÚ²´Müz•Ït0Xºœ9vM +ä>ÇTn“lVº«9ŒCábP`' P+ÖˆÆPúQx‚l–M˜ÁÈç5CZýF’ º–0ÜŠ"ïnmìZ>uȽ“žèxç}òÛò*+ouí>þPzô%ãÌí»wÛMµ™ô¥Ke6çØ¿ìܹªÓÆ0ò0X³0S­Õ¯‘x09‚3“ÇÅüs lx™£9Æ(rŽŠ$Q¨åÈ@ù †¬ÅVÝÊY©Â̽HÀŒ,WÎÈd Ø—Ês•ÿƒXñ O |šA¬ø«ÄŠãµÊJ3>õ„SåaZué+rª#Ä•ò‡.‡4š~„Ño€Ñ/ÑËh®^£ø1$K/HŸJ´HZ+IBÉ)È0þ*ah‘‚v0¤«D½züÊÿ4þ†d°ÕQédƒÿŸÆ·kïèM&wlac{òBÇ:FÙI }G@úB ájzv©í2Vœ/Í·Ü'-±Üç[’& >!Íés¦å9òüyÁ¼.Ò@õz:Z¯Î¤¿¡wúoî·í×^³¾ª}¨Ñl\ºbÒ¦g+2áî0%ìMï*ÈN&pÎÚa.ìbÒæbÒVàíjç „&@w®s,É …8˜rVqÉ +änSpçÊ“ºð¢­WI›¼v®¹E•IéácŽ~eGS¬ÒTx¦â2<)8ŠFŠJC4%ƒÍÉ,fWE5[÷}aì|¶íàýï (-4Nf>ÓüÒç_>ßp¸š¤ýØÑ:~Å‹xÚûŸãÉ}þfùÍwÿ·qѸ8(~æ¹H¹8Ì¡Ù&fö”Ä™ÅjÛÉ1k½Êí‹#^ç‡óÍü)žÏäù9üYž6ó,þæD¸0B-èâÚ˜îbÜ> +-Šn¥Ý;'>7µðYe.$5Í$²å‘Õ8?ôs Œ#’8ý ãp¢ñzö i‡•Œ–§Ê3¬3´Ž;µš¨ Tï¶weÐÈÂà¤;ç¸q±»Õï2¬\óR+0íC´¦¦óÏì8w:IPv€”ƒŸÍÍñúL“lǹ¡Øg?úc*žtÓHþÐ¥Æý“š7ÿMhQ|XÓnÝ&ÐW/3)Æëô $`§SQxŽpÌŽ¬È’ÂË’¬€?x@‰‚[ŽÒ¯¸y^QdŽNæ$Îæ)²!U•D‰¶’É»ùTºS4EžX‰zµÀßô‹ÀxüI•Í|s™k« +D!þ…0Äܑ؎¤UJ¯pl›ZiÝ'‡TkœkM¼¹[ÊeË«lqµºND…\y-Ý(l£-´ŠK„§è—ô2.38dÃNŽpr;·”ÛÄm’Qvr‡¸78åEî(wIá®QúrdnSC ÇšêMM$$¾ÜãT«„ÖÄ—„©U´Øê…Å]ECª³ +Frt=¬m¾d g˜5œdÖ©óvÛ\U(¹Ä€“ ¸á‡1ü‰ŽM8ŒÅtœ 5ÆÝÆ- x;æ‘U¹t7iùÁèœ|4Ú“üŸ®ÑƒÃE†a +¶I”Š„»’öB÷ƒW*+ƒaiHG +Âì©aÏ£ð¼SüŸ.ú‘i$PKàjBâ×U•‹JQ•£€òÕåô^q%Ô«wܤfªÖŸHï½°Cÿ”¿UÀ?SI§šœ©DH! ÉEÊ42N‘g* ÈBú„¼SÙ'RÎË?+Þ­t­¼UyU~Cùœ Çå”3äKú¹üµb] /Tî%«é½òje-ëÔ)d&&OWæ“;¨ØÔÒ~r­2N'×)¢_)²ÅI/—{+U6‘#*Ȳâ!Aê“ÅÔZN&J‘y‹(–6K‰¹ŒJ¤á’5®²9K KÒm¹q•m k‹®±UâXØADI »U• ±IF6à¢víƒvÖÑho½+<%D%Y.ᨛã(Q¥„#°Kà6œ…b¡’E)Ó†!‚·îaïÌ‘ž¦úº¾!©¶|£FÇùQKX:²¸pD ©P=u'è+ND:œ„J2™‹ ·±võ¡ƒ0%¦UþK·[ëhêhª ú!èA‡vº‰­˜’—¶Ø²»^Y’#ðR]£ñRâÔ.5Ä–´ÌSßÅHÀšD¬c>Œ,âçvããŸÆßAóø¹/®¡÷\\Ä +`j#hž³Àø¿t›Ì R€óIÔ Z¨‹˜\q­Éi³Z/€q%¢*Hâ$BDNz­8ÊfLÙŒi‰ð޹.ºJèêpµQ忍Í*Ù¦¶©$iµ%9uSSæm£FÅåS2ÚØ*£iÈç]–XŒ9W0Éó©–©ç™ï:©¢bY76y PGÀ—R(‰‘¶2C lLÑ:V›g5ïWˤfµÌœØ5ÁnqilxÎË•p:Gk¸ûÀÙ&í–NsÂ+Ü;ÒI‰ qERœë- “~Çm•¶qÏI-Ü ’ʼE].-‹6¢•ÄIˆmDwôlÐåp·8 óìš.!hÁF"¢è'œO,$¹boR*%ºx+Ên’&!ýÅGÄgÄ·ÈGäKrFü‰¨¹$O,.—‹ÏÙº¹±ÎÔ …zd"éìØˆC¤»Œ;vºrïÿ\Ã=©ó“ëÁÇ9>Ž¥¡Çõ1ø ÒFËF•°h“ì¢?׿P^à8z–ÒÒ +ËRÛ}Îîåžå¾åþ¥A‹è$=Π;è÷EWW«è*rÞÜçŒM %==Tœ¡g4fÌÉhÎØ–!„2Îf -wÂìýF±ÉóÕ{Ò½|Ù1½é†äz?‹èM‘Å!Þb~J2d@Øí¼¼ˆS_]òÇi+öà~ø>c‘qÄ8h,Âݿص럟8pŠ|pjãœÝ±^²?bC³_©åÓ¯.Ç)‡ô—8AP*ÔŒD¦–Š4Æö‘‹vNÚ0tæ/>þÜüê–mãyß<·¬u†ÃÓñ!}Éhì6©ÏðéVÌ"ôça>Fô{*ìƒìãÄ™êL {o³-²ßvBVIP|’Wéa«±ÕØEI“n›ÛîÖzØzØØçÙîÐÞWÔ…òÂÀüŒåòòÀÒ Aöºe‹Ý6Ê6϶Äöí6Þ²ZÜV«ÅnñX}Þ—æÆîmnâv£P˜‘ çA¨Ñçõ\dÕÀù -w›Ð"´ G*,›Á¡Hq„Dž+©–u¥_bb!Ý›ÊñWÞÔ ®X5}±¦FГžÀû\a®‰DŽ_¨ +AûìoŽ5¿ôbã]3÷¿?>wôS+ÿvlfå°Ù{Ïð‡†½yÏ“¦÷\úŒñ®z¦>ܱ…š]×wðõžYãÁ‰/è¿Av +ñQýšƒŽÖŒýy¯RÁ=‚{ü±)ü”¼Û……ÖÛó>²Xê•1¶1Yõ‘é–©ÎiáyÓ +d,ÍX¶8Í×Ò]2ã¬Ö§‚ñY#"/f½¡MYM‘»³îŽü#ë!¦X³³²#Öx¤V©µö˪ŽÌ´N‰Üa½3k…ueÖve‡õ©,¸‹V!Kˆ”€Õ›%fE+ž±~=ŠÏöãÙþ­~â?D¦ 4ÐBFÒpZW7‡b¦–Cq¶P>7âµxnÁmXÂÿ¢z°B£˜v-ýß%|ا»|q_­˜ vËÌݦµ@D\‹¿s$èú^ +óµ£êv!½g½¹6c¾p<›Ëšbçb§“õÜØi°vIÕe:tY@´Œk#Ì1KÖÿÜíªÈò@­7v;Yë¨nwVXCÎ +Å,vÖ÷¥n³@ŸµBñ³âªˆ]ùÓùÚÈÓKée-Ë*:²VgÕD¶+Og)(™ÀBöË«ê¹æoY¼Ç/Á‘È^ý{©‰,¶z1‡‚[—­YwÍuñƒÿj\¶ø»§±ûDã„ë®»îTTØ·¼3ou½`|mÇŸ¤¯[~Ljø 4g·ÞcïøÓœ—§þûMkÓMeYñœ¢©·YµèãY3|‚N:2,Bl)’‹i1?\ž#7ËkeQÀ<É¡‘$û|Aº˜Ù[ÜUW1„‹Ñb&EÐtp¶ádi&k %©ãÙWFÔí"À36Mÿ)ýN§tR¥é~‚á(c‘1þÔBï7†Ò—.\¸x-{G #F@+õž¢$Ê¢JD ÅqòXm½¶Á±Ñ³Ù»C;àýÐó¹p^P­ UbŽK¶¨!ë;Ì©× KOžÖ˜ÆÍIkN#¡´â´mimi4 C| +Ú\€)‚àŽ€¹Æ’ô*™]¨Lå 4¹ îò™,ëQ6O³ÁßÄyªkÍo5q^ñÝ'þôÞG‹Ü`¿8Òsü-ÓÖÿ‰‹]2Œ '××OÜ9nù}.ËÏÐ?ðÏ(OZÓ=üaeŸåu*w£Y|‘²l¦ò›•‡-Rrò{%l³ +Ì–ÛÂIW†/ÂlÈ[ö$#-º‡Å!“YK8„Ej®H™2sE¬a𣴽/©”µ&Š÷j´&Jô8d ]EàùUq«ª" ¢’d·$ÉTµXRA <„³ ‚©…ãU”%AE>3<£ +’_ÑG+.Ö•pD=¢±hš–{ßIpÀÚ‰‡``HGCÐßÑ t4ø‡‚ÀqZê×=ü9Ì-r°dÈ•x¹ºJúÒfÒ”ò?Ù¦‰AÅPq™ÁSŒÇqÑ'Øÿ[ŒWO@ +Üw—E ¼Øjæ="~”¹ +Ò[ÌAÓ”t¼BŸá·‹ÏÈO¨ÃˆÂ}êFü÷¿A|D~H} +?ÁÉAìópT¬ÇcÅû¸•üJYŽãÞ" (!Z¤ô£×)×+Kèjeݪl£п+ÖrÚSynV^£o(G©¨YPENTÊI<ÎòH†P0DÀ‡† ª!Ä»atÀ6`"ÄŽ*}ûüAwyâB­ û{¤ „ñyD@ˆ —ÔªÌéQS&ÑÂ`œ` ,±vØ=ŸÜCE—×Z®–N;ü¤–TÀÂåÆ)ó’õ›dG\é›ÎÆ´[MMMhnwœ”T“ø?½ðxÅ!<Îè ­ÍÆaãé GŒ|üaGϾhðföÌ®h/¡¿°·—Ö¯UËÚL9Ês"å)Ç'÷C»ÙëIÖDæ¬b*BÜÁˆ¯HÀ‰V2 ô£ IÊaâƒ{ Ä·"Ç‚8Ùw_vø¦î‘}Ø[±€vâád6)…Îó§8“9 ¾ +G*:–®\‰¶r™ÄÒ˜0¨¬Î5ñvœÁ×ãz<éøœÌàFtrX”3ˆ&v%!±Š§"×áâJÒ¬¬Q/³¢ H20M®¥ÅJ-àXà°ÇË‘Ž1´û¥O¸¾Xå\øâRäÇÿÈbã¸AI¼Jı,6üÿ+‹+Åî<û}þ}–ÆíÆ,zW" ÷ ê|ÁMà×ÄÍ„<í TIJé8–‹®5fíßÏ"ÂA‰/i7z-Š ܤOƒR:Ÿá N˜>(çoÚ§¹G &0.:50-º4ú»ÀƒÁíÁƒi¯_O³‚ÕãÞ\!ßSX@–’íÂ>áUÁòBü#dd—twZ³õX·x¶ž•›@F|vö¥l’]cf<Ûìñk20ËÌjÉø)ƒfdâR¤Co’ñcÂzº£*¬§i°ñãáVrû>*Z¬J!)3k8lÖpF!œ¡ënµK÷¨”/çYë3-[-$,µ[t›7n ‹ãx#HÄÌ(ÍOðáO}x˜o‚o¶óJgôé\i¥ÕÔÞ„›Ù:mzcÀ`¶óìÍø,–”£ÝE¸©¾½ÓÙÈN´HˈΞœMbõ  œMKºžM L•åö`™·^çöúÂÌ7WÕ™^Þ£<ðc'›oïÍt.<%{ïç[k¹´ãkU¹O4ëöÈCõ+­«ï».½< ÕÔì^>þþÚôœPúˆþ½÷œ%þÜÊÞcK¢åÙS€äË ™ëéèуș¸ wW+ÊÓ¤çXa¬2Ö;Ö_Ÿþ£(”ÑÞÖÞ®²´þ´ÖZëêŸö¸IV,60Å(LØÍ‹nÆ —ªÚ‘â KÁ9]p-ŸpQ{+ÎtÎA,“ Q•¤wSåöŽÊ/†jM)˜·3¿Ô}Sn¨®ÓÕ©ÂTeªwªF:ßPÌ·,×%™âëq¹}¿$º,Ã{v¿d¯ß¥;ãƒîh¸wÉ´)KùCg2Î?g“××o!O›³õ™ý=jæ×ÂÜ«@èúˆ:{½³Þ;Ý>Ã9Ã{—ÿŽÀ²ÁòªöªÿCí¸ÿ+á+é+×Wž ‚«§«§g°s°·Æ_o™a{9˽å~n¿À¾Œ_j_xʹÃ{йß+ÛL„¦Åm¦CëŽÛJ­¬'Ð%nÖvGÜzS¤Íœép*Òá³^FEV¶c ƒ0#˜&†Ý`]Ÿ_tEÃöعö{)Öp:–|# uÒ~6uf ufu Âå|!ÚÝøÆvÓ°w-ž5|ª»cçÞþÊø{Û_úœ|[2jôºG¶\?»èÏ/±¥XÄ9;˜ ´›˜ÂÍZ½«³^¨WêI´lh\å9]š»^\ÜÒË æúY{ú6ɲۄ‹ÊP£ÛTÑfV(¾|›5ŠRìv\ð–u•—gÈÞJ1Ę*1¹vf®†V¬3„Ê g-BC}8\–š ³´Äçã+¡B'ûìÀ¸h¼´ûèpõ»sâò%Ó&/Ûr}=ÎÅà7ãÀCD»4gçu·>ùÄǶšyD_Ò\ÀŠ¥ã?DÈIZ±I~ĺ^{Šß¡–[[ƒ’äÆÉ¡FÖå)ë~að5åuËqå„傸£ÕšnO÷è !<ºÍ·{^ð¼ãá<&ºT™µÍ5¹_·ØmÎá¶F±ṳ̀í¤Åq©ÓLjÈ%“²ò“u¬k²ö§›µnuºùœ {‚Ó dÞCU§Ÿ‘;[Qy’ *ê2¡Ëì.[»Ð.ö°¤[íq xJÆ®Êrh¯¾¡Nwûõ*'ó™r£¼XÞ<'ˆbF;˃fÙjŸHà‘*D›ib1œ§)5¯_æQeЧ™¶£¥œÄ¹±Î”É“)“t?¦Æ¥‹ƒiôâIˆÁ7Fàíæ=h•>Ä+Fů‡¸_â›}Yäq[5‹&ÿzDÔ#Lаö€lÇî(ÑxÌ×0?û¬¥H^Àëõ"³P˜ÌÜÃ4}âÀÓþ¡æKŠÔÊdCçY¦véUãf£ö8ÜÉ$‘òÎ5Ëûq lü‚‰=»»#öX¹39™µ/¾µãF»ý,åsâ÷p?0­º7ÁÌ÷úž­Û}²Çê0ßÐêwºÆENã\B®")™Ô)ÄhŒ/ +Ä©ÈZKkyårŠ"sUy*°OY–‰Â)ŠJ[É-z/’*2E,N±5Š›f‰NKÕoR¡ƒ™c¢oòƒ¦`Q}çëœäÛnÃwæ°©½¾[ÇQçSšÛÌééÌÅXxo<Œï3Þ5~¸—?té<žoü¶ãFüÉ +ãÙÎï©L Œ2sô|†Q~8Ošù¾?Ê—L8ZÌoƒ>ù©øâu¢âÄÿ@c +©Ï¯RùE‹6‚¶ÏŽ¢|¸ºžÖÕâ¼–8—âþx¤é/õ÷÷‹XB\Qþ(¹1¿9kþÂq»eŸ°ÏÒ’4ÿT¾ åå‡/äš/äëÁôx´›Íƒ¼¦b0ƒ™ÃÝŠ6­"5‡#7-==š A²`×¢N‡>¾¬Ñgƒ€´’ÝL‹f¤CßìtܘŽÓ¡ooN4šË<ÉÝåšÎ•\Åj½Œ;NÍÕû@©„’ÏÕ{]/Ê}'÷Ó\Ξ›™ÛœË¡ÜPnqn"—æòþYÙ¦^´$m@åyðcÀÔžojˆUþ¢’ÌEG0 WdßÎ1s‹c®°‡Å}>3úóyM•{YEý¢­anUÛÔõÅ5ß0ïñ<ÐY¹#zOïfœéRÕ£Ïô®Æ]÷ôè1cFO¸¡ßÆŽz2á÷Ý*®ZoR³y|aÍ’M—’ù4´xæE[u¿èò¹ÆKÓ%ÚJ1pKë'õ³¥ñ‚©²¢Í*XT\p‚£^dªl„ì;§ÿEe+jÔbcôµZ-—5·Ÿe:ä*ÍmRê?”wR0:½÷ðUªÚ$(pZoœÉQ1èö(@~Õû Ë$]žÒsø’ÝF&nÙ[=}Éo˜¾ ~ù#0S+Dqô_â3Ò®=ô5ò%Oœ> “zm¬k¬·Þ¿l6J,­ò1ò7þcù˜å FøÒªíÞ"^–^µðó¤Â‰s˜(T}ŒDn*º+Ä`cÚœ4’f £«Â®dðš F:­º0uÒ=Koš¶X;|²ñw£Ã8o|T3¦ã+îàžgݳãñ­ÈeqåæÜŸÒó6ðX¶áQüT~Ï9ëlÓmsœT‘í–L YcIXH•e˜…XZÉ=_ß”<$kr±ç<ê¤N EÙ+˜?!Íx{Çà¨:ˆÓQçrÅe8ŸgvÑt¯€îŠ’$)šPm‹oTmK™™k_Ò³Þüþ1I‰¤£-8ð6†èêYýëÇ ¸¦÷È"Ý0«_ÙÝúì4þæX xÖ`Žä%½Mp)×çðE6:7º7ä>\ ‹î7q¶´½þKÈ·Ž±N±>¬npîÈ:hûDôì~ÑiY“£ËœËÜK³îÍ–Ë£ý…u°u˜½&Ü7KÌÊΖ[ÊÂì=qY¶((¼Cû­¹–¬¬¬ˆ˜¥ÞfYè¾Ã3?^ÁrÏ’‚G<ìÍÚ±6ã5¾ÕþMO´ +¾°WGâ^==3žéÅŸB(S*…‡ç¬É!9º?#ž,4ÓÉ@ë/ÄÅ…¸¨v ƒRŠÃ(¥™“ùúJUÒ.±L¦@la+#ù%жæŠ\Jƒ˜ßA0=ÜŽR«Øel {q4«G¸&<×û&ã¾óXÁ>Bƒá,’ç²ZH^pÅ´&OÄÁ—±ü%¯“¥¡)½š‹EáÖde¦.d³ö©=™ÙÉv h¶õ4Ø™eÅ=²j²6ZÊz%ëƒ,!œe±RD©X•šëê¾®U8Øší¬œäuØ>„“ù´7㳘CX3³¨y¦Ë gb¬AO g)aSðêpko©O‡ûút¸©O/+ûØŠ«OÏɇ Ü×îË47©oLPímâáÁD¤&o&(˜?ì»…†&öÃÜd3IŒTFAê##øiH~ÁšxC—Ug•=6@‡o÷[+,nKÛÝma9 +_ïR+P*Å´þò÷Iì‹ÔÜhnvnê¿\•lÀ¾¬dc1:o½é–ò·gñìõ‹N~~òƒ<ãGÇ„ºÙÅ¡ô(~±¾îÜwuà¢ØÈ1yéE!ÛQ{íØM+Ÿ`U÷kûfz#]<éS×.ýÝ{- E™‰/É:þQ° oëù!!©’oïel«·‹òs^ò9]nìs7ös²¨ˆ?#·ù¶ùZ|\#Tm>Ρ÷nf*sò°ÿXq»n³¨r‘R„ ú`~rIõ²¤î@pá¶Ng¢¶¥ôDoБ;ÑÆ.%ó´sfäÞn¾ã€SO›Žv*roÀ¦»Mšú„T"€#RVZ–ã w¶©¹é¹ƒý“~{ݪ|÷Ý8H£§ŒÑ÷ÄÒÓN”ŽèßýaüΩ÷Ÿ0V}î-3ŠFÁ?Ø¢ûÆ9¦9Öóœ,„JRé¨%µŽ3D4#:U½Hñ¸ÝŠ,¸ÜQ1ióš^Brùâÿðdé²{ á³–þ÷À.ib~å4$—ñ¢Q–úàþ% ‚ÚëÈŒY;¯ÃÌ‘UçàÀÖ1“nܹžl3ü§¦ô6ï4nƒP æ©‚4æ©â4ÝÃç‹â"Ûl#± 'ö@mi¡`¯ø# œ*IŠE…H”8¹ T²PWõ5Õ²}V÷f„â +âU7 +¨9¨@£^ê2$§Þ¹+Øj1ï¥Ê¾8ÅHÆRØ»>öÊ,ù]wªH¡ª"Ë„`öå +¶"¬ûÓóâª5Óüz…Z}¾ ¦T)ÃÌ4Ãb]¥¤B¥Utåè!R Z³n·”!bßþâ€å•m©—°1ÿvóÿˆÌWáf;ù%ü:+0 ÁíX[%3E½Õö±×.@£qîë½|‚M{‡  ^Çgûú{»v%]’4•!è 4µ\½;PVAQD^NC^Ò…:ø è–»(‹ÅL•ˆ¨\…0(lä6 +檸¾°pP¥”§²ªPK +R/ï–ŠÇb‰ <šËw•ó”\KwTÎ_+× d?P$/@ é~¡¼PY`Y†–Óeüry¹²ÌòúˆãÉ)Ç,_£¯éiþ´üµrÚòú‰žç/ˆç埔ó–®|kâ}]Në§QØÈ­‰“fKa-Kç1ÄZfÚD W2ÇjU‡Í¯Ó*äTZ…Gfi¬Õ™@!ÈŒéW$P\=1$•=q^²'þ¯Œ!™¡Ùªl„¥EH}dÌþc…@nA*qض7„ÖWâ`ÒWa©„ˆd>DÃÿ ©—í—¿`ßJÆÓü{UÝZ3¾°ÛÊÒ….€ÚWu ë9 jŸKVËaSYëT§H}e`&ظ\ì‡9×-ØñÚlßõöÏÿ>°06´²rñ$y¦c  Ì’ÛhJîF}Užø:%Ńøc|LÙI +‘hã"Y¹¹æ‹<ŽpÄXQS=nñðC}Ë&ݲ‘_"&]“åøØz[=£þn´‚F¸Ÿ!VF¸$õß,{@fÝúÁ|ÃØÀ0æÀý<÷ƒ¹°‡ÉÛÞŸkþ«O–¾DÖ|u®ã© öʤ€dþÌÇÿYiþgãW‹w¯ûùçK’<¦}ÀÉŒ'¶¯5†¢j ýüóÏwj(ÕùÇZ&¤ºHEªìD­Ü[h½ 9¡Ôˆ¨ž ÇgÐ pl”j.¥ÓgÑ8´oƒúAR‘è€óÇByJ)”!P¢P®‡2.UFAé×¼e'Üc»YÿÍßF×À³”õP&Byˆ‹†c„ +4‰õóVÃ="°¿ úv¢u°¿Ž×³sÍš]? †ã…°ÿ ?6‘ïG"ô!Øï€~/<ÿwlÌPGáù·ÑÛí°_÷Ç—A=êÑ©ñúÍý²k̹²9®`û@ŸEпÊH(« \ôa×Ãu™Ð¾öU— µŠ"”çT’kP Ô]áùÕ©y#sÞ0Ës‚ñ›cúŸË6¾+ Œ‰Íë+(oC9zÅØ~]܆úq¥&ÿØœ­Pz“·Q_ ‹ÁæÅžø‘@Þ ˜×a(<ŒºK(±ÆYÅïE¡]¥Ò,·!L· ÙÜ9àÁ^t§°=ýˆt‡råoQPÈAå@¿:¸ÿ8(Sàž/›x˜ÌÆøêLú9ø&·¡F(3áÙotÒ‰ÑÚ¯upî%&@×%Pf 6B™ËÆÏ/b4¾ÿˆÇOù§à9µ¬À33ÍsOò̓ë›à^Ø|N’É +Ÿ 4ý” ¼ÈÆÐYLœ¥Šy¯ˆ#;ßCí‚„ò6”u oP¡T°sàù +œ¯˜xÌ0l2|0lð¯™XÅÆžœƒ) «R2s \=””<áYtCªäÁ¹Œ>“f™¼tÞ›a‹a¦³61=ËÄýëlž SWÔñmhƒù\ÀVgÍäî{«99¦G¸ch-Ã,Ã[gÍè°Æä‘ÉDª~Å\ S2R×w1±Xì¬;iq¹~=÷+¬œ~ƒ†Ò“h(÷W4”¿êßÁüḂCä6”¼×núU½‘ñž ÏZCŸZCšt=F²è1ÌóÏ$¾â~ƒ†,2÷ÿ£þuÁmÉc¬fåÊcÿoûÿ¿rœM…ý¯ùc‰ÌçwL&Äop1”Pg ý»¡4C)bx£4 ·Šc& tÊlª£^¼ŽÊiª¢¤r Œ0ÀÔ»káþ¯áoÐýÀ¯¥¢E¸¯@7³Èq°PØý¡rŽ®Âܯ±ÔYwâõ×5à ӻPóP@îA9 ådªüÊg€ÇP0ÛÀô³i@GC¹?‰×Dûe|¾¶@ý@'>…Ó‚_áSü5.]3ÛÂô»i[@Na÷wΟéG¦ã˜ŽdzŽÙ¾Îó]_qýà;>4õðÛh|J®ó¡C)‚{<ŸÒ#‡Áµ=2ú¥ð~â°X•8̽™8,lJlg%^ö&¶À¼ó/ÛÔ¶¤.còÔiK˜]ì´£|MMé³GÌsáù¦kê$Üò7M‚ûþ•ÙU&‡Ü; 'Üïúº™~†ÖÂØíÜsÉ~: + e:‘·}èÎŽ«ÜZóøHú=šOóaÿ)¨7#‡ ¢ùÂKìšÄÛfß?“ÇX?mÜÑè ~ªc¼bó e‰7ïÿŸöÎ=>ªâìãϹdÏ&0„˜g!$\BHXˆ(솄ªñ•A“Z5¨XmßJ>’¨õH¥r¼U¥@ÄŠVP6»ÃÅ‹ÖÛG¡Vߢõ’ªµZ´*h_Ëí¼¿ç9s²¢µ}ÿègß}fæÌ33gΜ™g.ûY¼ó¹þ¹´Ê"´áwé^sî¹ ÷ø¬È•ÒžX7æìãû³ÆRï÷Çq뤬¢€ª»¤.Ú¤Žî”6Œºà4}¯Š½A)» ÝèO£{ýƒÐ?}I¹úÉ«…Îó‡¤ÞM¯?Çû±ml-HÉrþ!íƒãÀ"ÌAøAõ^tRÊnZ‰wiÔ+óûcì¦^ÜFp5bOìF€®ò­§%¾6´»×0¼†ç¶÷òC:îæzg?âV" â¼>Yì§BÎN~_¬6ʱBÈq¸ bÿ!_ãÏ(ïí´}IØ¿›î÷±}Nü5"êF¸ˆ˜ –¸HX¦+1C¹näp}=‡RèDŽÆï‚ùK¼{+)l¡*ã+nII£2‰—qüCª6ë ßF—šQºÔpàÎw¢=B/¥•¾›r ì¬ ‘ŽB Tªö-†»ÄÙÀñ$¯œlÆü1E/)«—ym\™ïÄ]Ý„öÀååï|Æ•—ËÚQNUÆÎÊ'÷ÉéBOâü‘¨§7A+MÖ—ÒzЬ¿;¼fkw9[P¯8#ÞoÎÖ€j`š³i5d1ä_Ákàç`ø›9Šæ#í§ cƒºÞÂèïRƘ‚kS$þ8&®^k¹^6Ö}y>^;O|>Ð%óiôGïÃf®¡ÜDÿÎ&¾·‰a^_ÒYœ„w£ôXiþ'wçð,øí¿5´sÐVA&Á¦û=ìlÕû1Ç|‘–\@´ÿ)¢¡Â|à„Mƒ»òsƒ°+ 1ío‡»×^/f3®UvåIðWººשô +\}ÖÛkgÿhWÿ-`%Ü/´²ýÛ!ï€üñ#Ыƒ„ p`äHø«ÚÃßÁ?`Ü?p*ø œ`Æ(þjp5Û#ÌCÿµòó¯+Ý5º@lN”7qñµ¥÷<»‰s ïùw%½¹ÄQRÕl¾˜¸¹Ïqç8žÄóü‡â ð©¹Ð9›Ò;¶¬ØÜl?*)öökbOjjMQ$ÛÎl¿²íÌö+äÏež·å™Egó<_Êå#q}«>Œf€lú=š€8¯ <Ÿ¡ïÉÀøú%lËåŒZè¼ÐÅycWúÜ'µmΗ/ÁßcYª7¦y}ëQ}ìÑcÚ¿ÕÿMÇÈbL¤¸"/ü2EâõÅ&q,þ¦t5vÿÓcù1ÆèøqúÛú½qÞ#u+„r‡Ž¶K퀮ü]Ù¹ßÔŸhwÄù[˜ã\¢]âù9êúÑmϵgrñ¾y$¼wß¼§åæLçuï}õÊøw¼oÊï›C Ò“ÚC4ýȰDÍ»òáÆè\Çã›ÿýPþÇä7º¤ÏqêܱÏY¢ý +¶ôÿÊï“͇ß2_’¸µŠº®Úsb»eû\ìCÔ™”}9žÅTÆ‚ž ü¨ãY—ð)½CÏyyžk¼ï|‰´¾<–-x,‰yÞU<߃?þ ôÅy¾êÇë2ÿnÃüõ=ô‹ÏÒ‡×øœƒ¾˜Äùž¬-¿Aç Ÿ¿ sâ™æ{ÎÙÃÉÁTã*oEÖÖîQ{)y¼6d}Ê{?Î#j}î\+ãà^šæ S?Ù‡p×â/EÜKxmJÿÿ¶Ÿ¬!ç(YÌëS<^ù†ÈÓ=nùTPgަ¡`ŒÚ§:ߨ‡´×ŠîbÙ“ÙOó:—÷ÂÒ¦;RŸ¥;ü¸ŸÔsi•Õ‡V™WÑíi§ÒÝ~^CîC+x¼òÆUÔý¡NÖþx-s`Üš¦Üs¢M å~uŒ³6>_OÏ?u3ÅÝRëìǵmN(_€:_ït^RëžsÕÿýŽ1?q~5 7‡H~îš,Æì”nH§›”]ê8±,^^¨—ƒÇ²…<ÛD­Qñ>Û<µ7d©°± Ât6ž×$^3K¹…rÌE4EØyº#l&Yc|YÚì".§éîÛå©6w»Îy_§,Y“|Uöðæ+f£®“=³Ý²6Å·ðº£CSPWïVÎæzäÅȾŸó´b¥9YÚçIªmæ™_Ñ™æCÒfzª=Á sàºk@­˜Å{o²¿'Rêj7ê}M’{äµ¹õh·¨cµ¬žïÅõ§k!ÚëF´yÈw"Ù¾»Á”ãûpóhþ9m™ó®n‚0QЄe޾‡xï—÷„Õ¾Z¸÷Ã{[{9žÄu÷r™¡Œþ°Ö_ízî]·„½ Ø«Xâ9ûõOxåéë(×ßÜ2™h« @çb…úò yêêH&$]–%‰ œeA"*<7„³,Oáå”ãXñŽUŽc…&‚ðÂA9Ž•n~"Ï?NùªAxÕ7(DZêy`"xœrœ“ÂÏI,ú§àIÌQãñcõµü;œ§CÎÂy¯s™ò?§â]~þslEà¹4Æcçcðs0ù0œ—ÓËÕñòq~÷Èï¸y±î¡­nÞ‚ÊóÐ:UÖÇÁæ8?—yz×ÍOòF9mqíç^¬Ê÷A·Ü‡zC6ºñù:ߣè=x¯Ÿƒ~ü ßÛÔÃpÙaîïÜçÚL‡ZU]®uó=ˆy¢s(V×îè9Ù+⽌Õ~ˆ%÷µÒç^AYqc•·gý3îï|(yõõÁ†Cil7p.óIôû2Ÿüƒì«_* Ä8ò*üBÍh‡ÝÑoÞLƒ9Ù—™ÅçYœµls¯ÒdFl6«Ã<¤Nu¾SQ¦/(éçY/Óß…|¾DƼ¬Ëáÿ>ìÞ#³èjÿjZbíÂuƒ&b¼šà…{s[ß|ÇIF'xò„S©.õ „ß [*—ª8?kñšN™—wG=lày®‡´VQ@öµÔz@‡ôÒàý¶Ý´’ÏJ$Ú5žÕaߨ5‚Ž<Ôý°ä±3îþEÆÙîšB Ç{c¼'vG‚ôÊÄûx¼—†t.ûk]h]‡±õšè{š&¤L€~MðçRÀz€Nbû̺ m“í5^à PqÊJÂ;îLÀóyòQï÷¹êûØ úŽ)n¸¼›;x¯ +ÿ¸\á^çkÎ×}ðS7}¹vƒÿ ÷U¼§óâ »n#ïìW쎫ç»Ä¦?Zz{÷w(»õøòk®¡ñ;Ìgª:ÙãO”¼?<Öóãý|Å…m9çeÏŽN”î~¿Ø°¼ï¿[É·”|‘ÛÛz‰2ñüʱγÛŽUï™'<÷’(ë:Îåt!͸s2ɯ»v'ûõè§ä¶e  0ÈG|ÛÁ^…ò»çoœƒ¾œ]ÖYÎ[üðÙ†m©ÎêÇšáümð-ë.È—¡ó™#±íÅûϼvÃgl§«¾¯êK¿–ÊšL€Çzm›Ðÿòp-Ü…×óÁ~=ùû F +Ü æÒæ&Wj^-së.Fy \ñn¦‘ú„ÒÀ™ +޳ 6_+—xAý#äq6¥yÊ=×Þ~wþ.ë +{Ô5/Nùá8)ŸÐÄ´»aS:[RÂÎí#êgÖðù!'àIâùÐãÊŽÂÛêL«yýõ¨sÞ>¹’)Ïј”Û(è˦y)'Qæa_ÆáZŒþ‡Ï_OsçD‡xnw9Ÿ'æ³ÄÆkZ·o' O½ó^XYê̱H}=9÷;MÆN9K¯±õ¶ÞµÈäü4Þ5Ïεêi©ulÉûè|ÕMWk]=x\‡{Œ¬ ¡r÷ •SîÚø¿SÑ7t¬½²ä3mܶ”-Èñ7Ù|æÊ)ã½ +ãt>¯%ºg€3ÁlU‡g!ÝÕqûO›˜Ä3ÿßû[‰ûSÇÚ/êêlFWg5ŽòÃ=•ij]åèÊÔLûeæ{ÎSlCs?jõe·óxÆ€›A[vpí ´¥þˆ÷ý3¼³ob|ØO¶ZÍCxú¯,ó+i·¸éÁ>/5W^›oˆûžÃbØ®—±]jlqžæ~NÎ!’¬Yž·VîX§G“¥¯EŸªÖj—òȸ:!lŸÛgIŸÉ}¿‡è¯Œ¸þ¿*ÐéïCã×n9ôy¯æÐm.<æZÃc“ôº›®¬C­¾ÂcŸ[ŸŽxá®ì%e_z6æÓ‰þ®ìBÄy>žÄë{8ïðYØ ÏR¶û5ïRg£}'Ë|Eú<˼¸õ÷‘jÍy¤<¯…Ô}JÞQóƒfò³õæô¨§ßª³%ž¼ÈEÆi®Ç¿H_©Ñ’ú8Õî|b×ðüŽç»{jîçÍå²UÛŒ{» ãà>ç¯Æûm¼ß¢øÃåV{þÿÝ5z?ÅC¨‰ âQÅ”ý¥¹5x¬‰lXÈ/5Ë% ç [ˆº]í’ŽkݳøÅ‘dv#ê1‘¨g)@K:qQÖN—^µàïD½Ûˆrúå6õ¹’¨/Òî7Ñņµ8 4åÏ%ˆü QÎÁ× AÜ"RÔıÀ¥ø.¢áh×%GKM|èd0jÑhP†qá”ј³A+ÑXÔÏixâ§#ßqå.ã ‰Ê>a QE#Q%ì±3†¦©DUó’$I’ä?”-I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$É×Bã_l¢=tÝJ>Ò)“Jø›«¾}úo(…ô–š¹átcm¸ˆÏh…Œ 1+=j…ì™%2š]Üì´ÁqêÉ^|Gpî6c=]D'#x}t¯…*‚"OëÊ’"£~÷²•´Ã¹P+:e(×$p+Xž>h=½`k£m¤ðÊgàöBøÜ` ôà^ OUˆ‰RÝKíÆÙß/ZyÆýÐÊÀg&˜ 6‚ …fâs p€×Z\[Kº±Ö¸/šig†ÓŒÕ4èÆ½”¡ñO–¶wÇ2¥nî‰eœ …3;©è1þ‹Ú€ŽdW@méˆ^-!UXKëÌDüÅ(ôbd1²lƧ&þàø‹c'fsò?‰fô½ë£¥#]G,3'XZ¸–4c†q%å“m̆ìy d_È‹K)]ÊŠedç"¿ñˆ>ÞèECp9ldS²ÂÈ¥<‰ÖíîæÓ<4ˆ;ž`äH” #FBú +´[Tþ‚Xê \¾ÑÌ^Á'Œù†EYˆ5±zÛOix²ir'5±Ôôàòp7£·Yƒj±QF µ|¥$te …{•FÊÆµ}©äD£ŸÈûh"äªXa»m«q»hÝÆ‰"ûqnÓKïl §ãp5b,ÃX&™/ž¤p¡1˜JŽ:ž×iô‹àZ„§¶OjžÔ"jZ qe!â”×Qƒq -kàæfÕ+Š +Ý,Žƒƒ›“ŒTLæVT¥†ÐÜXjw.YN´ç‰-'Ö­{püÆ,´óYH3d4Æzçgn5†Ê­ ‹åä±BCÍõ £·ûh ˜Íä £*‚+¦¯Ñ/ÚËŽ„mø¹!Û¤é/è;¹’ôßë¯ñãÖwÀÏòE%_RòeW:múN÷¥Ð_aÙî£ÿ‰]¤¿EkàÒõ­úv*…Âz+—B]ßLã!wÁ)äfÈ“!·Dû?g·ê­1”}e4=›oVß-*Q»@9zç)GÏì`¸@ÿþõA€ù”ÞF Ÿ„ÌlÓé9ÈÇôQ4òWJ>­oã&®?®o¢S cÑî\„HÔb±1êcñh”\_u‰½MT_O¹ˆúH´0¡Å +Ú[‘ž¦? 7FûÚ=Ãiú}Z­ö"5Ó.–ÔS_-ãD–G·ìÍúr}y(§,T*­3J J‹Kׂ@q ,°.ÎÔ—¡Y£ãýÕ㳌:Zåú¨Y Ä=ñ}é4ŸÍâªÇgƒ¸Ÿ™W?×x}>M:Ò˜ 怹à&2ñy¸Ün”FЮAoÒh4@£A4 Ñh4ˆFƒäÞX£õШ‡F½hÔC£õШ .o=4êE£ÕШ†FµhTC£ÕШjhTC£Z4BÐA#h„ ‚F!ÑA#h”B£¥Ð(Rh”B£¥¢Q +Rh”ŠFh 4Ð@# h LhdB#™¢‘ LhdB#S42åù4Öh‡F;4Ú¡Ñ.íÐh‡F;4ÚE£íÐhׯi1v†ŸÊN¨ì„ÊNQÙ •PÙ •¢²*;¡²SÝz£T†Žf3Ìsë¶A· ºmÐmÝ6i^M€u#Ј@#ˆhD Fш@#ˆh4C£ÍÐhfh4C£Í¢Ñ, · °Æ7o”ßøÑè7iµ~Œµú\mˆÈ9ô±ÈÙ´KäÔ"òZ'òzš'ò:*y ŠDz"ÉökQ»,#œ.`¸ÌkÀFð$°Äµ¼}Th€™aM²ÖX­'­”V»¥gø&ùÖø6úžô¥lôµûô@8OO—~] Ý*Ÿsðù)À ‚Ïñâ¯D¾#Ñώ¿‘úÈPOŸÕv ÕžªmªÝ:T §êßÑLééT¦£àZm¨[á8{(+4=Ó²M÷¶£…£íVm›+†„Š ?-`˜Ê@ƒ`KØPį PInƒ@à,(;›ˆzöð‡6ëéÚºØ3é”Êù  ½­ÑA¥­ÑA“ ºØ§j›h[EÚcxrë!7Fí÷qùWlˆÚ[!ŠÚ#!.ˆq~tÐKv8]›F¶Éª5JNÅ}³œµÏE´ÉQ{DQtP!ÇŠŒ +puˆVKïC(­nNùQ{,Ä€¨=†cûi?xÍGÅR¼ÀÒˆ¡@ŸnÖjM-t‚ý‰}»ý1Ôw£bÑ<^´š; +ZµsCiö¶âÕˆ¶£á4Žñ¡EÉËÇìu í•HK+Ødßc·—·ú¼å^(YDíyV}}èD{®]j7¿oϲϲ§ÛSì +µ¿goãbRV«¯ßdW#Á3qQû;­Rĉöí=ÈØÆõK§¸é–oã  ›û0ÔïЂVnãÓÊZµ¡¡ÖgÖrë|«Ükå[¬~V_+ËßÓŸéïîïæOóûý>¿é×ýäÏâßö-âß|ÍòÉO¿úLþ4Å©ó§Nò“°ºæ×é,ŠœhTéUS˵ªHÛ%Tuq ò÷©ù­ZÚäïFRò˵HÏ*ªª)œRTÕj9S"eEU«úüÚM[V‡Ðˆ¾ U£šÚVÍá ùy‘žp‘æ/ÍÛLšvÒü¥uu”“}õøœñ=Çõ3±¢“zõYtø/'ÞÙ7rWÕÔÚÈÃ}ë"Av8}ëª"7M |¯v³ž¡§WVlÖ»³¨«Ýl6è•S8Ül¨¨C´÷%ZswD£A,Í_Nކþ¤œ£á¹ñ +¡ŽxýY ^Z:J¼Â´t‰gj¯eW ²¢%8D»$ήŠ‹ƒÝŠ–ÂB‰•Ðj9–V›‚ ‘„lQŠm‰¢Á®“„lM2‹”ŽR ¢Œêˆ2Jò2´Ãql7NÖ`/NÖ`Ä)ú–3Ê‹´Øˆ¦ÙÛ+gäWÖçWÎõ‘ÅW_ž™{q Ð2»‰/"FaýÅ—\ÎrúŒHSþŒŠÈìüŠ@ˈí\ÞΗGäW´ÐöÊšÚ–í¡Ñ¡•ùÓ+êbãO« ‘×ÂŽ¼jOë$±Ó8±ZÎk|¸“Ëa¾<žó +s^aÎk|h¼äUy·ûêÚ?•óB‹Œé'¤¡ ×çõ¯+ÏÎlÇ zóØþ9³ó¶˜¤=D'ÕEºå—GÒ_*‡ùÞ3¾ÔÁêRÎì±ýó¶h©K™î‘_Þñ3íÄ‘ª"£&WEúOýn-7•HhzçÏlÿÉ媼¢ÿáoð/>&Íêô¯±³¿¦¦¦YüÑT4‹¨*2tjUdôd”IJU}E†{a†!a-©©•­N.¡Z#gÇ®"­5JìËÒ›}Í–ÎS…ÆXnßàÌ'0‚ϘÇé×DKdú¬_PÀó—ÆXÉ(WbºÊ2šÛ?È¿$^U–® õ(†cyÁòâåeÍÍÅÍe>„nZ‡@{¥Ñ’u5Íò*ÎÆ:T6ÿÚ7ò»/Ú§¯dÜÌŽ¢¢º¢Yòß”XÕEêGÄQé;K¥:K’oôˆ>K%‚'áæÞä©5)%¹Ø$Jn"®¯ããð|DÿߟE +endstream +endobj +537 0 obj +<> +endobj +538 0 obj +<>/W [3[277]9[722]11[333 333]14[583]16[333 277 277 556 556 556 556]24[556 556 556]28[556 333]33[583]37[722 722 722 666 610 777]44[277 556 722 610 833 722 777 666]53[722 666 610 722 666 943 666 666 610]63[277]66[556]68[556 610 556 610 556 333 610 610 277 277 556 277 889 610 610 610]85[389 556 333 610 556 777 556 556]404[604]]/Type/Font/Subtype/CIDFontType2/FontDescriptor 537 0 R/DW 1000/CIDToGIDMap/Identity>> +endobj +539 0 obj +<>stream +xœ]ÕOkÛ@ð»>…Ž-=ØÚ™ÙµÀ¼KK!‡þ¡IK¯²´2†Z²sÈ·¯¼/@ þÇV˜y³l6>=L§[½ù¾\úÇ|«ÇÓ4,ùzy^ú\òñ4UM¨‡S{ýTìÏÝ\mÖ‡_®·|~˜ÆKµß×›ë—×ÛòR¿{zúýaû¾Ú|[†¼œ¦ãZÑðó×Zy|žç?ùœ§[½­€zÈãú§¾tó×îœëMyð­øô2ç:”Ï ;è/C¾Î]Ÿ—n:æj¿]_Ø^_¨ò4ü÷uÜñ©Ãøös¶(¥nˆ,à†K=Üв”á†C)5[¸a`©2KnY*Qa_•†%ƒ+¥W„¥\1–ÊtT8cÓÁ•ÄR™Ž +gl¸Ò•Rà(Eá@¡tD•}…WÙWHpUYÚÁU¶Z¸ÊVCi’*[ \DQÙjàêk«®rCkÞ®ö¥$[¸Ê¥IW9£¸Ê¥‰À5.M ®1 ‰pIH‚kLB¸®¢1 iá“®1 )§”ϪpƒEc8 áHÉ€“Ð×8£*ÜÈS¨7rFp#gÔ7rFåž‹‘3j 7rFíàFΨ¸‘3j7rFàFΨnäÐn䨶…y¬¬žF p#Ã1›xÌà&†cnb8–à&†c;¸‰áX 71ëà&†c\}11ëá¦NÓÞ7X Öå¶üw-Þ/Îûî÷pÿ¼,ë].þr߯àÓ”ýÃ|™ïOÕë»ú ž¯yd +endstream +endobj +1 0 obj +<> +endobj +540 0 obj +<>stream +xœ¤¼ |EÚ0^U}wÏÑsŸ™Ìd’I äÆhZ¹ä‡\  rƒáR”ˈ‚®à-à * `8v,¯®‹ë-®Çºx®QÖeñ€Ì|OÕÌ„à¾ßÿ·ßï?3ÝU]ÝÓ]õÜÏSO5Â!­@Ò§.^Þ|ÿÐò0BâØóf^ûÆMõBýl×ͼæ¦öèU dnDhé=³¦O™vâß±CÝ~þS> ì%®BÍ=á8wÖµ o>†¼%¿‚íkZ&f'¿¦çiI¾…·¥7„¶£x6Ú‰^DGð)ø×.tµ¢?!ãZŠîEk‘ˆ&BËíè +ø +Ð~/ö%[QÚp؆ŽÁµÐ-è rcoò´­æÞ†­Ff”ƒ.E£ÐõèN<<¹MBŸò·¡ +4]‡æáɺä]É{’O 'ÑîOÉN¤!?š +ßcÉï…’E½à›ÐèS|²ð”på#h>zkàqrfòWèAÝ}àQ-:†ÛIî>}…½x)×îòx²%y® +¢4 =ˆâ2<˜D„IÉÚä1ä†gÜw}íAûáÛ†~N`“p*ùDòò¡žhŒ§ý·s‰Î•‰€˜P*DUpæzôô +zGñKäzÁ$ô aIòäD}Ð8èíÓðÏ/ñOäø.ç^æ%/C€ËÝÚèÐß°á‘x<)$דG¹ùH†'öï44à}?ÜýÇû‰‰ççŸåÏŠY‰Ï’ÀH =„A/a3Œ4Œà[ñ{øï¤?™L"Ÿs÷ò;ø·¤)0ê«ÐµèNô,ú Ûq%¯Ä³ðR¼ßÀÇð›økr)Kæ’¸Y\÷{þ2øŽáð· k„;įu‰£‰¿$~JöM®A£VBï7¡GadÐqô!|?EŸckØß0ŽàqøføÞ‚ïÄáíxn…§¼‰?Çßàñ¿ñY‚à+’‰øFÉ|r¹— pî+l¶Û…g…#Â)Ñ$Ý*#ùswöèü$ë›{­É¿!àÐPÈFÕÐû)ðøÞ · ½M;?î/ÁÃ2“ñÜ„oH®Ââ'YߟLJJïã Ïfd}îMÊÈed$|¯"ÓIÙHî!­ä=ò+'qgå\\n0×ÀMçr7q›¹î îcîsî w¾I^å³ù>ÆÇùÁüd~ÿ(ÿÿ•0Ix]øBTÅkÅ5b›øO©\ºD%–¤ Ò~鹨óhzuûàϸ•Ü@nº‹”ð>ògòg çÉhWK€RÉv¼Ž,í$W¸Q¼ˆ\„G S| `ý2ÙB΋¸Z< AsHŸÔÝD'ÿ ÕüQÆög¸ó¢ ßB~MhF¤ +žù?\1ç^G'¸O±ÄoCñ*öàò47 +¨à÷ü%BŠp£ç¹&¼ í#RÏÊëŽGàg@.ŒÅ}ñÏ\qdPQ÷wtšK>@ÀÇëÐ}x?Ý…JðRôz +¸¢P¸Nì!ºð«d6ßL¸~Œ® +çbNp¢U¸{Pü|ˆ¡ã¼Š>ឃÞ'Ïsµü)á +< 8`Zƒš’+ÑMBÿž‰8<åñŸt[Êõå#P.©2 dÚ~àîƒ .åj¡Å ”3èbHˆá{?È (h6ðøbF­âXÒ†f + R!þõÄhbò)ô@r&º.yêò`mr)Üq;úm@ÛñêÄÍh +ç|‚‡ ƒÈqaP²i&’1dó…øhça/ú¾ÏÃÁ%Â!Ô̿Ơšäúä»@Ý a@W£¡è$Œò{xÂå\;*IŒ »“ƒ¸y0ÞOÑèäÓÉl¬¢YÉkÐHt=) hŠ·à·`¼7£éäŠäBnzb6Àa@Áh-ùs»ÑÜØKšK.®¾¨_UeEYiIß>ÅE½{õŒ÷(,ÈååFs"áìPV0à÷y=n—Óa·éV‹Ù¤©Š,‰ÏŒzŒj ·Ä[øXôòË{Ñãèh˜Ò­¡±% Mƒ.¼¦%ÜÈ. _x¥WÎøÍ•FêJ£ëJ¬‡«Qu¯žáÑp˱Ñpž8ºêwˆÖ‡[:X½–Õ7²ºê‘ü!<Ð;k@¸7†¶ Z<«y`ã¸ÝnMíí?]íÕíV5¨jPkñDçíÆžK0«ÏÀ~» ’ÍЩtÀÀ_tíA —7pÊ´–Q£ëD"õ½z¶àþS£W· èe-Ö8»õgiû·Hì1áÙt4èŽðîžíÍëÛttucÜ4-:mʤºnJ=}†-ÏÐâYrÒ{þnnï_·¶ûÙ×<Ð;;L››×†[¶Ž®ë~6B÷õõpø/ÉÔØ<½€8lLžFV××µàÕðÈ0 Uj|Ó£iKãœp‹½,:«yN# ÆßÜ‚®¸)²Çï7$?Cþáæ±uÑHKM Z?e@p·5_qÓ^Ÿö]x¦WÏݺ-ØÝkºb2w¯Lï:ÇjìrZvEd1íQtDKxjzR…1UÒÝôJÔ<µ.ƒO=†µLŒÌnQú76ëýh;ý‹§GÃÍÿF@ÑŽï.l™’nóô#Z¥tÒEjp>So‰Ç[zô $"õœB/aÇe½z.n#Ñè<= €ØN©ïWàD(‚ïh3ÐÕpвbt]ê8Œ®ìAFQ¼¾…4Ò3í™3®qôÌŠÌ™®¿7F’[5W]-r¬ëgÕÝŽ³úµ`÷ÿÇéé©óÃÆD‡žXØÜ˜†í°±¥ÎWvK×Zýë¸I×H€cg('u]LêL-|üDFÔÓÚ$¨’µàð ½ñòÔ¾^DþË?µ%OѱâüßÒÝlé¿ðø¢ Ž/èž©™ƒƒª6vbs³zÁ9 µÔ‡¤  x4¶.îß‚ÆgæÁ¯-Ù^I·ú@‹ ëO/úK5¥/¸0®×ÇRg¯žƒ@Ð57І576OiK®¸:Ö£ÍÈr¤yÞÀÆ á´%Þh´¾`5 ÷¦ è²ÝQ¼nôn¯3±î€¾Âº±u{&ý/«ß çê„2X+¡­´‘„é†a{ˆÌ®0ZÁÎò¬Omȵə6Œ¦¶‘T›ži#ÐÆ§Ú ÖF?TÆô[×zKÖ÷j$˜Ø‹]B(b‹Øò`‡Aéž síç Ea¾®D- 7€W#€G¶l·Hoº‡ ¡ì24¹ZT•~|µØ㢓'QMç—5ÝAv6g UíuNé'TòÕ¨®ãª cŒ_WUmedÛýÞx|„~º¡ºVïÐOÂ-NêߣššZ½óËacêö +<ÂX¯Ö«ëëû;8[‰ãÊJ\_U|Zúøq| §à‰Cç~JÜ{ìíëUÜ^r뫆—ìç½9y¥B[òg#'VXª‰*(e#AµïYæ8‚$¹Zµ*+¢i.³µTùs|5Á†ÙVŠ}¦¦§½´‹ñêÚÎj½3ÞPÝYjªi§:«a‡möª*ºõ)Æñ¸ƒv+aû}õú¸Ï±bn/öœ:•ø&µ§ýt%¿âë…·Qeã>ÆÚ‚¬Ê,¢ðJ™`}ÁñBðÇ+ÁŸ³DL\Há9'Rц@ÓëHÑ$= š$Ýk¶JºÇbm‹ƒsz,nâòX|Äå5û‰+ 9g@Íâœ^sH´yÍÙ¢- ª@RœàZ›½Þ<ÅéñX\$ÏÉ›-åÙÄ6¼ß¨´XÌfUUPÀëõxêr:mú%I9r òÞköÜk㶪‘–-bYQï (÷Â}xûlUa Ð6²moxÇ,o\?Óï8©Ÿì*OSx¥öi¦öz'€ÒVUûµBïø2ýèÚÞ^ZXó744yѲG¤,â(áèVâŠrW„‹:"œ#âˆÌœ°ã•¡‰pÑ„ÍðEî›°óõaØxcÂæñ‰—',Âý†%þLJŸÙ„çnÂ;cè¶)±iSb<~&1žÔà¹ÀuÉO„|ÀP6xŠåøbãOK\óÝó=Kz/)Zã~ªèc$oÎzÜMn/º­œÜ\!­nÜè™!n—ឃ¸gB'ÜdApAYäŸ ‹ÐÍnÒì¹-@v¸žw“ÛBÍaÒ¬Þ$¯‡_Î'ÇÜGä ÿe'™]~ÐMf{¦—éEx|ɤr2¨db6©u_ Åþªl ä† êÕ+Ô«·ª¢€Ûå +»ÝáðAµ—SU{Å +u\ZêÇi5YÑ«ó[\‘ÃpÇ_³6x±·L4‚¾KBóÃY8«²²ðª­flÞÚ窰„¥9M÷3´uœnè¦gO÷1ŸßôÓE¶Òü|KÜàKè¤s%È­œ‹ó—¬<<±öxb4þ ÿíðÍÍß:ÛyâûÄ zipSÉ»ÐK/Zc Õ°¦p@åUÅd±ê6IÔ0ñR¿DB<'{ìf ¼ê©0Gü'/q2VEACH;±óEdô“ r6fáIdØ¥Èç›·>%jkOS]RÝÙP BÁî©‚ˆYVÒ¢O1jpT¸=0Qê"£|QÊ +3zo¹Üïæœ3W÷^¾äâëoì7rhåâ…}Wò;ïª,Ü7`ê¦Òžwõ°”­7rÝCÇmèí>hßßz£ÒÈF×)ä™»NDå:å/¾®†Œ%î3M˜ÈºØP{ºº£Z?Y]ŠNƒÜ:ݧ8Ï" 4ˆ"Á‰&¼á¼!ÑÔïÙNËí‰ëà9Ï$>Á·¡cHE#ö© |ŸŒ2bL-bW#•pp€ÄJ©ßH4]óVÐg[5ª*á¹§OêL~Ò=èÌΪ€ú—€ÆqR”Wì?6jBß*àŸcMwÄj}S®„ç^ŠÛÈr-H¶ž†o™Ç‘Z\ Œ"âæÁ>~Þtd'ô/QQmÀ¸ ˆ¥,⺔â¶}û(”Ân-ôžCy†—ÐÎV§º¸ ñ[áüV~[J€4½u¤:uðÕ͘ÆGIP‡Æ@\ò“=Î*Ò–üÄ;«îã0á¶p»8Â-F…C*÷5"_ýó{—ÀA{tè)Z¦š¢aYJöÄã.\‚ñމ:ŸðݯNªcÇŽµ íÀWYxÜnBíCõ‡xÁ2›= ì¿fŠ® N~ü&ÁËOÈ@¢XÀaÁˆàÓâj¼¥X£)p‰§>p@-B0V©p¢Ö(¼x$jE© ¸°„œm½ôí±÷}^´¿ù’¥ÙÏ~m2[5вc áWÒ´¤Øt³×áÇ™))Ùl¬ò½¡è:ÔBN!DIÔC/…èÙPÐgB&ÚóP9d˜ˆêñ„³u˜ÖÙ ŠÞ9F÷ÇPQíi ÝíK‰—t=Ðd·ö@C±ÚHæ9ŸšÝAÆ…œ´Þ{Üš²Š¦‘qªeÿ·§Qz¦Ï£Oc3Ê/. /Ї¤WäWƒÒS½i¬e®iše‰}‰ãvûaûþ/§ü¦µ$ õ,=¤‹HžB¿ ¥Øò‡T]Åׂ~g0è—ƒ~²?È™CzybïH¶µaï>:ÄÀaÅĤ.ð¼ Ц´Ž‘•(Œt\i˜lûjÈdr=Y^ÖA’ æ÷†Ý)b¹r&NÅ Õ;Õ5 'mµ“1{R’e8 5à†ùõõy®H¬0ž1c¨f6Püxé\ñä=þàÛ¸ùÖ‡ñÇÏyûÌåOylRhçÎK«§¶ßrô‹s÷p³ãø‡ßî¬{æðë¦ôJŸü’w¥Äq}qšÏkPø{ƒSR›àFU³Õd ©j¡+äC…A¡Ð5›¼>0#Â:%þ°£X¤—ÇŠ¨ô9VD¿È^USJ¤ð×ñ²þ²½J?ïK7Š¿Áì64¯1óml‹Üîkô9ÎiîE曜kÌÍÎÛOšU!Ì1ºÑLf /ax.¦h¡®ê!L§p̸¬ÕdrñÞƒä ä#³Œ|è¥Ý4ÛL_&a/¥äð +iAŒÉ¦F1=F Ç§_ gb{yÛpåßÛø ®EÒnhç¥UÏ6|ÏîŒÀbX¤2ët¼!%·:ORâ=Iñ™B'°* ¸7ÕƒAeCœTÑUÍà"Q¢{͉oÍÞ4wù®Ç–• wÚµmkæÌ^ïl|ûü¯Í1íÖ‰¯ß{)‰oó>°¶åÖ¥Ûœ’—M½uÕªð¾Wfî™6ùáÞ¡ßßÕžø÷—Ði?ÈüT€3Êíu¦Y¦M;L¯š„áÜpó½K^Ï ýH?&OSñR­©39žÝp㪘G¼¶wœOypîþ“ê 3è|{ˆœw ­¤ŠËéUÅñYYÕôõ€ ¸Æpš ­Ê´bT•ɈU™r‚PöªbÒ¶>Ö.±¯gãl˜lî\EùÝË/·&Êðä'¹ýç†>™ØL½©s.Õýá)±ãSœsaŸ™-jÈå +Ú©¨Ð¬< +š-I^ÐÌ"`ÆeT¦Q.¡tDÔy8ƒ2F¡É^+Ûóߔ՜µÙñ´ã¦÷LdÅáµôðsJ±P¬9ÆwèÕew8^³X‡Ób5‹Úò v‹Õpát§^°òømÊ> ÕŒ0ížm²~½¾\ß ó:0‰—1‰#¯î%Þ “x7†í‡q²âM@T•{,ûþ7fɾYγKµ(GØ@Ào ñ˜µrï¸XDLð1™‡›ÀÚº€m€WÔý~A.§–@lÜï]\skëÎõÖ츋|ØùÂÈUw·cyá§ÿÔ‰WèÍw}ìÁ=#kÜäŸÏ%OJœùË+wïùŒZmµ€9ȼ,ÔLK½l+ÎÆ“1‡!¼U3¨ª€ršÕFy:UbÌ‚ÓCbÐÃdž‡Ypž´¹uìcúÿd0 íÑŠÉ^s}x€d¸ø„'ÚdžçrÓ¤iòû´ðByQpµ¼&øžüŽÛ&…)ˆóSÑ1¬Üz€»õ_·ó¿î\¿)aOœmûh'þ¿ò0‡Ž +ôzP”¢ÁV +„zS v×»·=…‚ÝRL”ب°Ÿyq+õÓ)Z3†­°“V/—qâ¹ÌU\ùr¹.½ÜÅîèbäë:ï-\èŠP‹«ƒÓÉ ¬#b¦#bª#'™gbÍÈðôóiTÎ9´‘>–þÓÅÄ™‹ôüø2ƒgá¢t2å Š27.tq‰}iú¦XPŠñ2´ /åÊMÚ|Ó"óϨ¯ç×È+µU¦5æ;=oØ^vØs€SöÃ~Z„ÃE´èŽQö †M(äE&èÆÖÞ¸¤¼¨`¥Ì4ôø«Þ±bdÕ­ÄÚ†ïÞß×» \g8¿'w«Ë¥q.âÚØ§Ë¥IE¶˜ÈëH­ .­LÀ²kBMõõø|ȪË@Ðâpvã–çÌ»æËÛ¿{íÚ;g>ü0qæî«×̵úö3×õ²qÌÊí;o]þ4(¼ÎÖŸnq_aÏ£ë'Æí^Âcg­ºmòÔµ«Î%k7Ž|jÅ­ÏlÏø²”&C ŸOã[Ëgp†!”j&¼ÔÅ) õÚJmÌÓ±ym=ãZAˆFˆFZ8‹Å‰FaÌÌH³^¦š&‡Ñ*Gã }™éËئä§S)úñÿtyÝ:q^w=˜ò´1*þ¿<õÂgýæQEÝd”öówÑ+Ý¢3¸kÜ×úgF—ø—…Öûï=èÞá?ìÿÖýeøLØq±ûQ÷N7ׯpšHò©Þ1y#a1\i™L•l>¿=*%’[i'²â*¤D¶]¨V7ö¤rº•Ši[-Ù ±mŒ¿ÒÝÚ¤¤ÔÑ]wfÄ.jh õiMy )+ͧÒJÄd·1—9†3qO Ÿy;ÝK§ŒY6ª—ºvÿ9,½¼¡ãæ%ÿ|ì¹äõ'Þ¸gÇÒeÛð}Éu×0Ïä?Ë|ŠõOü˜ø*±÷ù¹Ò‡ö}x=ˆ\ ™àþ¬ácl†§ì‰’BÄjž«Æ"¯’j°k¡ó69[j¢ò¼†Æ:ÛcÇŽqõÇŽ{úØ1¸7‹b±{[Ðj£hv›ö;íqí”&,cj…:H¯NW÷©Ÿ«’¦Z$úL©Z ¯=«ÒˆWT¨æY7V"$ˆR5¯Vjý„"¾†'aóÛ¬™.UŸ> Ö% uQ ³³³COŽX'‘þ*òh~S¦£]!°cé X¦×™Pô~>ÞÆ÷ãE™ÁF¾ b^RP‡ó8"åñ¼˜ +i 9NyQ@~ûäTÔïd*4p¢=¨f¨eCåýÁÆ÷;WÉý‰nÜUÛ;bÜ;´ŸIx¸7­2Š€rd©i€\íŸ sMS,d"8ƤÜ2ÀB>Y⑞o³!s¡‡J‹Fr"ÕÙjvuNN¸: ¡«BשWyæäêW…Áý¥ý£q{ý %Êj"ìd!Â3ÕŒ*OÚ˜Û“ŽÊciå”(Ïû:<……HŠør÷É=TùÄ ôðýôúûM¼­®ÜOÚŽáÙ¹ö9µý.Š?yu¿Ù[6>à>vâÛ§[8bhã5‰û}\Ÿ-½+¼‹£ è'cÑÃîH$¯Ì\bhâ”;hÈàñc-K +-î¼BSzdÅ +ËüåUýóÆ{ë³®ŒŒ/?¤~ütïô¼…‹ýK²æç®ö®ò¯Ïº#²6æ³è£,ˆCMÕš_¬Òˆ&¹‘ËQ4ŒjíßS³©%݇ãóâ$~×¢|rhÑå¹V Kmä6êºåÚ·Zs‹õy`~Ä;P€<ÚZSÙ#®WP”óíè¤FsCÇéN JÐE ÁN%Ô4œ@§í`³Ty° ™§¢„KñyE¹½¬”äFsxârÚù’pnE‰(òÑœÜ\:GRaG‘¾< Ì3K:?†iù¨²þöK·®ß>ûñçOx´*gïÆPaVÙøù«ŸMì<ömbÙ»ïâßý‹øêº}%?'žùç'‰Û?÷;m ~ ?ã;æOycÿÇ9Í ÷­c+—6]¾vŠÑ4Çx|Ø•³>X¹×l½²á¡Î)ë­ü‹Gaó†§qÎó%f~ûïÄ£;Zn™}bùü/6ýþ£Óc+¿þêÎןüíµù><üöûû¯z}ƺ͗nü3P|²˜ºü[ YðÌýØbÕ™#ùckºò3ST„Z>õÌhaˆÀöEz±>Sž¥4êë¸ú«ÂËb»~J×d¡'£ôYZ‹þ/Ó¿Ìÿ²(¼‰7óNSçMf‹,J’ ê²h’0BtÖ×Ê"aÉä„S„ãh›‹¶qaÞä„)!AC"'¶‘y†‚dÓ7Á„Ä(dͰ›ÂhºÄ]1Š?ÎÊsA4µalh£LíÒ§&n£ ›è±n•ŽKd¹´B"Òï¬ï½Ÿ]>ØàçêðûtÐÞšj?P cÏ¿ÎLuÆÓÁ%*KÖêGZŽ]+¤JàÚa-Ú˜a-¡ÑëZy+'K“§èÔ6U2õx~SC*Å%8ÊÑPŽN…p¤ä/¤îãg;Úö!þçƒr‚%ÂÁ_áÉd"Þ|à†;ï ÖîfMߦlÌãr@<àd0Sóü èøèŒèe•"Îö/æ) ç…Û41ß­pÞü!w–¢8ì¡= + Q0+pË…lHöÆD5qŶä—F 5 D;5 D‘B^”éÝE†kÑIé@›3é?L*½ÎDéÂE¯2ù{f…Â,¬NÇtÏ0;ƒUÒñÜ_[’S1áUYT·!~Ñ$oWÄ–NÜ`µ§ÓAÜt´6’tºªÈF'óq*LD#º%¶H·8…Dq¤o*Ô‹‚ÈPßLbÛ__0cæê V¼´>ñ;|ñÊÊ¡ÃÝúhâ#|íU±þûÝ´>±S8X`úUO•ä^1swcî +›{Fíë Ïn•L•s]qS%ž‘üJX :# ½½o*™“EpÊ™`ãûÚ˜LkaÔ×<ÍC ³V UYу³ܓæ\«ùó›èdÖ¿²l{–-+‹ë!ØzÃÙƒÍã\ã}³„¹Y7Ûï°?È=`y0¸?A¶ÛÞµ8ùu§îçéÄÌž‚*fö*¨Ò­óGÈÄB¼¢Ç¬CQŒæpø³=±°Œeíì M”š¾A €†}Ú#M)ÀAgt>ö0€³ç‚æñH1ª‡¨<¤†ßzäâÄ¿èH¼ÿÐ.ÜÿÈ_qÏ‹^,9ò»Ÿtí—kÿœ>?œ} _÷ÖxÜîÏ^ïµõžÇ?Ü}(ñMóaªmÙ3(Ú +°ûÂ( +gãþrŠ:mzÈŠd貂³YUaD¥¨lÈËZé1‘äÏÎÒÿkÒû)Cz?gH/ô[ÒK×Γ\Ÿâþ7å\@’EYy™}^¿—ˆš +| ‚ºp;Ý7'8OÛ-°óÊÁv«¶(Æã=à³7P +õ¸=npè Ðg^¤o: Þ~äQü˳o©_¸`Ä’»­NìÆUw?Ùg`í}׌ؙxC8èÊ~uâøÑ§‰Súî,ï3ð›§¾ü©GFýHºšAC› —(„dY’ÇS@ªJHC²D©#K·—Jc¹¡a5l&ªßÌ+ÿ?ØÕtÑ•)J­–1lCíé“ñßòiŸâÔDkj{ŒÏ=÷(?÷.·J8¸3Qó\¼“r˜_üjƒ‚î4âl @ýg†Cx8LÂ!~í¿è·¡¥æÓL˜øî«MêÖýný?™ +KPïà·}ßÎ}|î ÒÒ9Šö»ßÎÎЇk÷ïça‡á8.Ò˜¯’ØÎ忢ˆÝCòPˆ0æ Ó>`,zBüdãX~^n˜ã`\ù,Œ{’„ißt<÷ÃÓ¾ú2E>ÎÏŠ…U¬2WQõŦ^ÙÅʵzÙôx ó4´Ô€¨fÇ©¸z5|€ ðÑ@Ðô9ÑÓó\±ì˜œÇÇ¢y^sV¹­Ž\ìt„%8Êò"8¨e;m° )‘Êå`‡XÐ*N'|«ã™¥u°¬ÊòlH·GêM@|Ь jPõÛ¸áäÚ ‰7·~ØÒºúh Æ÷ÄvE®Þýê#7D*×br÷-§.!5ÏáÎÏæ/8€¯úà=¼ ufÛ½ÅóVÔŽ^5rÝ–£‰ŸWL©À6ÀÇ Qr'|@£Øí†ßá*å¹¢nUßT‰*¢ÉÀÁaIi„i<€7 B#EÚð2͇™ækXaÆf¢…Ós–í† +7ý/ÈON“_7‰ãNsOØŒÃæQæFó<3Q½7ÞÐÔ5Y™’@)<Æ«Y¸¸©ª¡ˆ‰! JH¶(ìŸ8B~=r¤Sv>E&þ:ˆìí¬…>¾ µ À¡7öQÞ!t²toåÅlÒtoIiªìUœ* +Se4/Uf…R¥×ŸšdíaÖKÃÂFa—´ +ÆÚ´µ ¾húB‚= '¤f&(¼iè|—Î÷èœ1ô”¥Ç óÿ^}7áÛRÝž`Î5Ô7ͯîlÈ€„NYPV,±½x„šF0ÆŠäWÜf í0ôéd¦¸,×™×ÙD…ñ[«FÙ­ û Y%¦ªrL£ÁÚ3-3q ¥¤«¤”6m1XWk;pØa8F9¼Ç›˜K‰Äo3HýkZ¦ ³ïÏŒ¤CohJ¨ƒ9Ãñšt" Ušåe0Ð]´Kš7uÈœ‚#õ/ÝúÒ1¼Õ»}iÿ·p?žóµ½6ç*Áê® FˆË©¨’•~ùj™X®V'pk¸÷9i±ú!÷!(!*%˜j,ÖóÍÂ3ü·² ò¸Œ§“ŸŠ=Rʅ錆½¦*;mÝ Çrºäi™ÅÊö½v7mÿĸØÏÌË»XV|¾‹uU‘Uãù° :Ž€D°ÚEUEá1‘4É*G4Œø6Òϰ x«Ð"´ Ÿ ¼0T¦mZ±„Ã`…·H8yk “þUF?žWFÛ©Ÿ¦¡ŽNðúi„„J¤jÊ>ÕÕt)H y:; ¥—ÍyI²^-WƒÙî³=f;µª?¨¬OîèÁ©½&…×)ÃQ·ØJeÝ¢—*´¦êÀ(õÜzf7±³)9·ž¾*žn9*`ŽOö»¡ê®)X5{•œã¬â gó¾<¨ºªâç?õôƸi~CQÇR?Ž`øI¶ÍGÈXê|€ÜšDgNû’÷;Ÿ?w?ùòÛŸ¢¾Ë®½Ö0aP@2Ö´‘§ «D¸ÿZõŸùsIüs鈔ÎO±hÄÝ{ Øô_;á÷#$Z¡':9™™ß“A0 )[Ì6¦Ý@8@E ©´f²ÓÓ‚ÕÄ)YÑ,HVˆª‰Œwõ4ãþºŸ1®Žè¤iz$?gFr®õ‚¤ Нio×ß|³Î+Çã)l¡L’P¶Ää‘ÈöÛól/°½L©-Jk„ 0©6¶œ÷ˆU¶—2³L–ͦÄl +«öR+Û &a ˜d2Øftàôn¬ÂnrˆŒGv€Õxܶ^Ä øÙm ìÇO­3µPLÃyÚ‹§È1`,GÄ*;I@æ›Ö˜þ 4 1 ±r…|ž¹§¥Ž»’_l¾Ñ²Ö,kD«Ìå–‘d7@2äZóeõ~ò·YÚ,oçž–D;±Z,Ån'²Él.d¨Ê¦+¬W`\pYVT ä¾Å¢S<5ÚW؉ý ̸َÏ!,·á>†jRÔ°aZ®aí Ò‚58CÚÀqW¬@ˆÖy:ÖÛÈøÂB£°BUB¶ïµQÕ裙t Õ^ 3æ›CÝßup²<õšêTjrúëÿ2úÚeÌa‡dïyÇü÷È”< 4ø"É÷˜_>¬Åç +÷›“?ﶨ´5=þÎþH•¥g„M†ï¯¨²ô­`Õ}½ 5=á¯Ïx”Æü±ÛS^#  qÛîǹøÊb·¯ OÆÂ¡Äø]‰:áàÙï¾|ÔCܹ_ñ¯Ÿ-ã?;K™ñaôÙÔÆËvÛµŒ!{Mn6óôµ¡5™€–d·2‘8NVxBIæ¹°( +}+t™4BŠ“À1üŒœÂk£´Fmž¶B4¬ifÔ˜áaÿYÍÿ§]ÓeVwSæñ†8³dšN_`ɰÈ[UÕZža(#h¹äg/€|•ðCL˜R£pÐ*ƒª`øíûUÉFßTµo•Ò•º¾û}P훪ÒÖh*SQ‹VI'lz|z¿ªY©jT]´úóî.q‹»± °Sû +Û~…#_9—„­ä—²Vœ]AýÖ©`õ,¼ƒ,(€^3Fù­Ø©;O Àó:ïÔÇáõË'Ýæ2SÊÙ<¾ àE9øœ±kl/NÌž!_›Í+,ÁQf{‰ís©!KÇÁÒ iÅ”©h™Š½-ùù^»¿ÊS{sòKmô8+¿TO—Öt ç?Ø›K‡ëõtIÏC ’g£M +^œ¯Üh¹ÉºZ]g½Ï¼ÃÚfýÚò•Um¶Y6›Õf5)ö‰øÝªh§Š‚WQÜ¿/ä¡¢„%Ôz<(’ÃðéõZ­9³<,fRyÅ ª˜³•ÃÜ.‘¹órWär¹9ÞÿÇâÿUE©aø7?;“ÞŽ®•- ×q:wUUÄ2 S‰„BWÎr·Jû)†*Ö*«ÞÏfïGÅnbÃÒÇ﫲|²Ãf1‚U:˜yzN6l]§¾[¨Òãö8¢\oäe¤Åf§#ÛHóÑ7–¼övmÁ¸áÉÓGÆ]7¡WdØßð¶Õ›GÜ÷x¢X88òO7=ü^V^îˆE‰&ÜgÕúJMê\Ä•TÜ4xËÌ”üŠÿ‡ð6*&.#*7•_À-äù¼ü2®*ØŸ" Ϙ= wPþ®^š”5¡àv‡%JCÞ¹™J^¦ËTò3•(CEêâT%/S‰e*ùÔßDkæX.ÉåòóÊ­¥Ñy‹&†ÇGÇå]£Í1ϵÌpN÷Þ¤-1/±.Óå.È[Ã5k·››­wê«so˻ǼٺÙJ[j½"1{ æWb…à¡B¿ïÛ'†¦s™{ݸ=@yns¯P~ÎÜ•©‹P/%rsLæÅmöª†T8„ ,×°¨#õ ½òr-fMˆ³BYyŽˆ8/7ÚD!èå7(Ùm9ÔáF½Xp‡iY‡ñ(܈çáX׳Åpô¢¤†Ub¨Rn±q…´kfú¿B_ŽÙ©ú¦§ì"·wMŒØÇR^ðõI{jO2?³ƒEÉχouð™é|Wü4‘ÍÃV»Ñy=õ?›ÎS1È|GEˆ”ôMGsóYòK¤LÇx]N›÷0"W576éóä?-»þ™1£&]”¸fôì™·üxï㿬ZwîhÙVU‰?¬[±dÍÙG^Iüëü¾~Ý.[0`ą̀gJ¼âñé׿4mö+-wܵòÊ‘%%s .Ú·xÑñ ¿¡”Z ºá ›ƒºÝ0 $Gl±¼ÒFì §fr^ØÑ´Œ÷át,ækCcâANˆ3nËç!q.#)šÞQÞÿ@w†®iÔ;O6|©³Õ©x/›"¦ËC‰,¾9Ì;wþú/ÚÛm ýiŒÉ‰>4Ô˜µŽ¯“_•y7%7ØP¥üEò ~¨¼Øú”ðµU2!bk#‡ZEÅ#ûŒtÙgDOø>3‚̽h»qØ=ÊMÝóÜ+ÜœÛÌ‚}sP §ÓDSâPÍPŠÚ%U>íR¤Ä¡Ú%Õ5Ï΋Cp•kõ†t¨"e 0mG ¸Ä–¶X¬‚…-l|ã‘i‰³ïü9ñë¼#ƒw.{o¿pðÜîç¿ ›¿áFžÛó⾫°5!H=7ˆfÍâKÒ™v#™iw Š,`"}|Lÿø˜­¤`^Ã&cFn‘€{ .O-2›M·Ë·+Mí¦S&-le"<Ñd’N«Q° )¸eM ›‘ƒ«Š–§, H„NBõMXÏdºŒ§™© +ªFÉx…¼Q†cŒ 31 +ª&¼l!„Ð[X%bðF6 +íÂ)AdÝ^­q{Ê#i¢+ èæÕS«\ü¾oÍoÖD¦§àYìAVÀÄ?÷(vL pÌÀ¸K¥/Q¤.+gb‹ž™QF#¸$åO”`riçŸÞÂËzgçôÂë_î<Véû+æÝx#_øë +sBÒbj[àŒX!ŠÙ +í1o*·UÙ˽CÐ`Ûû`oš`«³Oðê÷Ë÷[Ó€4Jtì÷Å]¥B©i€0À4Ì5VkºÒ5M˜fšëZ(,4Ýì² +.ê¹Úe`5ÂðXSðæaÒ“?ÄñàŠ_JTÌ«ÕätØí.·Çëuµ%«÷ +Ȧ¥Én£¥1Ñîè2cäÄyY¹¼N—Ëk7)JÈe‡ªÝf²Zúͩë6»b’½.ÁjÓ¯ KçÕ­VE‘e}òÚí6’ý_¿TÁ£Q™`ï‚Í@½?L§Â|¾6|Çî”aÐà÷Õv‚;Ùé÷uzG œ>àË W»Â—ÚéeÙißÚîÎå…p]eyvÕG3µî;@¶m£4aWiJXŠò ±Çy +H;¬hÙk2£2Eó€ )‚pØ¡p”€“I'‘1~4qó+Ÿæú+Uìùö­‘Ñ`¯/ÿ˜¸îPâõ|ÉãL¼ +¼ZsߦärŸtúßýëŽVîyphÖ‡§>ûxšc‡õ8È>£´‘»5Rh/tTâ +®R®T*Íý,eö +‡jwТî,鸡9]v'×Ѐb8r¼ß ‘_(h=,1{9ßOî§Ñ;^.åäIÚDËXûL<Ÿ#ÏÕf[¦ÛñKdjÜ`¿Á±†o–šÕM|›ü‚ýeþUù}þùCË{ö¯ø¯å¯-_Ú{Šl‘ÉJØM÷šL÷Àj?凌4k&ärê^Õ&R»ókÃBkºˆˆ¤!Ì=¥8õ˜"é fEÁôµ-(‡Õb6c]7Ûì‡0#f39T ‹:q(ªÃN-ÚæˆÙ6qN“‰‰Äq„8Ì ê‘\äÂ. Î°É0SžüBXݨ¶«œÚ†ÛöMN Ÿ6C[ }”~\çt¸ÈPÃÈçt‰PáqšÒlƒ÷ _GCGTÙ6\@·k… H”æ„ÃÇj¥TY-í^¤¨òh=3lS¾NW(‰´u§}U˜³Þ@•Î7ª©‚§é²*9'PE×äï ÒàH»‘¬r€áËÁf¶¸=Õ»Ûs± B5ÇCM£.zo;ÜÓ^¥™²"c”©ÖTZ#´frx Íá6Z#P»Àãnu°¼AX–àó’2à +©H˜¾Âê˜hŸþ8ÿíÎN?•ØéãJl$çÈëÕŒš€WwÖžû…h½ÊF…˜JR1­½LxÎ~YéÇñÁà¾Úk÷PÂþʰ@…÷ÁŽ£;…úU^FóA…/€H]î¡YøYx–8KûDä)‰²¤ˆ¢"rŠj¢óÙaUsªª&r¢ÂQSÙM[¹0Á ¸°hÒD ¦ÖÚˆÏPTè +ô§¥x Ť\a¨+T”³Ï0kš)Œ¸+F’ Œ‚ö +HSgÆs24f™Ò&Ñçi#‰x÷›-iª:“ŠÑДÛÎTñ%µ„ªé;l)¸¶w<.ƒVX ­­¥É/:솵x@XiÚ‹lRLüÁäiÄ%O³äÊúTŽõ˜‡ Èæ“Ý>ê Õw¡1b;@¹¨óõïpdÔÀË®ÂÁÏ;_ ×rµ‰AK—.؈wÛÛù;Š¥B°[–L»íJvV³­ôrèà ©X6À¸jªÑ°æ·`$ˆ£‘ÏL-OÐ;µ§Ké„suíé¦jý¤~®kÖ¼ÚVŨ›-šm¢ìkÑÓªc~=Ë“gó +ɉTao„òÝ'û|U$‡Á<Ë2\^AmW,E\…ä‡Q—Ÿû3ï?÷j=·½•{vÚÐ;ÏI3idþŽÄlâeV÷ #ÎsqLtAŒ#ÉT&‰ÏóBFbj"SQÈ8jp?'?’~Y íeÞ‘I‘pØ"®¨­Äu¾óó¥Ñ›~ùpӅ뉇¹ƒ;Œ`»L4´mÏm1GœTJf–·á/¯øé•Ä̽ù…Ä[Hœ˜p7ÞžZJŒQ~b6necª1<¼—D#q°[D,Îçy.O¢“’†ÊÆõœòÐD6qô¿ GÊJlѲnM,øðC|gbö&1ŸŽ&ù·Älpþ]G×ÐUÙÈÇ÷¿´[ÚiŸbÍïH̾õV÷šüšò— TAz=³ÒÃgö÷(4÷èQe.wUúõÒ£ÁÜÐcŽyvÆâfóšÂÝùw˜]™yÉ|¶ú™Öžò=S°ßw¨à¨ïxÁ[® än¢Þ¤üvûù½2ª‡ÇÑZ¶'ÛïÙ£´Š¯ê9„¿¼çx¹>>Cž_lZkzÕô‹ù—¸­¢Ô‚y½(·ÔÓ7âôN.¼¾‹,5– –-–¤EØbÙeùÁÂYLé÷|›yÃÁiÃE׿ZX»E¤îKó´‘gö{79ƒA +óÓ†Ÿ9bóÕ¾AN+œ¢OA"Hy‘\ê¥Ãߥü¢\žb(—æDÐu¹4ÚEÇžK'\5ú¸\ö ÜŒ‡—ÛF®4,ù]ŽÇvÅ„*=£þt¬-ùÞ~VéSÅBÝ¡hiqU{ÙZ…«<´o—Ò;zò¼9E¹/ŠÇE’-ÖˆD´°P›¢—Ũآ‘E ‹W±, ±Oe·ÅÆ@­qX—­øér¶ª;ã_|A}¬“ñÌRÇÌõM©PDfÉ#b'¶z 5¥rS©k^Á¾e¥ù©DàKóÕÝ.ú*ŽhŒ£Á©ìt¸ˆ«žv`ήÃ\^6÷ÄL\2pÝò›²Z¼×½yûºgFéŠ'çpÐsõÑë'õ½vö¬ÇbY·ôìê+G8-fnžz]¯‹ë›¼Mw 3¦ í}㩳«/®Äõ‚ڢ˯yñ @Ñk€¢él]³¿Âx &k®P& „šì–l’, ^œ—½1[ìç¨vWû‡»‡ûäsµÁ}•Ž|y–õ:÷uþöìM'<'|Ÿ;¾ó|çû{ÖgÙÉl_X(²9‹…«! ·Žf'²þÍÿª›t—…‚~W]A‹æÍ}SúfhÚ +Oe‹iŒF5oz¢ðL&bz*3ßz €Fƒ±™~JEŸÚBl+A|jžƒ J¸çôt[åÒëéÖù»¯ÞÕd$~üýṤtÜÝ‹Ÿ{rÑâ焃ÿÞ0rÃk ?$Þ{o~qÜÇ^óåc GG%¿æ:@^ùñÄ´ÿ^jYnÅV Ó¤y ûx{P“¼A^×$ÓÑKlô[K"étô£ðc<ŠMmèK7êæVL8;ØßÑß3Æ1ÆÓèhô¡ë¹™É§œŒ/W‹gƒöÁ4A˜"È`عœáÄÏp2$èÊ=.ál©F"’…͹¨ô"‰‰W©O ôh:†D3 RYWóÓ¯ðbKX+ë;柎wÌÏd`ÙªŠô†“ðc‘8À[=ö¤õ¥ÓÎ3Q7öBêÝY?<"ñÓüonßù×ì]¾å×=óĪ9wáÕžŽã,¬>‡ÉÊ]Ûs¯ùãÛïa:fàìÓT~0g<¡Þœg.50 eβà2V½Â9&8“L¦+SÁöìw„wû¾p|áüÁóߌóÜÙÙq?e×a~Ê»Ro’kîíîGÊÌÃÈ@ó çàu¼y¦ù ñ+÷¯ø´EÇ.΢éVàHM²!`INó–ЕFÖ<]Ó†u›ak´­°kRšH1¨ÍN9ÇÆ”eU›H)ÈÆÖÆ‚câ6 …¸-3;n£¡¬ËØ2©…öÜ¥ãÒ§RRâ)ŠFJœb$Çä´J‘"CSKÓ>’/T:ª{ÞbSmGgw¦c¯i©>ÉBat;Ïgt†7RvÁ:šÑ}iYåô£Ëß]4çÛ7íí ?·hñ“Ûo¾qÛšGן}| æšG_J,¿"ö7^{éåo¥8R4|æœ1<Ù(èû¿AhPÆiÓ¹¹ÂõÊtMv¥ÞÄpÒ¸‚Ö²‚l•«ýCáWç?ßÇÞÏ×'x©½Öip´}’ïŠàûµþ)ÁÅ]gȯŽÜØjöxF¹iT‘s­õ­:Ñu>T%t÷µºgõÔõ'ÈhSåøÛ—îÀã=·âlö&\ø$ñ‹ÞupÞ´¦ÿ¬§@Š8…+À®õ`³r*Øê+òû ß<ßC¦‡Í;̲ß\`nñµûx…G?»4K6s&kPÅ.w:xNDê'v&ïÉãGîÁl:~oŸÊR6-f—nDØgP6ñf`“´cWÀœºÊ8¨gÚµû1=%æLO‰}ËÔKa/RiKþÊV.£Ç½¾Ãø Š 3XEÿ/Ã̬f«¦:Rn }ÏF•-•6êÔm¢"‰2XHºb ›h `pÉ{¬\‰ãÀ'ó©á\B×-›€X£RÍEß°gˇÿ¶ÅÃ'*û^1àøqîÁõMsKM°?¢j¼zý¹À—%FsßGÐõ“ך&8{jyÎáÚ@§¨dù²zj1gÏh•Vîª rŽ—ê´YÚ¯ê¿]–ÞÑžù—D/Éž¿±çÖžRy¤¼°¦ç mPd`áØÈØÂÙÒÔÈÔÂÆž+zžÈÿ:ò}ô‡|›Ç-ºÚÈîÖ‚ CbšD£b¦GV vô&8md™ÑW­êÀœ Iu»JòJÔ<¯÷MÖ=†§Ñ³ÂÃ÷“q=™Xó0±æék&ÖèRpÖúmJ¬Ñ«èÒð´XóP£`([-¾ÐŠóPNvî‹ÖãÖO­I+Ÿm­±ŽEÇ8Æê§¸µæ°åÉl¶ õZ+“mV_¼çÂoñÝÄÛéý7®óäú“é…'SAÿ&PJššÎ ÈüÔúG*çS’Šš­€%ñ„SDîŒDAäUQÊ¿…ßÊ·ðíüg¼ØÎŸâ âÃü›pÄó)[™Œã»àÆ3¸ñ*}*Ï$Ÿ‘l|f^§L¤Rò#äßBo>{(…T÷7€6Ìoгµ¨•u­­­ü?Ž?ëâcgOÐuq%Fã~lÌvô®1ò„‹øa xdAxžð‚a³F8§‰· šDG¨‰RÐfÝÝã®4ç©êF gk5ÚH£)‹FQ:…‘9 +ó)µóLLtPšÌ|ÆÛšÏáÜÜ«Óüþ:ü6¡šZê°´þ®ñÙJJÖêrjÝŠEÖ­1YWX±H”¢ú¸N½G‡ÎñÑ5ŒkZ³rʳ+Ê[K.½oÿÍ_þòËÍX†ÜÃO:»õhí4ʯ@ ÜÏ4™L1bʶÇ‹Îjþ—pFä”Ì‚²TzŠš©(™ +Ëecé-ã¸TbÃ==µ×žO£©§Z¡´ ¬M)œ2VA‹Èó/V(ƒb/µN½[¤žàþ.JO‰8*Ƥ<¹J¬TjÌ#Íõ|½X'Õ+Ëø›„”—Å·ø÷Ä“â7ÒOâ/²Ë®ªÇñ„f2+2(²œ—Ê_æx>/•Ó¬Áòtj‘è„–¦!•oÃVCx]É‘éQ$̼=•~µ -‘<ð®A#sh.yÆû ã(•úÎ(Ù™`îb® ò™Ì‹ žÑ× Õlž¿é ›çŸÏZóÔSECb|&¥™½ðÐ.WslŸ€š‡)8[YÅÅk¦éuà{¤Þôc¨JϬ*EÎʪ¦9É{²hjò;{¬ØI¿Ï‡å66¡ô|€˜lßaix{Ü´ødΚ¡`G&VìÖ2¹‘4˜Ieÿ˜Ç²Ó Os:«ÙŽ&íñÒ?·;º7Ô§¢4A!•òÌÂùp(~æ›Äüâ'‰mË…ƒçã–ÄâÎi${IâJJ—·Á®‚ñëß÷ L@±E •©Å ¥e©²¸OªL½k¸ÝÈuc²…-§?v§.[˜'¬’Ò\%\JÀÓ;1AïËf Âíàf’îÒþçóÒ>«›´Oá:eÉic,“ŠLf’Ò² à/”]Tx±X+[ÙýPÈÜÖÊ–B¤t¨û?í} xUÕÕö:ûœ{Îç$÷f¼™A‚!€H.Æ(S ‚ Ê$bQ)Ä:à<`«h­"µ`Kíu¬8Ѱu¤­C­Ö¢_“û¿kŸsC¸ túžïþ?÷¬½÷ÙÓÙÃÚk¯=\ÈL…Êó¼eõPrò¡ä‡¿‹ŸáòTkµƒŽ?d¼³í³}öX¡#’s¨jan¶žÆ"…¡è…™Q¿sO±r[ñÚbQ >æ-¾- 49c‹ÈÙšTÓÉ[XÞ!o½ã 9o“l, täÞ»@rs M™wGŠoËR²dtYÑeÉè²xx€£Ë’£d–œxgq_’ƒs–›#ÎJjþ²8¾t} ‹•=¤HrqÿSeÿË9¦ÿIŽKéÖüMRF>ˡج +¯Ù%‹ŠÛ”e›S9°©Ÿi?ØEeÓEÕK»\•[|±yú ÖìÄŒ®§¯¼îp¨$ìd)AOZr ¶¦.|{–ÜŒ“!ï3‘õ”£»ÜT>4oé]y+vß·~sá´Áý`Ë”Y§_9P+ùá˜çNÙ±qk{©øñ‚ø`û]¢uÙ²q÷ÜÞþû¤Ìõ>ÚKºò½xȦê!ñˆ¿Íÿ®ú§Ðgê—!]c–[ƒs™_Yãß9ID´˜=ì §!s)zºÇéñº½E)gE¤Ìå’Ò–KJ[®NiË%;«@úà–Ò–KJ[°eV¨Ëii㾌Kvè’KÁטwºL–¼"ŸEÄE‘µ‘–È®ˆQEß´tÙ7¿ÜX‡Ž+p9S®@K³zâ®x0U€“!¯ éü“‹R¯ÛÕµ\ò‘[›1wJaézÀá´; §ªûKº7Kñ9ƒV%óá¸ÅÌ…e-[ZÜ.U¼jÝ%oÍ|`œß¹¥çü‘Mk%wmvÑ•ßko×^¸pÈê—ÚåéÙºÄZ)jÑCQeþÖ4y3_ˆW 䜀»d›¢òEÐpFÝ#ô‘öÉz£ý|}®Ý^å˜Þ/2Ì_¬O™f›æ˜àŸœž>!²Ð¶Ð1Ë¿0¸0}VäR%͡ۥµKí­zpàê ®Û3ï’w®˜zkïÀCK—mxxIӦ޹¶_Ü0~üM‰5?é8|ãéÛ«¾üÌ‹û^Üý÷‘sÕ¨C?e+ýã·¸D¹è$êÅen½6­6Z½-wm®­*T•U›[ªËj5d:/kfnsî^}_ð}ýC÷GQà.O«ýÜ£Äp÷T1WüÞýFäÝô£ïg}#|Šæ gf» ¯ÎÖPqÞ¾ÄúUŸâ÷Å}3}Í>-W*"reíù¤"ÂשˆðIE„O*"|r •ª„t.kŸyªQ7½×Jî±$p¬~µHöd©ƒ0¤ÂH7_S_—“{´öá8ºÕöC5ÇV -V–¼¿¥n8J«Ú«ç]“~Ññé¢ß®xvñºöüÇ–5=´qé%?é˜+ìƒÆ(½cmÇUÝòõiêÏ^~ùéç÷îžG¸kP5Ï¡VôB|PEHñkJ¡V¥¦5hs´%šîØv‡'pxHµ+.Ù%Èé(»Í®Ø b!%$ +ß>³ï”õþthtÉˆŽ’(ÌɽÞEÈñÌ1“ûƒþé‡.æ³ç\4ÕÉ‹9ÉÿÂ*¯<¾4ýb¾;Àl¾¦FÍÀ@qͺÁskÏ:{ðСƒÎçj%,9ðáÒµ3/nßË¥P›ø@Ý„Rè£fįР+£uE“ f,wÜ⸺è¡Ð†^O©GFf$£O}¯ý¶,1I¥âŒL³OsLsNsMsOó̳ÏsÌsÎsÍsÏól)ÙRêã ÃE=úMu6ºf•Ì*[R¸¤¨¹èç½îÕewõúaŸºRú`Ùæ’gKÒË’’hAÒP˜4% eæìÐòƤ¡(iÈámCÁÜê©öÒb·SËŒ•¤i®Þ9™¬º+ˆö’« ÑÚèØèŒèÆè«QÝÍ‹.оÕò¢·FEô¨›4´ ©ëŽ‡Ù»Ÿ¯ù•=˜è)~EžÞN¯2uàÞ@•¢ôž–³ Gäd§š¹-ï'•ïÇC\ÁZvoW^¦’Y‡"U•¼Bêk#æ“{KTÞUqÈhŒCEåÄ1*õÝÑ6qV«QÔ“›#»zOO¥'§Â!z&ÏLôLöS>’wöÌ”Iå—ö¬šY¹«RÔV6WŠJÖÛQÄ”we“‹™¥ ÖÎÎ@LÞdÈ™ˆù$öÉìùb‡ø:“|Cžp´ÔŒï$§µÑ“-å<:¹ÅŠùâj?ÈÅc¬¥ïòòÅ]no)7WÂÊùÒéÅré›ç2¼UIçͦô/=)·ÐîUðý!¿ªxbYä(3²ÛIxä†aÍ÷fQA¡ÇmïáÌRÊJN½\Ë¢<ËYæ}ò!·Óô,¿òÊ+© ;býÏôÎËQKKJ{ þÙ‹c¶ÀãŸû‘ÐÚVßõW,_Ö¯øŽçî;䔞·7|ïS-Ë祧Wd]½ó®ÉsŸûÞ«¿WNÍžñìºS #Å•£®3â²²¼ò‘Wœ™0m€Â윳¨ïåÓ¦ÞæcÜO‹Ÿ‹ž¶»)ƒo-pòQü’*ù7C`hŽ*¤¸=NE¥t¿£ÜçÄЭº|þ*P<Áb·’0ìÃÃfÍÆm†FœÖ-Æ.c¡Ë#dÖY²C²¼I^.ךó1Ë`.ûZ¶–ÉxìgÕŽ%š™R¥±CÌ£ˆÒÓœ”Iªü©ƒöÿAæðŸÔÊ߈ ²JÞúùª8Ã\:ã•Ày7°ÜU.ü™§×œ» ×ÕWo~üñPyYî÷ûÏ^'λI1tÜ|SûgôÊ”ó{ð²ü+®ÊØí”ÉkN˜¹‹X(0}ï W•‡”"{(Ý­„Ò]`æõM/Ždðt"SÎU2ä,%#(Õò›M2$ûÎ蜟d„-½¥ ÎÎ žŸx¸<Ê® %cL¦ÔðÔ$ó³LqQæÚÌ–ÌD¦–é.vt|{̱ÇqÀ¡9’‡£sà°´ÑN©ƒ–¥ÞYÎMRì=J%ÀJßc'!5írͲ¶&y­:Q¦æ÷z|Þ‘Í—Ö`"¢¹³Èc˜*Àž=¯4·zZ«š¥%R ˜q䊵vù¾³2ÖïÚâ +\8~ü-ƒ¶Ü»eä±ýšÄêöÍ7ŸçŸé]ça:äì…ÏqF(ÝYF|yâXŠ;¶x0½Ê†¦R•ü•>ë ³@ÁMÊ'_ä¡\ì&ÅY.é*l6·‹7½U޲^.¹œ*:E pv{±Ãv8œ¤ +Qlî–·9ä4·¾ë†Ó¡’b«p+î{<7%KÉz-H»a/6|Å^žÆy Õ£¸‹=m‰ýñÌ¥??ñù<þγ'~§î>§ÿ9zÎ!üŧOžó(žâ®Pt¿<€âT‚£<+ÜNß9ºcE܉‘a[\§7Ë‹5O‹{cê +Q0e9*°üë÷Vä`±ÂÿžÿÐ'Çœ5é]>Ýj­Ó­ à£&ò|É3æDþ½Æj[¼‘œjy Ä•Sí.ȨV¶·æWûåYÇ´j¥ ¿ÚÏî¼§Q*MåöÈà¡g¯©¥ŠO¹ºãî?ü¤wv¯âͯuܮܸÖë;>eJÇW#ú í{¸ÃÝþŠ2º±c:¾+¿c¼ú´‘Lå¿­6’ã ûT—šõu—Š}1WܳÚJ´¢<ó­ÌÈË™Q?9I—ÃFÖf_¶âãX˜]]žìÛèTãž8*$VÖ§ÊÏÃí¦{"ÁRW©»ÔÓßÝßÓÏ{wÀU, Lo 6†Óæç†æ¦]¦/õ\¸<|yÚ5ž7o +]^ã|Äõ¤ÿ‰ÀŽðGÎ?…¿ð´û¿ +'²s“-*=äÊÎÒ|u¾«}ª/Ú™}S‰ì<–7ÀçsûÁ+!9DáPqІÅç3,v91 v†x˸Kç(ÛŸ-*²wf‹ì6Qû¸e·‰‰qWm03‚;ƒ"ئ ÝêS +hX–“_ÉÒŠÇÜ}ÜcÝê8wBžlº¹Â‡²µ[²bËÁQxí|Ã*ßÛñ:å_iú$3âÿDš(‡d‹²w]Òä&eYªoñ‚ÛDÀmž wâr%>Pºòšpâí­ªª½èe§U¬C÷,/óEJh>¡Rs—ËyŒÎaø€ + V†õª™(±¹:>õVyA^ù»[: )ê³|rUÇùúËŠ²æûr´²ö»/¹rùR1ÿð¯6ml`)§ ¼g/Ú•WÙ÷ÛÄ vT*ÍCC¯Ä0(ƒsåJ÷SñÑ0ôeŽ +µRí¥ Ãí£cýÓ”‰b¢}ªcœrž8Ï>Ïq…²Ä~…ãFåûõޝ”C|ét‰ÒÃ^ÿÔþšbpoÙæO«`¯þÁ–BL¤Å@‡SØÎbE`ø +_¸+Îáãºó™¿%%Gór¯S´)¾- múâ,"2Xm%•õžµ^…¼qïLo³÷3¯Mîõ/âWÞ%ä\¡(IK‹(A*É ó(êó/Ég¶ÁZ@kíº ËåŽ2yÕuyÿ=Lß“›+-QÓï}ƺ’iñt)Ž¡6ï¡”ØY)c–žË¶§¶q)rQšW.n”§‹x,{»Õ'ÏØäƒmYÕ{zÖ©,œµfTËi—3½Z„Ìô#Œ¥o?E/4ÌôV&lšÒ1VÕþËE—ÍS>^­ÚõÕ—¶Ÿ}…ãG\ÏgŠ“´Éê%”N“X‹¤¥g¹Âéš'V¯ÄHî^rAÀóÇ{Ý´7SÛÄ”¸ÛíqgFŠf,6/©æ+¿©‚@‘*§uŸÈ[âúÉ…?9f^M]X Ÿ9ﱚ«/6¬pÈýãWM¨YøÉØøbqÒËË +«r‚cí­éŸ=o%æžRÛS¢„F"»ÝLC­fŽâ@þgù"ßI#Ë…’¿]PžNïÇ_õ¶¶^Œµ=…šœÍÛ—µ9#ÊÓ¯]Ly±?^ÃJ¥Y¼£¨‹Ô•´RUÑ"EŒUÆ Aü‹›B]¥hJ›˜ÙŠÙT›hxœ¢ÚïÍä=£ý*¾}zu±9¯¢„úªo_óç7µõJ¤ãÖ¤7¨Sm¿%ëAâÓînŒŠOOCâãxÕx5$v;Cb£±1$î7î‰[[Cb…±"$Û‡Åû‚°˜jŸn»;,Â!»™»‹TßW^õ+áõÅ]ã¡þ]—qñŠÐ"c¥q«¡Jè”p×ã® ÏȬò^¢§Øk„B5ªz«PD4bý°°y¯¦ö¥¼ÐÈÏÓn¾:æÿQ—Ý›÷ݳîƒ.^¼x±²ØúS¦+i…òB÷ ]7ò»˜•ð/c=Ïê5 JU~4iÏüú§×ÖŒë1<ã¬3˜PR#ÔÅÛ ²¤Þˆ‘%õ™ý³°PìJX0„ÄcOHì2v…D‹ÑëŒu!±ÚXß7¾…Älûì°h°7X%ås»T +oqÙ¸=(2/ +K±o0Ø¡‚T£(^_åUêÉŒÍÅå¹Dµ†Pd¥Äç«çÉÒâ³mæïpQ¡…”@}bþf’]Xå´˜'ÀÜ¡6ÌŸ èÛÅ|æ/óÊÏêÕ¿Ÿú»¤Aû; +hÐø#Òg41q»^ ~¨œ*ËjI¼ä·Æ»†Ød­·}½±ý|?Ùݰ:à_!+œ1¸c 槯7~}¹Ÿ,÷Î?O?ÝrÕh¯ÑÙZ¥£ŒºÔ6™¦(«hªXOËjŵÇèbø]ûÐþ'ï5Àd Ór;8h`;ünç°ˆã"ŽGÒ&šjÏ£E¶É‰v¤w§íyšÜó:í]zD¯¦…°?ˆp;5¢ìaîÔ×Ӹߋ÷çÁí>Ð)°?ó4„ëc™ÆÍe +èpïxn´¾·Tý%õךÀ·4"ÎÑÀµHcèp ~B CUÊótò|bÞƒÒUH»u‰x®ÁûZ„+‚ý*˜3‘Ôäeâ1¸HO‚VàûÏ4¿xž.àoîü&äßÊÓ±0óXßHó@¡¨N¼êè’·T\•‚Qj_jdãÅË´P;”×ݶ÷He åq9½ œªÍ¢1°+Ègƒm ÝÃvà ‰¦D»v/­UÑ)xw¹~'¾cÊûdàKª¦“ôbZ‰öU‡ø¯îCœÈö0‹&"ýÞ }µ÷dº¸ i}š,'.دD½N@Zßp@ø`ê¥XÀùAú\æ\ïÊäŽjø=?ÓpÏÀ·s›ä0q[ípÝJëàçf”ëP Hã<$!Û™¼{ñDÈzïë€ùÀ@ (CÚ„tUÙ^Ñf¸mÊö¶a{eˆ¼É6k~Ã}²>Í>ó€§“¯?Fó-äsœÜ_¸Í"/›’qsŸâ6“¤²}Ï—íþ/üܦ:)úžö1à<È>ˆ¶•¤ÜïgîwŠItè=hÇWq›åü%)— ·5Y&è­éò­}d+.´ÚúUIš,‹Nz=ˆ8gêç‚§¬¥‘Ú©ÞNçjŸQÚƒzÛúÀ ß¿-âcš`ßE}Q—ca¿;…®aû”y¶]øÎ (Ï}ôc”ébmŸ(Ðö)6ۆć6R^°m+¤ùš +e—ùŽ)£ë»Öý_ØoÛž¹!ñ‘m_"ïYÍ}ÂøXéÄ’î­@3ÐÓ^®¬±ÏWÚŒIä׉‹´8 ´Åi€¶ õ“>¾÷I¶?ÐNõfŒ_û¿Wš©Yì£k4:GÜ ž†´Ä~ºŠÁñƒ^Ô¥ÕæRÛR’&Ûk*ežoµ©SÚéü”öéNm—©TŽ-àïÉ~Š|\Ÿü~æÌã˜G2Ÿc>“ôŸJ»„¿A¬G;f>ü2Mµúu…ÑÈã­¾>Œú>3‘Ї'Ö·$Qƒ‰GôJ˜Øã»—uŽ©SÖxÚ#9–šîäJŽ£¶¾´ÐâgJ~ó9ý@Ž£“eþúFZi;Œz”ù]kõA”'ò=_›‰2¿‡nÂwDÕUèp¦q™Èº Šð¸Àc¢úC”3E7ÓUê8l_ +Èñ¢–ÎDÞ_nS™²›íLZ§L•Ú$ðÚ]4‹ëŠ¿ƒóÃuo¿„<ö4ð‰}t²ö(ü¤‘þÖÊ2ˆÓò]pØù©PÆyd ÍŽŽï&NA«<”e!ÃCá6Ìe8õ4š å‰é~Û$:}裙ÀœœÐ/A?E¸Iœ„Ë”ãõé,ô¯ëÀ›®Ï!Ùþ§&«ð=ËÀ×µe´"¶f”á|ùíušÉcWqÿQ×S ·ý‡àÃ,OünÐÊi˜>Ÿn†ÛÍ6ðI¤{#Ü®Fÿ탾{=ÂçY|›öõpç°µ,˰ŒÀýňSHo–rÉ<°œ‚ôÕéu4]‡v<ÄþC”Ã5tñED¹ÀÉ&¤}……›LH7¿I•|ÕOßcwÑ—~ƒ\D C·kWÒ\m2Uª'£ïè$í×è«_ÑTÍÐvÓ´6º‰íZˆÊ ±S·@¶d÷Wi»‹ßÀ¾†¦j5]¨Í &uÚÞ^rjsP×g»í¤á?G¼”wiª:}ëZ˜¿J<Æþd[g2´‘t’ ×2¯I¤äYÔã«F£N‘_6•_äµ3ŸÉ<'ò;9^„c?ÚøÑoÅ&í/n¦ ÀZñ:¦žA—)$v \‡§`dW»ÖOYôÖúÑ6àJ˜{þ°Ñ´CvëGo× î_‚nÖå2"æbC©?S¸Ý¬^L¾ë +Nçxî]aËJì8Êþ8Æ@9”ØÁHõrîôúk§&v0ÐG3ô•6–RX-…{.Â¥ØmYèOS‘J‰ÿ>Qž¾ øëÓ¥ã]¿1Y éÿÞìBcL­±á_ÎÛ¿ +ÔïJ`º,ß¿PšÙ†È«ìO¼ :YÙO~õ´Aö“`%Ë3YOp¿Cº§ÔÚ +q™§º§ÚSëõDv±™ftE²t¶‡Õ4˜¡ÕÂ?j·¿@ƒú³x÷ì±víá`*õTïá<¡ –k×ÇR)C!¯™}è´¿ +°_ÞC#Üwb æk@çû~4ŒÑ¥\ûs¹ª÷˜ï“õ“¬—ÔúAþâÚ+4 +´´´tt’ví³©ý6Õ-ÉKŽç'¥oôù¶8ÿ_úÎnàyà¹ÿé´B[ü€þ&äZÈ‘û ŸœÅ§¯ÚÁK¾©šúÜ0zwô<0àv>è‰óÅpßg"!´,ZkÉ•Q¸mµÂÚ­øÌð‡Eôõ!`£þðz`Ì0ž~ ô— kàÿ#„»ô)ó}û Ø—OÂþ1ì €)0ßšÚ A„¿“ÁòÈ1óÐÿ8=þüã¥YÎC>óXçºÖ}%ž‘:½â;Úyå*Œ¡yI=ìi¬2b¬/I´Yú¹™úçÏÄxèà±éN–kBó5Öã~N?P]TgéÃI]2ë§x¼Ò{# ë1ºê‘ߥ“µiTÔjæ:Õ$Ö¿¨ïɵšU¬wWÇГÖúV‹s=Ýçxžî³Ï¢áö•r½éNõ^º +n÷·Ð½z¹\_™”WyL<Žîu™™:Më›Se™¿it:ëcº¦› gޱôs©‡2õ˜'m0ÆßÌ2×+__ß™xÉÒ{^`ñK;ÇüT=ý4¯®À¼/©“}t?­] Xeœš—dZ(—öo“…’² ÌgJ]Ÿ¹ÞÃ:¨P—u¸á²œ?”õ5ŠëÌæAöqý'¶kæúÜPmü ŠjŸ¦îQ®Ï±n˜u qúè…è+hƒÚr ïj ð›xH†[`®›é @-ò5é¬çµ£$èš#HÔ&Ñ R¯–X'‰í ‹å£ÏZ Œj7¡žgJ½trM0¢•I½u™6@ý—Á^$¿Ý¢²¬âçÃ¼Ž¿‘us½‰ðή²t¤–_c 7âh¯.nÛLEê"È/»Àë²Qw£Q¯>ºJý#åj§Ðyj€f1”á‰W”A!©3ÄGpÿ=èí°óÚïktvr]ÍÔOÓa‰Ýk-—1›!Ö+ùÖ:a£eÎ1Íp«¦­É8ÖÓC]‰?‡ÅöPš%ÚÆZäé¨~ô¿ ̹ʬtFhg¢ÓR°L+Rw¦Å©°Ü3Sw¦CS÷¡ÇÉÇ·ùû¶||›{I*à^òÈÇ·Å[˜ +¸~GþêS÷ú"ßVÎE©€{ÑwäcL*à>&5àO˜Çv<‡¹éc ¿³ÆûAOEëëxfÌ/s,ûï,w˜ÿ&î0WN µž—à9ð*Ð?˜W'ÆAÇ  Ùæ>Œd:‰;€žÀd3-Ûñ„™¶„•fÇf3|ûϬüv±w¤ï›éÉ´™÷î-î±ü_g¥Ûbæ½ãŽ#þù=£ ×r ˜€÷y  GÐñ¸‰ÄÓ ?X/ú<ð+Ëœk•ó6Žë_ ¯åZ¯í`¬6ÖÉ1û +:]òÜW«Ì5ëwéÉïà}5T©{ ‡ü˜†²ÜÀ<Ü6[ú¿Ñ6 cA>™,×óækȦ=KQÛ{4C»êÔ­‹G€ß" ¹.ƒ¸™o³Ì¡^Ogr­R® ñÚÉ2ZåÜ"å?ü„µ?!¿wÓNÌÙ®ãõ3æçFoØo÷<@ËlWÐåö…´Sÿ yÝGs0^åé3¨Úö}™œÛê ÉasC.°¨K¡óÙpç½ ïScäº=4e6 ™vg9†ûC¦~¥%׺ÿ¦8]æù…¦anNî°MG™Ì’ù#ל% st²}б{•È^t#Bkõ/ñ:Ò*ï²_€×é×S‰q>l[E%ɹ»~å<‘œIÊëqI}d·´ ¤¼”ëZ–> “&ãàõ¶fº‰÷J¤Ê5I9ªS¦°t:‡ä÷€òøÙùýí"o˜:…]OÓ¨œ×ñ¤N$•Zy’ëx»Ð–,yÖØI£ ô!š£_K ¶3P.!j0ž¦ 1‚",Ÿ†”ëòmû +²h• íŸfõ÷KîK#¬>¾î¯™ý‘û»Ë¾ ·ö{,÷yÀr`®ùžß%VšæöOÍøå»å¦ÿvôïÁ‰.ºšwLÈyH¬«œjí¥ºözdížÛÏðÒP‡Æ}˜÷Tg?•ÞzAÒ9ïôÑÕô¤J5sÊ +“JÙéO-únk,ë¥ÒÔý+ß¶Ÿå;äX³Ÿ%éÑû^’ôl‹–tîË9íºOæM$,»÷ÕÝY:·Ì$=ÎþS'w„êÇÌŸºRY'¤Zr,Ëï£å:?ïÍùtîáú>ÚÀјÌàýÇƒŽ‘„a,8–œÿ­ÐoE8Àž—ŠÄßÈó•&?²ð±…u UÁ\ÐnOEâoÇß_W§ÿéö“L/˜òÿwe@z°=(©ÎcáwRÃøÔÂI$Œd¹'Ë1Y.ø¶÷ñÝtæ9™¾ï¿[ÿn½ü§¾û»òÞÖ½$å½{úqóú‘ø› ¹—f=…,è(×'€ Àn w0ÐW2y¯’:íi¶Ü¯Øæ˜vp3æ¦ Ëní¿ÑuHvFÄì¼÷Ç5¯|ŒÙfû3JÍr’ûvLÙë=|‡ÇÚc;Çâ}EŽqô€µO6y Æ]îç}´_Òœ£e¾Dƒ9ŸN¬Ã8iƒÿ€m /&~b»<á³Ä¯l+! Hëj /XXkÊ~‰Ö>H]î^Ovæ¶¹ öƒôš€ŸZò6˱›èø“é~$_IÞ«þßq˜¢ri\ίÇis1§ŸKQõc¼‡¼ÀëMê94„Ç µ?d+Þs³ÌÚ/˺‡·AMxP.ãÔGºôoÞ_Ãûj¹'‡ëé9Œìÿ9>9¿/“ú¥ùàãoPžÜûƒwrOâà½N,©˜QØÆ¢]Œ‡ßñ‰_«k@GZø;p!ò;™æŠ«é$uæÃ{ ï¤Á}1°æ¨hî–ÒÉÒý0ÚÉ×ð¨ì/Ú0··Áí+ 7™à÷r¾½•fA&ž…øLûd:ÍRž’iÍR‡">ø˜)©(Ô4ˬãý5·Óœ¿³^ýËwI?Ž#~lŸÐp箇€ë;lC;”©F›JÔ©臺~Åš?°õ*€ÒJÜûn‘º/ ¹NnQÛÏh®íT:ÉÖùàM´ƒTcû’~d«¥2}ƱLjÛÒ €çvsx?±ÜK¼/ñJR÷„>…ÒÏÒÔ!ñþ$øð¾w’ä^z…¥· ¦D&÷O›}MʹF]…~<iíûžc®AEßÓÌ}ªeÚO)Ç”ãxÕÒJphoèÔ½2å=mܶ,YA‰ßð¼61€×*Ä8Þ¯%ÞeÎK¬¯þÀ:Ë{»¬?ÝÉøß^ß)ëPß¶^t¢½'Ú«qŒýŸ\SIÝ»q¢½'´§¬¹œh½ m•eäáWvêëû`ßÜþú C£DBêGMyízÕ…¾½sÐQTdéDYOš þ•«Ý$uúךñQ¼i¨©›O|csúTÖͱ\ªFä9ˆLë\Ç?ÚÒßÊszÚ*šÄ¼–yª3xo7æià7³˜·ˆ¨¯øÆäAÊ> b^$õ’C‘Ç¡’J³èiñ”¡ä}ñ-w˜P}‰$Oòšd¡>¼'IŽ÷Ov™ß>ÈàvfnꙂýh9+¬‘Ê‚ÍiáHH} )ùeÀgàêýäßþG"'Æ×åD¤áCþ·‰‚kÀ®/$JË$Ê€´…¿ÌÁÀ7&²˜È>›(ˆa˜ÈGë)x¨¨€$W|/Qi/|Ú]tßÑ« +ø/¢ŠˆNF+­D™ö}ÉDÿSˆNA:Õ· ÜBTSF4cÖäó4ÔCæöuO CœÃn³ðŒ‰‘ F/!:aÎxà F§q!š€o™ivÒR¢É·5–MEþ¦M :qÎ@~ÏÁ÷Ÿ‡|ÍÂøq>ÒŸ«ÍCY,@Z‹‘VÓ8¢K!ºô¶£±¬Ï¿9ÿ øàÿN\Ž™àƒ-ü±ÝøÿÇÇò©ÿÃXÝnt£ÝèF7ºÑnt£ÝèF7ºÑnt£ÝèF7ºÑnt£ÝèF7ºÑnt£ÝèF7ºÑnt£ÝèÆ?…±‰>§ú1$ÈO|«©v–C6Ûi¢Z¶¹$’·çIµ„Ú£µ<'o»Zªæ´Ê‹·©…›ƒi•¾!'©1ÄV!Ÿ1<€F3Ô\¸ûñ\ 4À@'Â“ßÆ€EÀýÀ~£æ¨Ù­±<ÿR5аQäѧfЧ@P)Ï +`,0¸¸Ð¥?vY¬vŸÉ7q5£uu_ä=£õFI6Ï[P)­ç˜ÖiÓ¥uó™&=c¼IëF™ÞšÞN®2{5ii/“‹+›™:=•»†¤«éøÈtdü"<ñ ù…òh­šF-€PuË%®7•TÞ¿SÕHQ…ªÐ,ÊKìR•VO rˆS$ħ¤<ññ‰ùF|²Ù¨¼ÈhñGÚìTñGüûƒø­¸Ìñ¬îv¯Ÿº8€ïàßÛâmò‰·¨¨f÷;OC¼…§_¼É­E>Ù\ ñ&ž~ñ>ë <}âu˜^¯#k¿mP]¹]Ê+,C^±eÈȲ ÁôÊ6ñ›Ö¯z E• ¦Ñ¢žP h0õU Z‹OÎkS#­5sóÚÄ»›cåyk‡ô{©ÈÉ^¤¼—bÀ8`&p Ã´¦ýÔ Ü¬Z´2<ý@Lì^öS ŒìbO+’i¯¶– Í’.^ÏSJüeñ+I_ÏIú¢xVÒ@sAw‹çZsóhˆ ï aü ~Ð +¼·‰_n. +æ%†ÄN”]ž@-0˜Ü +èb§(h•D$OÐn;Ág+}(éC´ÎNñyyñ’ÓÐcü(x*LxÜ»¿DÄKî¼V~”ܲ&~”\}Lü(¹üJ˜øQ²`)Lü(™5&~”L?JÆN„ 6qß¶¢Ò¼cç+±!>q)JéR”Ò¥(¥KI—ò?úJã¼ý¨µgO”Ø=ñò=óšw(ÍO*Í”æuJól¥y…Ò|¥Ò\£4Ÿ­4—+ÍÙJs®ÒWšŸPNAQ4+ñ-GY«ã¥y·Òü3¥¹Ii.Qš‹•æ"¥9¦ ˆ·‰üÖQ}%&Éæ!Üé@O îãù(Ñ|´ù|ð„x¾ +$¤-O±Ós4—iÁæžµ¦½÷ÀÊECFЧðiTÃÓô ¡‚žF3z‘<|xÖ3€]À§@ÐỿU>}xVµÀ `%ð) Ëì| +Zdeq£ÌX…•é±lOã_þå‹üxŽ?Û_î©Þš­ør•±¹‰\1€ÒÓ‰(°ÚÏÖÿöüý¿=äâ·ˆ[)q›Eomý*'¯MYÓZòDÞ4å.ÊÕÐê”j*QŠAO¡&iïGÙv¦U”-6€V¶fOF0_kI¯¼Š—CmÍû*û`Þ‡ÙmƲŸÈ{-Ö¦)­yûà²akÞÞìëó^¨h³ÃåÉ’6dGLzÝž}JÞÏvK¯WâÅ=­y+˜lÍû^öˆ¼ùÙòÅlóÅÙM°Å}yJ¦æD|uÙçæÅ›çÖ¼Úì³ójL_ý8ÌÖ¼>ÈB¹iì‰ÌöÈ–‰æÊ' hS.ˆ÷2î4¦cþF¥ÑËÈ7òŒ#ËÛƒv¿ÝkwÛv»]·kva'{˜嵜Á0¬Ë2ä#Ë +iÒìüæO +Å.h4µ„ÔzQß0T©oÙuÕŸkù²¡°MqŽŸÚb+ª´ë©~âЖSÊëیĄ–åõ-Ƹ³¦lR”[áÚ"®kShâ”6%ÁN×dµO›²%pÍÍYLË®¹¹±‘"éKk#µÁÁêáuÇyÌ´žåGþ"G™sZî¬o˜Ò²>§±¥’ ‰œÆú–;bÓ¦lW>W>V·]ù+“Æ)ÛÕÁÊçÃ&°»:¸®±±¾M™,ýQLù+ü¡ÅüUú³c`f³çšþî1ý#<ü1?‡ƒŠ¥¿b‡CúÓö·©©hXݦ¢"é'#FMÒOSF¬«ŸÝÅðS\,ý¤7Ónégwz3ûi,½dgÃKn¶ô¢dR¶ô’­dJ/“x©°¼\ßéåz™’ªñ“múñHúñ€ŸòôoöÐòreó Æó¦ ›]8lfá°ÙÀÌ–—^ii>7Ût^#¿ˆµ¨%3Ï=ï¦çÌni,œ]×r^a]lÓ iÇy=_*¬ÛDÓ†Mœ²iZ|v]ë ø a…çÔ5n1®jÀQi]ß™VÕ¸ãD6Ž#«â´F 8Îëüz§5€ÓÀiˆi‘lãã¦l²ÓÐÆÓ¦™t³p9Ñ^gfå7M÷_4X6ÞAù‘Y; ­Å¯¼pöY¯"+ågíP±^ùá(JåK.iº„"ÃæÖ™ÿ›ð§%—p›Ïò¦oûûa-ñsêš–Õ·ôl¨o©?uÊ&ÀëLþ¤–I7—kX[b—éØŽÙQU;=²[ »9–Çcëÿ‹Ê_­nOlVâ¹ÊjjT[rë' +°‚‰Sñ­Ó¦NÙYЇ‡¦F|`“R®4%ã°²]^N¦ø›“Xr‰e²Êb‰EÍÒ”,’Î?.¬òÎ[‚éÿŽe +endstream +endobj +541 0 obj +<> +endobj +542 0 obj +<>/W [3[277 277 354 556]9[666]11[333 333 389 583 277 333 277 277 556 556 556 556 556 556 556 556 556 556 277 277]32[583]34[556 1015 666 666 722 722 666 610 777 722 277 500 666 556 833 722 777 666]53[722 666 610 722 666 943 666 666 610 277 277 277]66[556]68[556 556 500 556 556 277 556 556 222 222 500 222 833 556 556 556 556 333 500 277 556 500 722 500 500 500]97[583]112[556]179[333 333]182[222]374[604]380[604]404[604]]/Type/Font/Subtype/CIDFontType2/FontDescriptor 541 0 R/DW 1000/CIDToGIDMap/Identity>> +endobj +543 0 obj +<>stream +xœ]ÕOkëFÅá½?…–-waéyglgÓRÈâÞ–&-ÝêÏ(Ù(Î"ßþJsÒs¡†<àבñü4hŽ¿<þú¸\îÍñõ:>•{3_–i-o×÷u,ÍP^.Ë¡³fºŒ÷ÏwÕñµ¿ŽÛÅOo÷òú¸Ì×ÃÃCsüsûðí¾~4?=?ÿó¥ýùpü}ÊzY^¶I´¿þÞ&Oï·Û¿åµ,÷¦=ÍTæí«¾ö·oýkiŽõÂÃç[i¬¾ïø ÆëTÞnýXÖ~y)‡‡v{áá·í…CY¦ÿ}|þ¼j˜ü{€´u!­ãÈ!Í8J8:CZâh€´G#¤9š ­ç¨@ÚÀÑ icu-¤MuV82H›9ª ¦Ëîê‚i಻º`¸ì®.˜.»Ë!rt‚ ÎQÍBãt=dÈÕR4°WWKÑÀ^]-E{uµ ìe-d`3ÈÀ #Ko}5²„ñÖW#KX‚Œ,aµ,a'ÈÈv†Œ,a=dd  #KØYÂ&ÈÈV ãg‰2rç„22Nè #wN0ÈÈ^!@:{‡tÆ Ò'dHgœp‚tÆ gHgœÐC:ã„Ò'pƒTqÂ錸AªÎ8a†tƉ-¤3N4Hg‰!·ItÈÄ1A&–ˆ2±D> +endobj +544 0 obj +<>stream +xœí}w|TUú÷sνwîLꤑÌ$“„I ”HH"z‰I$:H¯*RÖ… (‹e¥‰€:I@†¢àþVe-è®euÁU)‚m­™û~Ϲ3!Ķ¿÷ÝÞÏ'3~ïszyÎó<ç9çŽÙh)d¿p¾óºeæ#e3‘V=iöä#Îè†ðÀË“§/ž´~ÝŒµD¡/…½4eâØ o>ZO”ðêt›‚„ˆ9á…ˆŸFe%l&qJ¦"NO)ŸÒ[Lå×i Ú<#‡4pöy:ÅbÜQGù4€ÓhŒéQŒõ9z›ejýŒP +yhz^LwÓ6z­çù¾]9¡2þ` ´d¥ *¡©(5n¥?`—Y‹aϲ•u³ÿsÿ·Æv̼u¡>TL 0›¿Ð‹ô7ú¾a£Ø$îæ#•Ùª¦N6Zû0æ6Ô™nÀw¢jºîÇ¢Z¾MYëÿ‹ÿkb …r0ê|ê‰ùW‚W§èï,Š%²tÖŽõg#ØTö0ûžë¼_ηó¯MÉÄ·›²MÙ¯¼«üCùLí¯.Rÿe 52RcŠ±ÈØb5>O”IÑæhº™ÆbV·ÒrZI«±Z›ñ}ˆ¶ÐzŠ|tÑkôú€>§¯YëÌz±6‰Mg‹Øl?;À^a¯ò*>–oå§—R‰¾·«¤©CÕyê«~òw÷¯õ×ú_6"Œ:ã¸qÑh7ày:8šCå4=ßE÷Ѓèq=I^|ÑÛô}ÎÙðµ³XÏÒX{–ÃrY76” c•l2›Ï³ìn¶=È63/«Çhžaϱ¿³Ùö986óPÉ<•góÞæ“ù*¾ïåûù|Oó×ù[ümþ!ÿŒ«D)±ø¦*Jåe´2KY¤,V–*{ÀÏ•÷Uë©fªÙêoÔê“ê+êõ[-T»[Û¨= }¨}h!‹Ýre¨eŠe“Ågù›®èÃôIúRýN}…þ”•¬.ë^ªƒvÔb¦M>|4=B¯±gè=¶S‰å{ØPþ(»E( 4Mù#û«VJ¿ãÜËñVÊl![HqÊcìKú’žâ*‹¹ÕGÙÃtš´–Oã‹ÔHv£ú˜ÚÀ櫯ª +?G;ù§¢K¬ú(z[HÄf°ÞM¦ô'K/òíX…9ôgú“ÅÆ7`Ý×SïO]Ù±6ü2]€vD±BºzÒÀ¶ióù#l‰ò1£2ÖÀÿÁziói’ÅNËY=¬¼ÈÎAóŽ@^JÙÞƒ£úÛÊþÅGÑ ¾’¶©“µ×Ù»ÌÍkS ¤¾¯ P&ñ~˜šž¤}ЄS4P9A£Ù½ÐþSÜMø,zHyš}BûØíêde +F¹ˆ«l%ta/Õ+ýÕPêKû”}ô Û¥œanzR]Äf²FqC}eÙ©>¡ÔjÝÔÖÆ þwØvÚ8Ä?£|ãe”2Û¬&B/o‡ö·Biêo†ÅØIV„Ò¡wC^ã`ÛlÐòX®t3û³\êÆ2i0O¥i¼î´Äéíh·!4y&µgWwÁ>òôé)ì}]A¯ž=ºçwí’×¹SÇÜ9Ùî¬ö™í2ÒÓ\©)NGÛ6­““â[ÅÅÆDGÙ##ÂÃBClVÝ¢aUe»JªÞŒj¯šáêß?GÄ]c‘0¶IBµ×‰¤’kËxÕ²˜óÚ’”œÔ¬¤Ç,éi,ÉìÎ*ÈÉv»œÞSE.§U+Gx]‘«Âé½$ÃdXÍ‘pDRRPÃYœ0¥ÈéeÕÎboÉÂ)5ÅÕEh¯64¤Ÿ«ßÄœlª E0!o¼kv-‹ïÍd€Ç÷¬åd Ǩ¼I®¢bo¢«H Á«¤à:¬¼¸(9%¥"'ÛËúw󒫯7Ò-‹P?Ù×ÒÏ«ËnœSÅth³6ûXÍZŸÆU»Ã&¸&Œ]îUÆVˆ>¢Üè·È¿ä\ÂÕ(îW¾ªin²RSœ0Õ)¢55«œÞ‡‡•7ÍMÏŠ +´º<½¤º¦]¯\LÈÅ@ÄðÅTÌIMt‹”ê[œ^›«¯kJÍ-ÕX¤/ _œR—”ä9h¼OIÅΚ‘å®oa²«blQëÚXª¾¸>ÑãL¼6''»Öer³6"2 o˜Ø˜'C²¸•od'#r €xãI¹ é.»SÍøî(†OC-ï,ÃT¯­_u½§Hõ½ZºÝå¬ùаì®K¯MH±¤Û¿"ÂÑ(`Ȇ½n·7+KÈ…Þ ‰1ö–ñ®9Ù }¼›k¶Ý öÑÐrT«è™ ž§¤ˆU]ãóÐ8D¼Ë†•›q'K®#O®»ÂË«Eα`NÜ(‘³,˜ÓX½ÚñÝGÂ]‹óZ3ÿ‹´·Š)žÒÓËZýBöD3¿t„«tXe¹³¸¦:ÀÛÒ‘×ÄÌüîy7¦_¹’Ì!ž¬È\HâèÆÂ"RæUÓñŸEJòŸn…(Êæ,ñÚ«û›ÏŠ””ÿ°’ϸ"jIrµZ`˜Þžîkã½®‰_3¼°V3xéÈÊšškòJ`wjjJ\Î’šêš±>cÙ8—Óîª9Èwð5³‹«ƒ+ê3­Iö–¬­À$¦°žVN}k]lõ°Z[=¢²ü Nìê‘åuœñ~Õ}+jÓW~Ð W¦òÆTsŠ•2Hz·Ê¬äƒ¢e2W• 2>ÞÇH¦YƒiŒÆû¸™f—iøäˆM\,¿†/v+n¨åì0ëVçùu¤©>ÖaŸB!ºìg”hµh"Ÿ“ÂúÕÛnz&ÁmÿwACÁ`û—ƒ +¨aûxtꘕ•Ž#•~p*Ç~ðhô=9Õc蓊ŒÕþðÅcÈE?x&%9#¢º´5eHú‚¸š¨Ç¢FYÚG妦_W7)β$…)ѱq©1<.6Zi¦X1œ»Å2F<žgšÃaÑc2)$ÁjsF¶fÔ:·uaë!­/·ÖZ·ö±£ž0²qcC[LŒuó$Ú:Ë¥BBc0R*KƒïFñeÜnws/l¿«W5×½dиí,×½Ä~L„—˜ys ’õ³[³|wU»D…— +Ý`EÃ9UZ÷ö¿PTtßcUÄ_ħSGªbUUnwËSºuË댽2Bq¥f´ÓcôØVy»Ewí’áJµè–"ÖyÿŒ²µ7ºpéo®›úpNÖ ¶bì˜-“–·=¿½v¨áË!}Þ{}Ýù-crgÍ=Éö¥®¾û.–tëoÿC Àë[Àë>joœARéØAJ1Þ÷ØìQ]N+\ ÷ñ;<9IU[BB9Ù¢>Í5ÑÆÈY /ë-¤¢i¿Fb!©U[ûgBVM±5å5cf,¢LRd. ‘€Ì‚&ÙÕ# + +Äà3—ªæ4‘X]qŘnÑ!¨ &>1ú7÷:Wî_Õ¦Ѹº‰Yc ž§ÆZ3·û} ëøÊµi]úN®?îï¹¼† |†Ýa¹žG•ç•”¯Õæ3Žyævï2ĶÌvÚ¦8l¹¶-¶'mGm†Í“¤2¬$¦dr]w©,V¤Œ¼µh=S ×t}¦j³K®E«ªh0 .SO«\õ„FvQX¡æj€q¦¹ç¸Á èò~Õ3¨C¡¬f+Ì(T=½Óe¬¾4ÃLè“‚ÔØL<¢]fV›Ž&mkÒø@Q[¬(Ú¦ŒÕ%¦º›~*~´Fæ"ˆç¥€ñpCt­ @·› 1Ç=‡åçé,&OaÅî}nÑ{ûßS/:õ}Œšñýß!vÔ ¼m#yë÷ŒªÖØm™vZS¬Ì¡åj[´'µ£š¡é\Qr*í'$¬S”™A‹Æ™ïâËè4–ËÝ…¦¨¦ud›àÚ\“iäIˆ.¤ ÓH0MÆ"Zç#f‘`–HªOÉ7)˜DA&‘`’L“(ÀmAô™®èk9×Ⱥfœk4¹’Ss!­8ØtÞïY;ô]I@»{ÀÆÓeÏÐ4½«Î]<ÍÚ—XËøa“øb뢨ÝQG¡Ô/YOFE(­â¹jQx|¼àóØ{ÌÆÞѨØv$̵³€~+>æ÷DqÎ,™añáá"ÔæcêÂÊí ¨:»ªæ‡ù°Êœª‹/g>vÈsU¿Ë®*6ìcÕ s ç@æ€H=‡Œ@Ü…”h?— µö1¨·v±áVPU^LžþcÅ…Þ¾·½Ý´Cc—oLZµ]Ü€â5Ë›¬fœ1aí‚^w6ÜÁ—Ûµï‰/üÑ‚ ØK†ƒ{ä¤E) +»ÇìÉbëngcÕ©³S¹EKŽ‹m«TÄVÆ•µ-sÌŠ«vXúil¾}aìmIKÚîS´ÖUv„†F:É““Û…2R¤ÛõÙº¢ÏK͘hn r_Àî ÷±aÎ ›@Œ=ßœ—[A¾0ÿ½y¾9¡>áÀý_»ð{ÿåûoqÚþ ³zÎWç¸g樵sº²,ÿ¥]W^:àn×-¾ç¾?æVßvýø›6l¶ù¨ŒqÁ?UíùEQ +}çI-v”©7GVÆM‹ÔzÆuu«ƒ"Äiéj‡Hw\¾Z©Ùáfz†aò­*±Å ¿c÷Ó7)–Ä„Œ°î¬?›lŸ’`±¦°è(®´‰çQQ•³Û#Ú˜{‚%Þ•I6g%IâI>žâIžŠ-* +æµÔF»ðÔÚ(5S¨ ¥†¼(„Ã^EtÃq/ŠPõcÓ.”´ +ôRÀ¾›ÎITÜ&¾ ¤B2Gx$;¯°FQá‹+µß +lŽð8Žå=ê¨Ú8ü3Þ^vtê¢Ú¨Ä¹¥›-¯.^8±¯ªöôïÇ–¾ûòNÿåƒÿÜpTpk‡>CÙ˜«6¸çUÌc0äHŸ³éóý¡Y‘ðF|Æ™zPE8$‰l +ßœ²9UY¨,I¼/tS˜*ìDn=hŠ(U„À]Êš„í¡;ÃÕeqèêP%+,-%ÕÕ=Lu†…*mR­© *‹Ok5<†ÒkŸäˆÑ5GûÐ6NöÞù,[¸(6Vî[+#õØsñ,þŠÕIéötž~¥•0PQií»P+{+þ~+ÖêÙeÏš":Ç=è˪†sUνõœs)èÄœ³7œ‹Š‡Ï'¯d­[º|îH¬ðXºvi—‘ÖNø2‚Õñz†ÐÇ80Z|ãb%ã3Fí︼lÑ¢´tÿ™ýŠNì;ñWµV]¶àæ)9mï8Ý­lìñU¾åËÙ´ÐÁ3KªûäfeÝ–Ø~Vÿ¥ûÞV=»¬s猤n•]FÜ:ä›nº œg|ÊïÕvQ­ödÝ9)raäªÈ"ŒyÔæm}¬õÇ1!ĘB‰‘šfIt(¡‘W¢`×êìó£1?ÅðäúØr[˜'×…Ï=“±k$“ L +MËîB6»m½M±ùøúúäîõâxPåþòÜ—à‡xJ'þ]!øÒÃ~R¦t]γk—üW~^L¾’§»Ó§cÚö¹nº§cÒòõmÖç¿2¬®mímñéYÕ5³Øµ”O]Ë´;üK×6ìŸÝÊ™JæQ† +ޤ~<&²à+k¢U^Åm›û磂>ß±nã÷ï6LµéßÖÙPžÉxê½ýƒ©_Èîïßýnx¨ Ú¯7½Ì³½n å=1¿ÉâÔy4˜ª·¡ãZ=ÂV1•ï¦Çùnc£Ò†.ª{!T=¨ÒÆ€.ä=ŒPþuË]̪€»=À7Àƒ@ Ê/uE˜ÇT«ƒfieÆ›è¯B;N‡€›­ž¥*KŒã8•‰ºp‹~ÚnÙM•HŸ€üÃH+}ñj„7 žðóûõuŒÐöQ„/#½3Ú žÀ¸W+Ï¢ìæNnA91®"§ëØqÊü„»¡ÿ~²ü<š€6.ž'¢þ`ÁKÄ—!¼ãØ¢’Ñ€°pr3ù^šÆcéßkŒÄü·›óļ1çÆ9aü1ýæoi +ôyGS\Û°¬)y, +ô€èÍOÑ u Öï,Ý }H#¬ÄÀ§JÌñ’:n·’ñ8Æù„¶õoÄ<*U7S˜ò%uGÞË}ôÒ‰wþMò‹´Þ’N‡!_7¢ý½hs¡”… 4õ;Èv>¤$„DßA> Þ@ ¶ëëh9øþƒÐÔ 8ÃŽ3+@¨¿ ý/<ëÎÊ>F;ÃPf,‚ôYó(¼:ˆuý òýÚZÃÑW)Èm#Ä‚r€äýn:NoƒgwýxâVô9Êò +™²)å²!ä_¬•”YsåRƤÎ0 õãÑÎÀc–½t°x e>ú"dVŒ3ض-!3A*å{íG;ÝÄ<…L5R¡{D³u²¤Bï„ì Ê=Ô]P%º ™ò¤‚/rüÐG¡ôê\ Œ/YÒ7hF@Ö—itÝ(ù]Gûž¤Î¥qÊo¨X}&p?yµîXËiÆR17~nµ#a)‡ þ`3ú€€þ»E;FŸJ~¾AÎQßà©êLÓöŸhÄNj{øRþmvÌÌT iÞÿ6ýÿüŒ¶‡&!|^{Ã00Ÿ{…NèXGÀ¤H¯–YV7{À:ùôQd·}iºà¡žš‡òÕcT¨ÆÁ¥#}”ö-PÖQ/õMd˰¼Áâô8ì÷Q¢è‹Ÿ¡•¢}ÐÙMäè™k.KA”׿TØü€LI*äYØàSãèï}boöYî°ÑR^™òy’ÆÊçµrjo"ŸÑ~Bs¹lNåÞûÔS¡Áù û(lœ°‘ÂÎñ,3X¾9½ZŸåAO”vøUtû÷ÀF`<ò20Î÷¡·· [†¾^· ¡ñ–çhŠÒšÆY*ÑßEª¶äQ2æýiãžz³q1°ŸvOÈ¿ÜGµŽd•öì%ºQÚ›—(GØ?-;¨ÁÒŠô@ÝËB¥Ρb±ê$ºO½×øóø“²üFºz#­ypa”+Æ)u¼dì‰ÊFiƒ&¨›ŒsÊ9Èž¨{³1C{•6[zÑ„ÆöDP‘&Æoy†>R1Gí1¹çoÚc±öÖUÆyýÌÿYúP=€2mè#í1ð «œS…¬»Õ¸S´¥—ÔOh¼vi€¬s»q!À²¦¼2,x6-£åž}Tû+òÆÓÛzݨC¿sè#=i¢¯uXÿ óä~½ û[MP>‡lM—²x‹¶ÜxNñ‘#¸+Ç¡w+·´ÛA'bî’ÂîC¤¿!Þ? ÿLø±Ç§Ñý–í´Øò +-V¿¡ÅÚY”ïJ…Êe葊p‰ñqÀn+¤Mc…|›¾ŒéÏèý·,[dÅr ÂO™Gw(WèF~€ +aK†YwCVFÓ^d­&h!è4˜`Ç@ïí€üŠ>CøžG+ˆ”÷?X³êrj£–ÿR:A.¢°Ïÿ•ÊØ·4D‰¤zõØj­AüˆC)^Ò•}ä•鯋}k|Ã_5®¨`+0^SWÓfu å)µô¤òºñdFõ´»á¥€ïC€#ì,䳌þdù- Aûå€Ùh?^@ío| ë5kÍÆÌK)G¹zˆñ"<øšñb¬ã\ ?IŒñ'Æ'æ-ÛE=QFý#åƒOïé&õkB[ýx§ u +Š5Ý.öËRؼ3°}ðY¢iÚü’¨¡påÊA/"­ÂX?£;Â6¤aýõ À$¤£Œñ¤©ÉÐÓN݆´[ïC:Ö¹áâ9 Ç‰~¸D˜hˆ½¸¸(Ȥ߿kŽÇ +ºihï‡M¨ó5ây?| \¶kPç=äg¥ˆ/¦Ùþ‘_ó_§?½Ÿý§´É>Özøqó=é?¦ÁõüÚ|ï +®ÿ¯Ñ&>h3jò!8&{é/î™AŠ&:6lsoبa—…möXÚ£•~€iÏ‹=tìà— {[ü<ìárÐôYÐ…ÁqAÇ‘çÝ#°BŸÓZé¼Ek…½–á =N7ñ]n²”È2½¤Ï†=î„‘Þ¹Öh£/öD飡Ükó×@ßUÛÒ&)Ÿc¬?ðâ/Ç|À%y•€>¢á—M6}^n8DÊ&9Ç©('|Ç•ú4š®÷ŽÓtífðË ÝÜŸˆS•–ŠóèQèÚ?ÑFwŠá·ROúÎØÊž¥ž@[ ˆzª±ô?‰}_Üi½Éâ‚÷¦ßÍpfgó¿Ñ{ÀMî¨@ÞßÌû–¤€_›À§›A¿/fÿŽø÷ìl;À­8›ž¡gpþ¾|-(út_s ì8ÆñÀ=ÂøÒ÷5C¿æ@]As›邦7G =©9.hßæ@zߟÇÏ•û¹qü\zFs =ã¿0ŽŸk×ÕHwýÂøJ›é¥ÿ‹qüŸÓšéi¿0ŽÁÍôÁÍÇ»½ÈôÇüÂW¯øî¿…/oˆß§Ã#ácÆšed9ø‹ÿ@}áw> +ü¸‚2w‡ø\~á+~œ<@2ÒS@áËùŸ>Чÿ+¤y·› +dH4ë7 ~C„áóùCøPø±þqþDý·žˆÃǤ‘ϵ~? ápÓ÷õšhï¼9‘„_´ù58︚0pù8»ðY ´aÄ þ9c5^"~Ú´ Æ'ÐÓ!jtöP;D—õº]Piw…Í]a¼Öd¯:$máYªR,878§À—§}êCô•å9ãœe7Î"ãIøîu n5Ñ8!|é/¼óßs´ZûíÍÄÙr8åñ÷pæFêVôÿE컢?eòWQ”¼Ï<(ýq&\r êþ™ÆZbao»R®ÞƒúáLR¤•^ØáÓºñ¹ð[¡6ÚmÔÏÚ‰úYþ&ýŸŠÏh°ì`I8³?׸ÿÅ’ç ­ARM‡­5Hß‚ü—hBH_:¬s±wú_öÝäN²øYižA¤Œ?`M~ó2é£á|¼Õ2¡]äxÆËý3è+~F©5´XO¡2í8ÃÖÃg9 }ȦwRÓ¥o…=Rï@iíÉ+ÎóòL}ŠàÕ&ô¬€ôï–¶´Ø£?A;€£A*ïN–õ¨·žöX´8Ú„ž¸z.øi(ŒV{Ô{hp´ =-ñÓï 'XB¿¡ßô—ƒñžÄxO¢žðÿà˜ãQk´œãY±þ"–Ð4kú Aèg§¤ïùäc/Áù5Ž9Ø Ýÿ×uTçÀæÿ~m]þ[óþ¥±7ü’ÉÂ' ÐcòÝí5c|øWÐ_Û-_€~ŸE¼#ØM¾Îþœïß•‰ôWàv”}5€³?’ƒMÆ9‰@Ü|¯@—Ñïc–¡oèAàýìXqÆú)þèèòw»ÞTðJ¼0Ïd°Þ—X/l|Àöõ³…Pµ¾Žr¥=KÛ°ï¾)Ωê³4)àïÄž8OVÕm<"ïd,4WÍ +›pÂX§¢_Û†ÐØ ûç^nO`L¿5!ÞÙàÌÑÁx8‚ü0-½€Ð/üoÿŸM_U¢O ý6Óõo Ú^Å0^ÕŽ’ïÍ™|?7ëW´Wž£"á/`üg”¡'ß·l¢Tù.Áx— îæQGÌÿkð¢µx®ì’i3e~qÞÇÞ"ÎýmèÅÀû§¶ g"Ы¿e LÑp£ú¶ñx¯ y*îæÐüÁ×…_¤|гùÓÔ_y„–Hœ +àmU^¡%l-á{à´Dzxøe"©FYŽð£@6½§¬£mš“ÎÃÏ ÜÇ_‡ {š¶ð¥Ôù{”D|(dq(U+©´î|:ÿ-ò êÉ€f"ÿMZú(PÏ/S,Û€³ùë´^9Ûוñwè%e5ÍT:R&¿BWÂ0–åô ?Ç0þÉV^”C¹aJGãÊܬ،OP&eæiÃ_¾ŽÑ°Ï¿C:|u¯öo¢BÖ‡¨{i2|ž»œeΊß1@F.ò7°«ù[Iùñ¿Àó%÷#ù[ö$ì1É#ŸaÊüpø¤çõA´L‚OFS¿+ï‹~‹º×©ggÑn5¡î çÅïd~Xš +2]¼T¼3klúd†ðûúòW)Mœ…wQÓ±gŸÆYû†áZCÆ0 c3÷V㲊5žOš%<4ï¯òýÖ$ÈÎrJiÒÞJmu5ïQ›®þÖÆ¸€vÅè`%Áè.ïÍßÖˆ½»²É½Ú-æšQÿ}¡ùÒx‘0„ßµLmœSl´Œÿ¦(íi§¶ƒîg;ŒóBnøÚÙ)ÆPÊ>À²Ô2ð2Ÿ3Â@%_`Ì‚lõ_†C¦j]üåCNÎB¶ú#¯»’±€æs 7×ó-4Pâ +p„܃xÿ‚³¬q7¬ÄZÏ‚œGB¦;¡ÍŽÃP„]ò7Qæ»]ùn²ýk{Û¯ù¿¶‡ÿZyåaº ãq`<‹Ä{e„±»À{yKˆô)§"? ãÍCþ–Ào¢ +¤-•¾V¥±çá±Í}7qç.Ö2þ†ºÇx ü©¶8Ç83Y@;Èå9ó\⦯!lMhÀö¥¢ýNÓ§¾å +y…¬å7úçA;èŠ;ôÓT¦¬Ä™©;Í2ßoÊû’—€]€WÜ‹~~X7¿ÍÁÞ¿ +Å~ê"X¯×¯Âò© k6‘-Œ(dþU„^k¡-hA ZЂ´ -hA ZЂ´ -hA ZЂ´ -hA ZЂ´ -hA Zðÿ ˜øKuô9P%iÄÉN¹4ŠˆòA¤’Z;²ãa¾¥<|W]<覆Çu´NÑÇêâ;ßÙ'Šï¤'£Àe@¥ŽxÆ +ªï¬[/Êï¬#Iýàa— :pPg÷ô7iH¸Im=MÚ1O”Û^_¼HÄ·×wîiƳ:™ñ´ttoçÛ1ÆËò‰g.PÜ ¨è|{}\³š-VTÛVŸ”Ü9ò(߆ÛPo›â6O²£‡X†èürŸ|v­m‘Ï;åsŒ|Êg®|FrÏ‹Þåó¨|>)Ÿ¹òY(ŸCäs–|Êòì¾ñ½€ïyvÞMٌ̞ÍìæÉf;Èl,´®‹ã õäwqtpöstòœ×;²AÀmYý9@JV‘#Ÿ‘ø+匓•âã‰(:Êêñ±½ü«ÂV…“ÍÇ +ë²:úØXO:¤ŠîºÔº¬¹ŽgPÛ)£DN¾§Îñ}Ž•Õ9¾sø¬¬Îñ­ÃÇ™'ÆñãœãkÇaÇWŽ'³ö8¢Ôê>‡OE©‡³||'Ò±Æ1ƒ;çXä˜î˜é”YÓS@<¡Žñ¨T™Ué(wúD/ƒ²—ëhæ)G12‹²|Œ=åð8~çÈË‘U;‹ªO9:9æ::8dwÙfwíͱe +ò”£:K•½;F…ÛÂmùÞÑ7ìÒ7ìÔ7,Õ7ôÑ7ôÒ7tÓ7tÕ7tÔ7äêÜú†t}C=Ömµ[#¬aÖ«Õj±ªVn%k¬ø£¡nñ×c-vA,ªxª2lçâ)9.þ&¾•Ó äQJy鈾¬Ô{l<•Žszÿ=Âåc!Ã*½š«/óF—RéȾ ÞîîRŸn ÷æ»K½úЛÊk»»©^¾ÚÇhd¹%Ф»’Å¿Ãq«šx׺dA»ÖUTP«…… …ѽ£z”ýÄ£:ðlò—®ýCÈ¥CÄ*—×ëŽëtDG ºAD7ˆhBï}¥#ʽ»ÛTx;‹€Ñ¦¢Ô»q„stùAöÛ[\t=.HEùA%›=Q<\¤+ÙE¥XYbÿ„(÷„ (g=C…¢ZÏÈr*3˹d9ˆY®•“\²œ«•óšrmÙã¢\– (ÿ>µ•åÚÆ¿ß¤\í!WqQ­Ëlë,sÈlË[ ‹8(’âE *YÄÁ¸,RrµHN H‡Æ"dO +»ZÆa– wË„‹žÜÿÑgb_·»xª•¡åµVê[Ño´I[Ùg÷–ëžØ{Gò!zUüÂÚ]á qõõ†ºúRaa‚ü',a^ ’t@”î•’°4ùJl—,†äð@VNŸœ>" Ò+²"Ä?ÈJXÚ+%ùÛȲ#9 +}4çüù ð¡„â©EÿÍ |è|*õf(õ«,¯Õõb¯§º¨iƒi¡¡Å>㘙؉"QQ 6¦Ùl‚àÆSC²ÙËÇ*Üó0tÔ”ƒóçÉ'ôÿ`RKí +endstream +endobj +545 0 obj +<> +endobj +546 0 obj +<>/W [69[556]72[556]75[556 222]79[222]81[556 556 556]86[500 277]]/Type/Font/Subtype/CIDFontType2/FontDescriptor 545 0 R/DW 1000/CIDToGIDMap/Identity>> +endobj +547 0 obj +<>stream +xœ]‘Mk„0@ïù9¶ôu5nAæÒRðЪ-{Õ8J Æõ°ÿ¾1i§Ð@ÌK&dfÄCýX½qñæÕàÆGm‡ë²;…¼ÇI–f|Ðjû‰ÕÜY&|rs]7œk3.¬ª¸x÷‡ëæ®ü¦m/wÉ-¯n@§ÍäMž}|zÓìÖ~áŒfã àŽþ©çξt3rÿd{µÈ³§ñjpµB×™ Y•øÕ“_ÀÐ ÿŽÓ$fõ#]Ï Ê ‚:QQõ@”ç¨å}T#¥ +ªH(1ª ˆrŒêÄ2‰J±> +endobj +548 0 obj +<>stream +xœí}y|TE¶ð©º·÷îôí}ßפ³'Ò$7,A«$„H‘Eˆà¾ÇeuDTxã2£¸„@ÜtÄÝy ƒ¸F™t|I§nw`œ7ßïû}ÿMßœÚoݺu–:çTu¨ 8æ^¾ÂÿxÎ<3–Ü X{ñ²ùK¶+J”qÙó_uñ|u‹ ›Œ¾tÁ¼Ù½{íµÀ´XP± 4×ÐæŸÀ|xÁ’WíYˆù·ð~ÿâ¥sgÃÃ7Þ0〺rÉì+—Éÿ¬ðÌÃþÁ¿ìÒyËžÛºÞ‡ù1X¿ÿ€¿\{¹9àHÉÂg½×cÖ÷ö¤Óô}¼{j2Ÿ©xÝ-…SÉøL ÁaXwÀ¯°¬ŒüôX~8¤R°®€waZú/X€‡à{ȇ*X^r'„èIœ´“wÈaôè=>/='½FÁ˜íXë!RGgp3¸'¹÷{þÜ{4íž§Âåp%\ëalƒ÷áCø˜pTM§ÒiÜ“à‚a0æàlnÄ1=¯Ã¢$åd(É-ä z9Ïõ@šâÁ‚38Fšý;`3Îé#ð4€·àmìó/8§q™Ff’ëÈÍävry„#fv õ¼ß;ñ’br¹€4’V²€,%ËH¹†\‹³úÙIö’÷ÈÇä;ÊS9µà<%è\úKº‘î¤è{ôÜ®‘kã®á6r;¹·¸/yÏç‹ùñ|+µ dœÜª|ã´íô’ž9=÷õü®·°wdï%½kz_ì}¯÷³´&½/ý9È¡ÇØóqŒ×áû߷äÇqŒŸÂð âü¯8Q'ŽØ'ámŽ{<Ž|:i"ãµ€,Âùo'ÛH'yŽì'/’×ÉAòGò ùž}!^ÕÈÓèÅø÷Ñm´ƒ~ˆ×ô¸(—Ï•re\ ׊o³Š»ßçWÜ'Üç<å-| ?…_É¿*ãdÉî‘m–½&ûZ.È›³2b@‚à‡{ƒ¾È×p‹a+L¤÷5ý#M‘ëè)òê!/âÓ<ÜDn"A«’½HåKÀ¬Ø,ÈÔ ‚¢•õA7Ñn:å´°ù è z m…GÉspŠŽAJ»œ{“n¥³¸Íü| yVâ3êÈPu¤q÷´!† +¸§ù?°eJî´l Õ¥Wñ_È(÷G”ƒÃå~Ofn2‘Zq¶ªéí¼@º1>9ðC¤üÝd:TòG¹µt,ýËÃFò"¾ã^XL÷’_#^*‘/%Éý\ \OÚp6ª`½ ‚t "=Oƒ¿‘_ rî)ÄM˜^ <§£sá0mB¬¿EŒ´\tºÖÕOzÈ~xƒÞd÷ÂiGOœ’ÓÝd;7¶“Süëüë”Çž^ÄÙ,Fé!"…<„2brf€‹"ÕT‚Œæ#ý· < ôr-] ɽÜWäZ 0[NëÉ=½?ðu\ÎØ”&#äUJ¥d¾1þÔ 5Î/àÈ~ÉÒÜ;ÜÉtS:Ð;K–Óû \³3¥Ûä¥1ð±’ É$>MÇñéô°>Í’¶- ÀÛiä°Þ]$EÂi?iKkÈ$¤ð åõlâ×ð7ó—ñ×âÚt +¥æ-p'Ü/ájò0®[1œÇóq6g¢ìYˆkD1”Bß®†£T:ë&Â(O[QJ^ ¿€6”¼À°W¨q8â}Ã",_Ž+Ô5p=òÿ*X‹2àxÞ¦Ó-\€ÞJ_¦—Ó…ð|Ľʉä8Ì߯¯„)†IÄ„O‚Xòá}kÓïàÓrÁ…Ò¿¹é>ýMú½ôo{aâØï”‡oä#  äGÞIdbÝT±¶fXªzhUådyYiIqQaA~"/7‹F¡`ÀïózÜ.§Ãn³ZÌ&£AÐçè´µJ©ËxŽÈªoõwD[;øhh̘–ÍÆ‚Ùƒ +Z;üXTf›«ÔÌfK[^|VK1ÓRìoI +RùþQ!Ç›#Cþ.2cR#¦× 5ù;º¥ôx)½AJë0à þQö#ý¤Õ?ª£þò«GµŽÄî¶kÔ#B#æ© òa»ZƒI ¦:l¡eÛ‰­†H j5t;¥Õá Õád#èà"£f_Ô1qR㨑®@ © ¿ƒŒ˜šÓ¡áú„ÔFHéèPHñ/doküÛó÷¯^Û%ÀœÖ„ö¢ÐE³g6vp³›Ø3 |îÈÛÕÇìYìÜ8¢qÕàZ·z”}¡ŸeW¯^åïØ:©qpm€…MMØÞK#õ­«ëñÑkqÇMñãÓèÍMäf|¤Ÿ½ {«ÌûÍ b%­‹üªÐðЂՋZ5ÎÕ0ùª@§Ó)îNç(ÿê©¡@G­+Ô4{¤{»VO¾j‡Cô;ά)Èß.2»=GŸMhuƒóú뤔Ԝ¥ÆMîŸYÂF: ¢Ã?×#i á;U²`^%¬ž[‰ÍðÓD𮎋# ;T#ZW CY9»¿CBþÕ?R@¨ûÛ3KfgKäá`IF'ý¤†õ}éŽD¢#/‘ˆbâÇX#å“ù—wÑ…¡e‚#œ>˜ˆs;»ihN À¼¦K„9˜éhŸÔ˜ÉûaޫĢDSme5ûûj,ÓXM{_Mÿí­!¤äÀ”|K‡2Úÿ§¬¦Q †v뿨ž—©7%4nÒŒFÿ¨Õ­Ù¹7õŒ\¦¾²¿.›ê0hä\4›¢.NªE¢œÙߘeµ|ÿäQ_Ô¥P"UJ%Ä_ß!´ŽÉ„Mê@àß¼©+}‚Ý%E·e‡Ù14qf¾úŒüÃÓ®æpÀ|”Ž›:cõjõuõ(V¯®ùëW·®žÝ•nŸò ¡Õ»Q‰®^6ªµ£]é=k\õk›ð%¡H­†o‘['mÉ­Sf4îFûÉëÔÆNTmF´oÚƺÆÝ~Q*¥ý¥,çg9GÒ;QsdU®Ý"@»TËKR~n©LÙWF`nÍ” R~ +Poŵ‘Ÿ/CuP¿]®è"Ú(®e-xSpWpW˜oTúÁP8UÄ|&Œ?ÜXÅy“k»èÁÎÊOë»Hsgii^–Þ…`¡¯CÑ€üm7iީ܇{AÊÚI3šF¼Å`0vÝŽXéü¼.ú‡gªÏs^P^§Æ#ª±ÉØG3(é ¾a“Ÿ§Kqùý/"Ç>.º9!üØs²[8Ùݯ<¾[èÁtJ躡èdKª[8†UE¬äd·Áh«bPR<â*15zª'7õLõ‰˜ˆÁùáóD2:ï·H¦‚R«‚ÆFÇ‹$:ü˜x½¹yB*!¤‚IHŸn ã:4SÆuD†wŽöŽ3z…l ý-x¼éo+¥O´µ@‚$Ë+ÊJ­‹Õj«È¤ÌòP0Ã+”[Ì6+o³âº-Wd*’ÉhÌ,Ϥح6+V—•V$Ë¥{bQ,¥Õ6“É6²1Eì“Ýn¬¼¼ròÒ¶u%¤ºrbCçoXý} VÑn3u**ßrëº_§Ä¼[^wþÃüS‹|N§o‘ÜwØÞë¼N‹£(ZqÓ”)ùÁjgèÊi—>iø;kñwõŒ|“Þé}ØëÒ©|É¥·4UOuÑTjÅâÇ]ðUpFM¯€”‹7šÝBHtÿàü),áXej7s>—/|~˜Ë ·ê.2- ¿aû›ñ¤ëDX™Ÿä ®6ç(Íc~^L¯–ñ((GÂæH$Fê …Ý.³Ûír9]ngØd4›LF•R6ÌF£¡· âNTwT²eŒª"]' +c³R Šðx—ßø<ÒgN¹OÔ+E×x£_mùÿ‰è"ÃDMC|iœÆ…¯>gï"á›cµŒ—H«'åtÝN»ÐÝÒÍRvd2Õ«­B«"}„Ư*Lä\'X•ShO(ÏIð˜©mYÞS•%NÒÒ‚ôA ê0D¤‰@Æt8Ä~,¦h |ÈH4š¡Zi7íÄ`R vƒ³÷ûLJÁjyì1‹Åè0<ÖûÃ`×kLÜzâc¸ëý´Iî0è­Ê¦/m:£ÃóÕW‡Qgûr†Ò¢78ä {`?Œši³Xâhöù”æßÍüo”úf•Jéþš•¶fƒÁÞ,JÒ¬P(?)֭ïœxƒ=Ed`¾¤i;,)ë9ÆøFèÆW5dÛJ/è{é€ôÊ!z{­Þµ^§ÓKVH¯¸‚¥©¯w¦Tö0£fòk–î½¥ÙØ÷Po¢+Qv:E-ì§à”Q?wŽÇ„ãP4ž=ÚHò¦Ó¿¡+¯¼y3ýGÐÖ[T“N¥†ÿ@ãÈY²›xA’©ã»¡ïŠdp’æ¿‚N WNœ4„i¨:>ÿxz:÷µl °DªRY‰CÅUB•ªžœ§jV]¢ºœ\©ºMy›ê²IõyLõ 2òɳD&£ä¥ìyr T¸èÍ;U*µÖÙEþg§ôì½(ø5hÊãâñ©aX¤N‡Ò¿lXêÅöºMÚ;¤µ Ÿ­¸üˆ“"0tuצè„n"ô 3VÙAøáäIø»}a£ÝñG-»¦A$6ŸY$Æ0‰Œ8¿áhɈëJh#m‰¦!>H†‡ÔP»(¦ò,7fç\.W€¢‡Þ̈õôam›ê{êš_<î«´‚Á¶p÷ì>‹6_ÞûÁž©F¶—]{ü»¥ ⋽¾Å®PÛ„â‡/ühõÐÙËWô~ò_Œš—þŒÇ‰‚Jbر¸…Sú¯bYiiÒ04|^xldDå¥ _¸¥òn~còžÊG’Vî6í±44¿iûØô'Û·¦ØÒEvß.sgèB º1‘«ÔkqW„±ƒ,ä‡×æ;õ;ü~c~Y·#:¬ eäº]Æaòа +\¨EµeçvWqΡE{nzóGU™L®ûviÏ jk™ìØá8Îýx¶þÃFÏ1ÌâR\e¬2d$%€™5Ù]ž GLf^)‰Ä$³à¢›ŒŠÄÌQ{’ðr~0ªli«„Ê6bµö­™Ù1³F3)³I9 KYÖÈ"‰3­¸ú‡®Å_êm‚`Þüä/Ï~¦Åët8Æ´m¼ïÚéwæ Á>ýªû¶¼1‡n+ß5çW_Ì,Œ‚]¿üÙeã6L±1Q´ºù ©r³Ê&ćMÛwÓÔ{L%9ÂÍA9â‚Q¥ï´j” 7î%VpO¬»4‡Ã= XPKËP+/ä ñbú9a3ps&©žÀ gý tÔñ— ô6À-bpŸümí_µœZ¥ +ƒÁ *%”,M0­¢nFòøP6“: y´ôP“çÀ@·cB·¡Ý]$'r‡&^ƒ«aì("vIÄ÷ë>ÖÝ Ž“ön‡€Á*evÑSâÇlEM$‹)þ’Ó+¬ƒ#È©Oÿ=è0h¬tt¯\ë08L¤ƒt˜0¡Å7Y™>ŸÏ? •pD¼²ÀLŠ €“Y-Ö lóÌY.3/·.³ï´©‡¸+ŠÇZÇV4Ûš“‹l ’7»7©ËJô~W§Ì±Ú†”úC^½8£&´3aŒ ѬὑÄާ UNTÙˆFC]Q}‰¯¤¨¤¶„/qT­º +ß8?»þKJfOâ«¶–á]™Õžýeé¹J¢gȨ‚aTwƒ;ým'ÎýžŒ&¸ 5>·Ýš•.M¤¥ ZÚúÕÁAJ B/XH×YÚ•H9VÈ¡hÄî¶ìÙL•]°â®ÙˆÑá17v.Þ6Ñ`1Z“ß\Ø|ᘠo+½ù‹Uoñ¾j&t¾ò9í®©uM _Á„YõŸëýæÂY«ÁV4³%ä³íŽéÛ®%ÜœÿF´CŠø;!IŒ¢s–o©|¥œ3hrF£Gtû’¡ÇÍ©ä]éý;ôÞZ‹ùzG­üJ=*³Ó–0™<ÎòB6¡´$‘Lz +c'äѼD4ê)ðu‘ÅbÊIIT +GIˆF¼'Õ(ƒQ½›|ïN»©»Ž‹‚ŠLTmU½¥:ª:¡’©’Ñh!´ ‹ÔˆVT xU“MEÆï'ŒœÑQ1v©Ä^-©ñÝ=©TŠ¥zRBK[÷IDJ¡¦…ôH¸F xú¡åpª?ÁÊ~`f‰¾ŠþrD0êh}KBŸSfõi2Y•=0Ð&[B¦Ñ[ÎNÏf¨hkc!·œ•ôp¿íù~$?zÔˆybÞhåh÷t÷o½»½‡á09ìùš|éÑ5z‰VšÓ=Ñë}zªÏ5éõF“Gë‹°r‚ƒ4˜ #Q¯()ÍhiY*ež"LÊ+Ëx¥RÆ{4.K¦3;ÑÛ}vjÏ5Ûí³ÇUgå9˜˜ ‰ÜX"y +»ÒkD·‡€ßíñx 5z+¼¯‹ ‹zD7õù¼^·'JX~,Ú•C(g‰ºhaQ¬"ZT¤ÑhyST«ŒÆ*+=^¯gH…7&Â!â‹ÍŠ-=Û“ÅÄXnyL4&õ±õ±·bGc'°¬‹~*Z<>2‹Ðõä¡„ðn7O)ïé¢W‰V“Ÿãͼ·ÁtÈtÄô½‰79ª^ÊÊÙñhãIv±ÝPU”ùkiÃlK"ÑfŽ;‘á3¥$y%Á›ªeÒYÊtg¬B¡{•¬0±êºŒ!C"a?WôåÚþMš;÷6¤ÁKQ´‘ ÊÎ Å~)^Fú5²s›Ð[{Ÿ6K’ø÷,dáH ©ú3³Ëë%cû ×åôm6’YôÈÙTÛ“OKKÁ r*­º/ Àò_»!> Nðjf”ÄÍÉ‹K.+ቡ%cKf8KVøWä_™\—|$ïñ’CÑw}ïøDß-ø>j@.å«\™³ouþ¾_û¶å¿æ=p<¡óîMÿ„&—^’‰¬¬è“ egȆjK"+ò}þ¼D@,Èù +¡"ê@Qa§à-*5ÆZ ôµ……J{n(š—Çd‡o½ +èVQø"^¡,â†(‰v‘–]+Ýëqaï"q¬ ’‰Á­Á·‚'‚|Ñ³Þ +¤H8!PÁQ9vñÀÚц¢§¥íX˱É “BS "æ_`+ZÌÙÉœ ÒÚ!icÿ¾DªÄµÄ˜]K:}Zÿ\Hé“;Ú¤Õוþ±³Ü_Ò•þºÏ&Ì.%Ì\ü9òÉH2j{}TD£±.)’U Ó6K²u@ §xÿæûg´¯YnÙýÛ–öþðù/vLzìªÞƒTÝ;öLòyõº[’5÷ÿU²Fl/$§N\\9õ^”‚»Q0£>0>ó†•ïj(k)»Âz‹u•ó6×ÚªMÃÕçùëë(#‰Çê~;ü]ÛqÛ6…‹½¤É^Áìæ„˜;¬Úi×ËÌ@†ä”‡¸Âr¦94ÌÇWnˆŒ@ݹpM¬<êsLè!‘YÞ¥^êuÖ›#bI4ë–æ®Ì]Ÿ»%÷é\Y®cÔ{ˆ/c#JRMi-}ZuŸZÝcÌÄŒ#MÒ2º.ù8ûDr‘¥1g¼¦^*ùE3®²>Ç©Ôð\o)ªÏ3«‡ÑFdÝ´æáÂó[/ÞV7½éøï>¾‘Mk¦fïƒ>[?ªøÞ·gÎ|çɾÆÍ°óž—)Ñ·¬Ÿ]:¹Ìgp{b«/Üpð¶bVõ%Ó¯gþêÁÅÃç{-ÎИ17ßô[Ö#_§¯Cp»˜§Wi“²ªÑL¦JY’ Û™Ö +T¯!# +Šl„öøÒgÁ€š1Á¤èÜEîV÷!7¯w׺ܳÜË›žvq+Ý_E˜@Æùl;™ÊêX’ûÿ,íõl]ö\ô»æútÃGÒzüw~Ôû[6=Ü“lúÎ\Ž{ÿĨš\Ñ{›‡ð½§ =^‹ï]L‚{Ñú |éŸ:}‚{&]éŸÄà®còãî¯}ÿCÿàúÉwʯÒP^N\ßÍ®Ír¹ÑžYy-‚…ZÊ‹Ýá1ægVÐR ÅàÉ3¨%¦ËUétj•ÇbùÑѲ £On1J¦P47×5ª£Fõ Ê  ¾ºqCõhZÎbnÃR‡Ó«T6¨f©–ªVªÖ£Áá(zÉ€ ’ôWFµ-ÙM–Œ&Ôçèü¿^Ž$ùÓÖ"‰•ʬSg¼Ïeè[ƒÌVIxœ)_B\Ï·¿YöÔÕ£½Î­—T0ôl~á—Sn›/­M™¾¦gøös^½’¾€Ó©¥Õgøš—Îp®T’Q DBFLÅé_2þ@Ñn±S«M&ç ¯Œ;Íò¨_KUajÉ͈WF\)$±¬Pœ²Ô¹ÔµÔ½Ôs«õÛ~Ù~ó—VU«Ðjh5¶šøC”VÁ&ZEo§.›×áóxã¹¶ +Za-±ÕÓzk­‰4[m·Ú~k{¾fýÈfÖ™ ÂDÔB“fA0™=:³%c¥Þ°?¼,L!,„'†÷‡ß +ËÂâáp,î ÄA+—š¨ô*ŸŠêUûTGTß«ÒˆÌ 2•J.óhe¼ßÉš˜=³<Ä“tx®Œï¥W¡¢`#ù¢ÍŠ·YÅ"¼Õ*:“zë÷Vjí";©Mâª~U§ÌoygÍ“Ñâ3“ýfbŽ +2²ÙzÙ!/{ksa™Ú··†Æ2Š’ïÂ1Ôà=mÌ3j?îzÚœöniÓ«­åÖÚ…ï Ÿ²–®ÌÝ=’6'myÈúö>X‚Å¡š‡ý²ŸþÒR„¬18ßö¿Iì3®#Š‹w.ÞÏÒvê´9­Îì2=®ÃÙéo;©ÒÖ•>±Ý*ô-ãÌ lii +„8.ÄÉ[!“©Ìd:«Œ{ÿ¦ï¾ºéZŸÄ^•LÊXúç¾Zòr†ßX«=ý"_ÓÇY§ƒ\Ñé·¹ÿÄiNOâ¾Í=œ¿K×8ÊIWúQ‡ •Ê¡úY¨äsºÈk;åãI³’íh¡Yõ|QÉy_¿º›i›%» ÐÌ}ˆÊ6!Ù¥/ëh#CéCj‡ÁmèiÁÈ%þF«ZpDdY4R:l@Ù|×q¨ sÄI+ö=^ÈE_5¿Ât…órW»ùfçæ»Û[Í;Ÿ*Ú¥x.g»y§s·÷`ÎÉ‹š8Háî3Üå¤×®.Ü\øxζ—KÞ-ù¼DGî)Ñ) +D"Á@0nô˜l¹¨È%\™V•_ÑEŽŠ3È­qP—8*ùBþ²|.?·Z«›ï«ÐßuÖZ}€j Y-§ûGÊ€³Ò¶¾8 gõKå[äûäGä¼Ü1$oï€È&‰ñ=Ç™Èn#‰ŒÛ]ÛÝÍ|ÑE-ÝL~Ÿ””Æ>]£ÊPu–~ˆÚ¡#KFû@ Wyú$é“;ŒÊBeßÞnK[Ö)aƦ{Á‹MLéý™]_ÒHf· ˜B"9§ûvó²¾¾•˜‹JuIæáŸ}ëW}è­ íís¶ûU‚M3÷þ‰[:—1r{¹ú¦óž?áŠK—ì{Õ}›–^ýŒ^¸uÔÅUj»Ñ Ö;ó˜ÛsXÒmª'Ÿ¿`ú,fg î§ó_€â$¼ Ú§DP$ Ù Îmey“£ÈâpX-A·WÁ?ªmÑt‘¹»¢•?€úÈ\1sp +•ÆÐãÌS¹3/4´~‹YÔ«jõæ¥æ#fÎìȽðöÁè`H8&i~’Þ—bB‡ã˜ýXÖûó/”uœamâÔE*R¬)Ž_¿(þXð‘ð³d·æ9ï3±²ƒÊÃü'Êc²¯•+_BJeÃ4#Hƒæ<ïdš¬EÑ¢¹ˆ\,[¬¹Œ^£¾Æ{•ï6ïßóÁ]+òâ‰NG}»×šÙj!mMÄ€8‹˜n:KÝ'å ”!ŒäÝû~‘÷þ}×'_äç{ð£;ïüˆÿEÏ;¯ôþðÒÞ¯<Â'¾FÚ2zmËŸþ´íÍ!vÆ!gæÁ‰]5WTÐÅ|L¼jù$òaì¨ïhà›È×1EسŽôŒMó·DfÄé9Fnsh­l³h¹ÉÜdºÀrIäâØN™mt‹3WÈ5Fœ«…ÍÂ=ö»XÁ¶!Tˆô³Kò•;ܶŒ¶·¹ +Í^îþµ-ÒäT+›¶úÈß~õ9óÍ(CòÖ(ÑG}Ñ Q.êH„gä6Éã×Ò6þdfO¯cY?߀»<£Ø3 Õ fRõ©öòÁª½u°<„d9 ÿ2s—É.ú®½/½÷øœƒ“-‚Á6ï¡×öž"šƒ/r:7ã’|N›ktû׿zèð˜‰f›!1ü½zh/\³½}«çûÓgÎË[G™Aü*˜2"+’lâ ÒkgE‚«ÈærÙmA¯ÚŒ«ZÔÈ;âœod0`ö‚VcVàOl>•¿÷'Ä™ ´£ÓEÖîHäµg&Iø±-;?Ì MI ¸†ÿ“Œ~^,)×aÍ2ÁŽ¥QÉDÌ_ì†<\ëüæS²£é/v„”aG¿ŒêWøCÉŒ²)y@m}¤lDÊ<͈˜;?½ôí«®z{ù'÷HùeÜ}ÏÜs÷ü§–0Ùò›×®:zÅ•G®~|”¡ä­Ÿ|²•Q2•üÓEHÉðÃ[âBµu“…–Òát2K_¡¯˜~ïøÈø‘ãןíŸûþaÕ9ÜyîrZéë:ß7Ó5÷ԵØw½k­k“{“÷Y™þ2ë÷î€ñu÷ë^¹òeƒÓïGeËà Ø|À ÑNuVo² ØAŽÏE[Ð_Mª·šÉRó>ó!E¼ÙÈ{b‰ŽG”):’?š- l§ û !Ói5ËQ$ìt™}^Ú•=ÇÓ$é m$`µžµ=“¡LPdÉ|ÁéßZ?ìÂ?Ô™r»Püà ô!ú×þ@ÔÓïnÜxØIxèÕš2½Ã`J§×ëÏ¢äøÛ kžzb³ßG|Rf9#¢v¢¬]v£ö†’­ÚNíÎÄK‰Ã µM‰Æäk‚T•B )é¢ü3ÁB4)»ˆ(: Rn8„HKnÀ`ô; + ìr•RDZÕOüÎCiÞ-êŠ,¢e™å- oq$/ÛMÞ€¬‡OÚBI Ç%“2Å\-=ǤÕ²vd&néK0ÃrÄUbN^Â…Í÷A•ë# ì Ô9þß§[v+7«ÇH„hés +IŽö,eáÁgXøÌ·_±ªÌb7+M¿Zð‹+Èm’ ÕõŒî3IénF+ÝoUZFg[¤"ɤM–ËJ‹î†ÌÚ¶/›9^Ú­úËØ+bÖUï>yêÔ“ï®:¸nÝï¿nÝAúÚ}’ÄØ=uxþ…qiäüóòêNï&d×.½ãîzãÍw½ù&òÂ4ä…%È •äR±`“ó”ŸòÄB.’_&ß@î¢[Éôƒì êGä*vÊv)^Q| 8âT8•›$·õfŸ™šgÚÍf›=hÈ-’žü™ÅùùEÅÁ\A‘÷:¢›)9‚BFÕDffõ×ÊR–%‹J’ÉÒ’`%ñçº|n<Žè®^!¨•*¿ãˆà:ñ¨ +ɾâCÅ´¸‹|³£jôì>©/mGJ•ù’Óð³ÿ_¸ήÊ÷ïp…™]q´Óà,‡D¢IbHÁé’)ä—Ìá#N…;Ã’ì¼Ë€ÿs7ÈÓ'wùµ>sFûiÊ8Ü Ò6Ù€ŽÚϺ=VñsŽP2yâÆæ9·Í¼Ðçpøz¿gËÇ…7^6³®hñàL‰³Q/:5}ô¨õ =ïç_®ùêÿ=ßödT%äÞ瑬2p¨Á®ó‚ŽR‡è˜ì˜ëXá¸É¡0é„F3ê±r­ªQ& j­nÇÝÔc¹—i¹ë·\§UÙK˜Ë‡¢’Ãóh&7 QìðLZ9°Ù%ôHXJÕþØ}† ,ç=,¡¤éœ=­ìÐ ×®$cÙ{÷Ø%#qìlW@føðÃÞI§ÿ:HR¡.ÃäÒÎÞë¹JéÍ<°EL€Â™ +\³¾ÉÚ{…¾ÚI;mçîÖçLP®WnQnsïqËÜJs[»‘›e´Ÿ|†çƒšÌ ‹9¹sªÃo4åX7z™+q–h ”ã¼>­Îïñ4ð„wx÷]äm°¸¹˜g½ß•Øs¬öÇžpT×*qdoÞÿÆfv ªÇ´"I\{C¯ÎëtøèèÆÆaS{&@uÉMìí{NKœ?÷’ >‰ñ×ÎG.߇x݈\ž¤]»!ÉØª«Íeg ÌZ)ŒšÚù¦GMô@9É3çE +sóÊãɪpmdXnmù"ó¢æb ™*L4anÈý0òaù·‘oËOEN•+‡F†–/ +/Jn3o ÉÃÉP2b\Ó/ÃÝŒéw‚ø|ì¡Z¡–Å¢€š·ofÈç †‚î”IÒ¢¸¸¾¼¸¸¬±hJÝá —›Q,îÐÊMLÇhÔç-Ÿ¤(@PÒ`½7ôyƒ‘ŠâLa™PFËê‹ÊÊŠ‹‚õ"+œwdQ_;b„X,(’{£…q[NyCÄj¨—ç8g@¥âC**"‹Z—ã·YE_²ØÚn¥ÖÓQ׋²|´=J£§k È_[ÃYP³¯æP Wã÷¤}ωT”ÙÿLõÇèÛ-3VÁÏo6ü|î¬ýôAÊ„œIaI™8[©Èjþx®Ý¡Öò2M$—ùˆLîPÛ|$.Ëó»ÖÉ´ T3„Tæ '´´ ºá8º£N<‚"ý>ë#T^ÞéÓ=I›$\lÎ鬯l$K# -&‹äQ“¬Ø%dÈÿ<3?HS9›I¿¼dqÝœ@åò¡Í£GK;)Ê +/®«—’ %ùÃFHÅŸIþR’›3mù¨úúQÕçÏèÙŨ™þJœ:j^Ï;RúŽÓ=¹e2ÆRùb¤òéHå•d•8ä]ù»Jz@~@IRvÊ;•\›¢]Aç*.R^äâ6»‘Ók|;ÈNʹ}‹|O©WiÌø"ôŸ…Zê¥M± ñl6³$å°¯:ÔgW¥ŒN+@DˆÐ³[]²>£Ø–VWÊÉrüd®hòxê¸F£A­RûGÄÁARo7oEõÖÁtÛ•)«Ùfˆ³ç$.ÿæFØÿƒ^kv¹eJ…R®¤r· Î¥ôdtÛeb®þ—K¦\Ý6X»ÍÒÊʦ‘¹Þ5çõ|? Ý6]3âæž¿œE ¨Þ‘>§B4`#cÄJ£•·šmVîuòºæ]ú±ìOŠw5òK tÇ/T.T/Ò-6Ì3]lSZœ> â4*…6ÒÙLG­çؤXÔY’@(†VT1»è*Ñn ÈEvrSÄ6Kåûä‡äGå'ä2yùl‡EPŸÝ‚‹[wOK3˜ã–É3Žáí+j æôÉ‚9ÇlÛ“þ WÜÏvè¼ï€=Ù–QÆÖ¢Æj\µf˜{Ó¤÷ÖjÌ(Õ(X``ß ð Æ§0kŒX‰Õl°Õ˜Y`2ëͬÅш µ•5% (§÷¥H"£j |šóÝöùg{¹R½Ý/èý޼DLÓ>ݺõSäéý½'ˆaß~bè=ñâƒÿ}äûažóÞë%î@ )kKÔúªB²`™F[tĉüÝ +rMÞ¥…šßÉ÷«?T|¨ú(öaÉqùçj¥ƒËç®Q¬å6qOpr«[bYG‘Çáp{‚ÖÌ*¥1¾vÆ’T,Ê®FD—[¤¯¶¸«‘RsŠun€lä૎ȣ½’(eùã÷ê= žYž¥Þã(ì|—T»>×{wJr ü3ÿÁ¿>03Ø=×3»£@:.£ó†õ’ôŸ¶ÇBg¼lc®]KÖˆ”œè?ËRgøÒÇ=qÙµ\ÞÛóü§kßXjé —úïÜ»éðáM¿:ÌÍÙÔ7˜ÏÞΈ&ÏôÍ[-¨¾& âÊËÚ¦½2Ĭì:ÿßÛ6>%9ÚÌÁÍaÌÝóöysÊü:‡A¯ Œ_}-b…Ò÷Ø<6ã<6qs †’X«æwYiÜJœJ½J’ÀÚ"¥V«Rõ™M7kBvÓ-`ù“p½?øƒ1bÕ›ýjˆ©möjŸ×«Wªª½Üà4~?€ÍÊôUU®`ð+)ˆ‚9cãg;cS©Ì±R™ãÉ™ïÍŸãQÿßÄ­¨&"¶þ3\®F/—EL¼ÁF¹93ó64eÙðy° ûYqá4¦?Ëî.I‡bƒ¦_ÂÍlßY[žxíqJÆk°`›Û$4|/©œ×Ü?¢ñ2ꕱnò¢ç2Ɍϑá 2æïBĹ|ñ‘¸5f»…{Üúˆ­‹î¶î´) +t¥u½õië Ö#Ö^«r+í ‡(§ä•;o·Äi.·Äl•|¥e ?Æ2Ÿnn´4:ã“Kø–ù¶ùŽùñkø+-÷Zï±=J·ñ¿µlµí¢{ù.K‡íYdzñ×­¯Ú>¶¶}e=fKh¬.k‚&¬ Û*ǪøÖ½ÖWd¯˜?±~I¾´ýDOY²2§r„þc +™³`O‰ùËÂÂþ°æN°ÔÖð[anY¸=LÙá0o’N†³'ÞsgI‡û8v>¬AÅ}¯"OK‡Ä°€¨T›¤CbÁì!±§DƒÇS$ úö»¥bé±biß 1ÿ 1ÿ bþA'ÄüÙbûЪ²‘¨QeÎrT ñ0•n*¯ŽUœÕ~SµN^­ øý:V¾ÔNì¿s¶Q…±8éã‰r‡‰aàñbàpb 7”;ªÅÖ8‰ï%¿‘ކ­mÖiT,©*§¬eí¨(Êiù¨“ù[-Äò;3¿Ñ\-cÆtq’E;*«Ê¥l"“ÅÇH1ö Åx¿cg,V[¹L´$WÊÖË(;IFeÏ“Ï —DH ÿYK¿Äïf§ÅZØa2üôHGÉZúŽ’%Ng•`¯Mõ9%èdJ8ÆÿׇÉÎq#¶´´µ[vnaöDYŸM³+®t(ya`$—ë;,VöO‹õ•q·.ØÝµà©\Æ‹_°à’»w\Ôµ~ógªRœPwÏ1Â餯~16½˜š{¾¥÷õå—Þöƽȥ¥ä9±Öv£=˜ÐlI’44èDÛ)Óÿ5*Ó8ÓØà²Àp¥éÊà­¦[ƒ» Ï›ö_ ¾ÌÁNŒ¥FC©I-H>0®È Ó † Ú`t½í^âÝô¢…á +†%Ìÿ]X,é>6QSZXXRL”šT™2Ù¦Ìq§Yb[±ØŠL6›ÙtšJó¬tI,VŠÅ¡`^(h*-õ‡‚f´© F£Ÿ}ûÔhRŠF¥WfT:Xír™«N¡ZM«Õ*y¸:¯¤:‘ÈËïD/]æ=ê=Á4¯ò‰ìТ óË–ÉŽÊNÈä2GYÞ‰Þ$çXKêÐmýJôÀáÜÚì©ö-UY–nþçóÙ'®º/+œÝZ¡RÊ”tÂ7@ú¾+^Öï>ƒ^䡳|º¸÷j‡×©³XKF™N&K‚þsŸS0ö|{£´KGÒ‰©È¨³¨$2j Û3$¤³*N½Üg1ÏÂú÷þ P FŠ uQÊéˆÂV«‰¶Ù¤Y¡þ›é# +©¿áRü·]fsŸ³£K¤oØŸ”¾`/}æöEºÏªj©mSy­nÇŒ=Vƒÿ¢w’MkñÆÉŸ² ÉÇô3Þ‘I­((„ÏaƒP¯ÐüÍð¢.ê-°‚üMñ"ý‡ñê¶Ì0Nvg¿é?xeýß2Hmø°÷c»×âUÑ™ö~âðX½jH(î5ëläél‚ý„û½%ÀµÎæféS?(UJé÷ŠLšÍâWæ½&}¸gJq¿ôë¬DºCºýÖÚ”o¦§ÿÈŸÊ–úÉBþMö{>¬…tÃ7D {áB/ù”¶ø 6ì!oÂqøk¶Áïà=8@Œð|ALäMR s`Ü…æåû`€é°„FØíp Þ± ¥v°C!,€°Öà a.¼K‡ÁŸI +{òl€¼ãz¼ã}¸¦Áó°öáh,°îÀºv¬=wB3TC%>õnè&wÓ¹ Û¤_]m”ž4{¸¶á}™kOöb½õ]ÍÙë4™„£¸Ö“¥Ò¨¥i!{I->Ljc]‚=Í»f@$ >%q…aø.Ëà8ùßò6ØŽ#™‚ïµïb#Z€`„;ÒÁ·ÿ˜ôö²Ç=ç]—Щƒôu +ç1G±/ö+­ qî2×éš"]{H +Ÿ™"C)í¨éV“Ã8wà3wã¼¼ Ý4•î°÷»ñyˆ»r9™FæfñͰröÉZ¯Ä·dp}úszŸ¹A‚1߃Oo— {îƒBœ5 pÎñ>¬ŸõˆSpà($X‰oÈ~óuqÁ½ð\“þœ1”\×,„Çp®6ÁêaäI=Ôàô}ÈuXËZKŸŸKÿü‡ÎïKH¿Ç›§ÛQà¤=ö:è·¤ø~[ˆÇ͸‹_{±Ž’…d!<…”Áæ¨oæúf)3S×õÃ%H¹—@ ÎóÞAð<Þ±éjÎUß|¶gç³oN3óyuÿ\öA©áô}éùF¤¸‰° y’•÷Ö#}¥àV½ÛiÀE•H{‰Äôi|Ÿºô—> •øt>ñ]‰G›p6‡nÄq\„tsÇ0ŸàÖÎ…9ˆµ5d/L'<Ô“ ` Ji=RJL…±dŽý÷8îéˆÃQp‰cê„Ë$J^‰×n‰Ž·AçßW mz‘4&+ÆBcú\ +q¼®ÀvQf+qùÒ8š x¼î¦#u[q¼pî®Aºš±sCñºÊÀ‡÷ßÀäÈ£8þ+ð=ÇC=ð‡½? +¿„0܈wÝŽw3iò<ʃP–þ1v%Þq >ù^äïDzTó‹ŸúÒ?¾…v* Ëžc¿):J5Šê®ŸuÍ™ Qž Ú[3S˜2`¨<L½ç‚û´½`Çwt^™Ïgç‚wѹà¿ È„.ãýQ-@ ß)ÂD€}…$ŸQ<á4@öSí‡l¨š™¡ß { æ8€¸(#… Ô_øøÿ_²ßaÿüþÿÿÀà?ðÿ Д¡ëH΃6´Ý)ªeEì„8·E6Ù{`jz?·¿sZ™Ø…ÑP)Ú‘.mg±F'Ū²Úº"n?,Cxá³0\™-áÀ‡a-+]/ÕoåöBÂ~„·XÉ,Ùƒ%{°d–Ôr]@¸g¹g:Ã>|ôÎŽpé÷uNn¤(w·fwa6ž•×cœ‡ñ†l¼Ž[ÓYíÓש¤ŸäúÃ4Åw»¿stCén)1$%%6÷•lÞ%¾:w?Žê~Õý8ªûqTßcH°×ÍX¾Ë7cùf©|3Û)Æ®¹Ù®²‰û;õÖl &êÔ\w”bÙx:wAg©o_]+7 »~Z +·rSÙ/Há,)l•RíJ)½TJ/•ÒµRº6›faÑ Ð'…zr“¹)h«ø¸IÜX)žÈBÛÌÇ5`žÅ¸ó¤x<7ZŠÏÇr;Æã°ã±\½”?ó#1ƒyæê;GúŠë–a~Ö¡ýʱò‘8†‘8¦‘8I¬d=ÂV„#RÉ, W"Bख„‰×¼ê¸:¼CÄ>D¬ãD¼jñªáj°f¶†¡È¥¤wLa«>)…s•žSˆž¢' +.…¡ŸKB1‚ˆ0¡A†ýäã}ù8®||B>W€¶— еh³ù86öÑ5àÅØK×tz}bŠî„‰­ËÚéÎN™Q_gÆv¬mBÂ,„•[žFPBm¦FÔÐZZË5ÐŽGêÎÝ‘J•JqYE&v{2±ÖYª¯»”ËÅiÊ…-9‡œ‹¯Ú—ó!P$ìC8„pMx '#†“ÃŒáý1©•\j÷=BC"Šaÿg¶‘IwûŠõÂJãXÇ\ï‰cÛ8–ÁHw°ú‰ëöeë‚1%â b_Am†µRJ¡ vRöû[k:ÉP}Ýœ÷¬¤ëp6×á¼­cBaMm¶Åz„§dÜn¼rñŠáÇ+ˆW/?^ˆA΋ØÛ€×z¼nÇk^kñZƒØ0?Ø— ³’K“+“ë“[’O'÷%{él¼Zi«¨« F£Aé¬(3AGþ!…OJá¥R(J¡MtÎÔ›©{m¦nÓLÝÝ3u3ufêêgêŠfêºÈÑ–Ð}œÐmHè.Hè*ºdBW–Ðå&tuÒD¦ƒ^ÂáRX*…A)ôé:P=Gš! DŠ'±|ŸºxÒé»1Ð¥Äè—™\s&ªf…ÏøŠó}ù™’h& +žç±˜FžIˆùŠ×³¢¢JQ¨(PÄ1EHáS˜•F¥ ÌQj•j¥R)WòJª%;û-&˜ïÖ,X$çYÈKi²f\»”()Œ…7ŽŽ›2œŒëØ?ÆÍñwü8%ÔEÔ“ftÈBÃI‡qŒ›:ÜÞ1$1®K‘žÜQ™סšØÜ¸Û›0×Aoí"0µ±‹¤YÑÍ.öo v!ù7¯seã¦&vOãvž¬[×ÖËkíµÆCUýÈ´fÃA'Û샹±‘x:î7¥±ãqOSG)K¤=MãpæØØM+iŨ‘»é55îV·ÓÊQ“Y¹º}dÓ@;ðcùÈÝ`‘Ôü¬øÏjç¥CX»‹2í¼R;ïí¶ Œ¹=èk3Lj3ìÌ6óÏl3_j3?ۆ˴ j£8 +©M@qôœ6Þ£M䟶4›ó†'þŇ솱ä½í#®fÿr£54jBkÇšËØ;Úçøý»ay/ûß8¢­sæ.`ñìy]ä½Ð¼‘#B#ýÛÇ^}n}ÇÕ¬zlhäv¸zÔÔÆíW‹óFvŽÇŽ +ÍÙ´côì¼'ÏxÜm}Ûž7ûŸt6›u–Çž5úÉRý$«Ížõ${Ö“ìY£ÅÑÒ³$ªG²TÂð¦33ñªQ#·ºMí²‰š«öë]{x ¿M¢©CÞ¡C`Uuu¬ +¹ŒUå°ÿ¬’­²__pí!¿ÍV Xl û¨…#ñoùòlâßü[¾|ùŠ —_¸œÅÒßò—!04ÁrX¾ð ê´ÒúæCiÌdó„µ’Œæ–/oZ‘9œ´ü2`½­`Á@çý©Ë°g²|0Àò³?Œ2ìnùe$ÁN£b"K6Ë Vb7À™íàÿßYE­ +endstream +endobj +549 0 obj +<> +endobj +550 0 obj +<>/W [3[600]7[600]13[600 600]16[600 600 600]21[600 600]29[600]33[600]38[600]40[600]42[600]44[600]48[600]53[600 600 600 600]58[600]63[600]68[600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600]85[600 600 600 600]90[600]92[600]178[600 600]]/Type/Font/Subtype/CIDFontType2/FontDescriptor 549 0 R/DW 1000/CIDToGIDMap/Identity>> +endobj +551 0 obj +<>stream +xœ]”K«Û0…÷þZ¶ta[ÒH·fÓRÈ¢š´tkËr04ŽqœEþ}å9í\¨!ø8#9zÔŽó´™úÛzK§¼™qš‡5ßo5eÓçË4W­5Ô¶¿oÂtí–ª.ŧç}Ë×ã<ÞªÃÁÔßËÇû¶>Í›óù×»æmU]‡¼Nó¥(ÞþøY”ÓcY~çkž7ÓTÌfÈcês·|é®ÙÔRø*žŸK6VÞ[8H·!ß—.åµ›/¹:4åáçòp•çá¿Ï> ª_ÿîXi)²ÒzH+m)³Òö"µ +í©e¥Í,+í‰Xé,¤ÀJç Éô ƒ ‹…Ã[)= +í +=AêXé#¤ÄJÿ^$'­€ 9˜¬:˜ftHˆÐÉô Á„ëXI0áFVRÉ{V†±2À„GÃÂ>²2À„GÂ¥Ue‹0À—ïY^ !)a@^~`eÀ +yÙ `À6ñÒÐ#IÄ`@Ð$‹ +,-YVìr¬ŒØ¾D¬Œ‡°6ˆp(²2"ÂÚ#Â!¬0" J¬Œh»G;mÓ¢¡^í´ûŽÝÏâ¿C·ËýÆÐSžëZ.¹Vä˜ï|š³Þ<ËmÙ«LùUðt!R +endstream +endobj +224 0 obj +<> +endobj +114 0 obj +<> +endobj +515 0 obj +<> +endobj +552 0 obj +<> +endobj +553 0 obj +<> +endobj +554 0 obj +<> +endobj +555 0 obj +<>stream + + + +application/pdf +iText 2.1.6 by 1T3XT +2011-07-21T20:07:17-07:002011-07-21T20:07:17-07:00Documill Publishor 6.3.7 by Documill (http://www.documill.com/) + + + + + + + + + + + + + + + + + + + + + + +endstream +endobj +556 0 obj +<> +endobj +557 0 obj +<> +endobj +xref +0 558 +0000000000 65535 f +0000257786 00000 n +0000291794 00000 n +0000230884 00000 n +0000230649 00000 n +0000230530 00000 n +0000230767 00000 n +0000230855 00000 n +0000230912 00000 n +0000230796 00000 n +0000230941 00000 n +0000230470 00000 n +0000230737 00000 n +0000230619 00000 n +0000230825 00000 n +0000230559 00000 n +0000230500 00000 n +0000230677 00000 n +0000230707 00000 n +0000230589 00000 n +0000021359 00000 n +0000303440 00000 n +0000000015 00000 n +0000000123 00000 n +0000000231 00000 n +0000000339 00000 n +0000000447 00000 n +0000000559 00000 n +0000000671 00000 n +0000000779 00000 n +0000000887 00000 n +0000000999 00000 n +0000001108 00000 n +0000001217 00000 n +0000001329 00000 n +0000001437 00000 n +0000001549 00000 n +0000001661 00000 n +0000001769 00000 n +0000001881 00000 n +0000001994 00000 n +0000002107 00000 n +0000002220 00000 n +0000002330 00000 n +0000002443 00000 n +0000002556 00000 n +0000002669 00000 n +0000002781 00000 n +0000002893 00000 n +0000003006 00000 n +0000003119 00000 n +0000003232 00000 n +0000003344 00000 n +0000003454 00000 n +0000003567 00000 n +0000003680 00000 n +0000003792 00000 n +0000003904 00000 n +0000004017 00000 n +0000004130 00000 n +0000004243 00000 n +0000004353 00000 n +0000004466 00000 n +0000004579 00000 n +0000004691 00000 n +0000004803 00000 n +0000004916 00000 n +0000005029 00000 n +0000005142 00000 n +0000005255 00000 n +0000005368 00000 n +0000005480 00000 n +0000005592 00000 n +0000005705 00000 n +0000005818 00000 n +0000005931 00000 n +0000006043 00000 n +0000006152 00000 n +0000006265 00000 n +0000006378 00000 n +0000006490 00000 n +0000006602 00000 n +0000006711 00000 n +0000006823 00000 n +0000006935 00000 n +0000007047 00000 n +0000007159 00000 n +0000007271 00000 n +0000007381 00000 n +0000007494 00000 n +0000007607 00000 n +0000007719 00000 n +0000007831 00000 n +0000007944 00000 n +0000008057 00000 n +0000008170 00000 n +0000008283 00000 n +0000008396 00000 n +0000008508 00000 n +0000008620 00000 n +0000008733 00000 n +0000008846 00000 n +0000008959 00000 n +0000009073 00000 n +0000009183 00000 n +0000009296 00000 n +0000009409 00000 n +0000009519 00000 n +0000009629 00000 n +0000009761 00000 n +0000009894 00000 n +0000010027 00000 n +0000010160 00000 n +0000010293 00000 n +0000322783 00000 n +0000043302 00000 n +0000022198 00000 n +0000022344 00000 n +0000022490 00000 n +0000022636 00000 n +0000022782 00000 n +0000022928 00000 n +0000023074 00000 n +0000023220 00000 n +0000023361 00000 n +0000023498 00000 n +0000023639 00000 n +0000023780 00000 n +0000023921 00000 n +0000024062 00000 n +0000024202 00000 n +0000024342 00000 n +0000024471 00000 n +0000024603 00000 n +0000024735 00000 n +0000024866 00000 n +0000024997 00000 n +0000025129 00000 n +0000025261 00000 n +0000025393 00000 n +0000025545 00000 n +0000025700 00000 n +0000025855 00000 n +0000026009 00000 n +0000026163 00000 n +0000026318 00000 n +0000026473 00000 n +0000026628 00000 n +0000026782 00000 n +0000026936 00000 n +0000027090 00000 n +0000027243 00000 n +0000027397 00000 n +0000027547 00000 n +0000027700 00000 n +0000027853 00000 n +0000028005 00000 n +0000028157 00000 n +0000028310 00000 n +0000028463 00000 n +0000028616 00000 n +0000028768 00000 n +0000028920 00000 n +0000029073 00000 n +0000062509 00000 n +0000043868 00000 n +0000043996 00000 n +0000044127 00000 n +0000044258 00000 n +0000044388 00000 n +0000044517 00000 n +0000044647 00000 n +0000044778 00000 n +0000044909 00000 n +0000045036 00000 n +0000045166 00000 n +0000045296 00000 n +0000045425 00000 n +0000045554 00000 n +0000045684 00000 n +0000045814 00000 n +0000045944 00000 n +0000046073 00000 n +0000046205 00000 n +0000046337 00000 n +0000046468 00000 n +0000046599 00000 n +0000046731 00000 n +0000046863 00000 n +0000046995 00000 n +0000047139 00000 n +0000047286 00000 n +0000047433 00000 n +0000047579 00000 n +0000047725 00000 n +0000047872 00000 n +0000048018 00000 n +0000048164 00000 n +0000048311 00000 n +0000048458 00000 n +0000048605 00000 n +0000048752 00000 n +0000048895 00000 n +0000049041 00000 n +0000049187 00000 n +0000049333 00000 n +0000049479 00000 n +0000049625 00000 n +0000049771 00000 n +0000049917 00000 n +0000050063 00000 n +0000050209 00000 n +0000050336 00000 n +0000050466 00000 n +0000050596 00000 n +0000050726 00000 n +0000050856 00000 n +0000050986 00000 n +0000051116 00000 n +0000051245 00000 n +0000051385 00000 n +0000051525 00000 n +0000051665 00000 n +0000078495 00000 n +0000322647 00000 n +0000063145 00000 n +0000063303 00000 n +0000063460 00000 n +0000063617 00000 n +0000063775 00000 n +0000063933 00000 n +0000064091 00000 n +0000064249 00000 n +0000064407 00000 n +0000064565 00000 n +0000064722 00000 n +0000064879 00000 n +0000065037 00000 n +0000065194 00000 n +0000065351 00000 n +0000078798 00000 n +0000079076 00000 n +0000093916 00000 n +0000079239 00000 n +0000079379 00000 n +0000079519 00000 n +0000079659 00000 n +0000117316 00000 n +0000094131 00000 n +0000094282 00000 n +0000094436 00000 n +0000094589 00000 n +0000094742 00000 n +0000094896 00000 n +0000095050 00000 n +0000095204 00000 n +0000095358 00000 n +0000095512 00000 n +0000095666 00000 n +0000095820 00000 n +0000095974 00000 n +0000096131 00000 n +0000096291 00000 n +0000096451 00000 n +0000096610 00000 n +0000096768 00000 n +0000096927 00000 n +0000097087 00000 n +0000097247 00000 n +0000097407 00000 n +0000097567 00000 n +0000097727 00000 n +0000097887 00000 n +0000098047 00000 n +0000098207 00000 n +0000098367 00000 n +0000098506 00000 n +0000098648 00000 n +0000098790 00000 n +0000098931 00000 n +0000099072 00000 n +0000099214 00000 n +0000099356 00000 n +0000099498 00000 n +0000099640 00000 n +0000099782 00000 n +0000099917 00000 n +0000100055 00000 n +0000100193 00000 n +0000100330 00000 n +0000100467 00000 n +0000100605 00000 n +0000100743 00000 n +0000100881 00000 n +0000101019 00000 n +0000101157 00000 n +0000117872 00000 n +0000118012 00000 n +0000118155 00000 n +0000118298 00000 n +0000118440 00000 n +0000118582 00000 n +0000118725 00000 n +0000118868 00000 n +0000119011 00000 n +0000119154 00000 n +0000119297 00000 n +0000119440 00000 n +0000119606 00000 n +0000119775 00000 n +0000119944 00000 n +0000120112 00000 n +0000120280 00000 n +0000120449 00000 n +0000120617 00000 n +0000120785 00000 n +0000120954 00000 n +0000121123 00000 n +0000121292 00000 n +0000121461 00000 n +0000121629 00000 n +0000121797 00000 n +0000121966 00000 n +0000122135 00000 n +0000122304 00000 n +0000122461 00000 n +0000122621 00000 n +0000122780 00000 n +0000122939 00000 n +0000123099 00000 n +0000123259 00000 n +0000123419 00000 n +0000123579 00000 n +0000123739 00000 n +0000123899 00000 n +0000124059 00000 n +0000124218 00000 n +0000124377 00000 n +0000124537 00000 n +0000124698 00000 n +0000124862 00000 n +0000125026 00000 n +0000125190 00000 n +0000125354 00000 n +0000125518 00000 n +0000125681 00000 n +0000125844 00000 n +0000126008 00000 n +0000126171 00000 n +0000126334 00000 n +0000126498 00000 n +0000126662 00000 n +0000142295 00000 n +0000142926 00000 n +0000143036 00000 n +0000143146 00000 n +0000143255 00000 n +0000143364 00000 n +0000143474 00000 n +0000143584 00000 n +0000143694 00000 n +0000143804 00000 n +0000143914 00000 n +0000144023 00000 n +0000144132 00000 n +0000144242 00000 n +0000144352 00000 n +0000144462 00000 n +0000144572 00000 n +0000144682 00000 n +0000144792 00000 n +0000144902 00000 n +0000145012 00000 n +0000145122 00000 n +0000145232 00000 n +0000145342 00000 n +0000145452 00000 n +0000145562 00000 n +0000145672 00000 n +0000145782 00000 n +0000145892 00000 n +0000146002 00000 n +0000146112 00000 n +0000146222 00000 n +0000146332 00000 n +0000146441 00000 n +0000146550 00000 n +0000146660 00000 n +0000146770 00000 n +0000146877 00000 n +0000146987 00000 n +0000147097 00000 n +0000147207 00000 n +0000147317 00000 n +0000147426 00000 n +0000147535 00000 n +0000147645 00000 n +0000147755 00000 n +0000147913 00000 n +0000148074 00000 n +0000148235 00000 n +0000148396 00000 n +0000148557 00000 n +0000148718 00000 n +0000148879 00000 n +0000149040 00000 n +0000149201 00000 n +0000149362 00000 n +0000149523 00000 n +0000149684 00000 n +0000149845 00000 n +0000150006 00000 n +0000150167 00000 n +0000150328 00000 n +0000150489 00000 n +0000150645 00000 n +0000150804 00000 n +0000150963 00000 n +0000151122 00000 n +0000151281 00000 n +0000151440 00000 n +0000151598 00000 n +0000151756 00000 n +0000151915 00000 n +0000152073 00000 n +0000152231 00000 n +0000152390 00000 n +0000152548 00000 n +0000152708 00000 n +0000152871 00000 n +0000153034 00000 n +0000153197 00000 n +0000153360 00000 n +0000153523 00000 n +0000153685 00000 n +0000153847 00000 n +0000154010 00000 n +0000154172 00000 n +0000154334 00000 n +0000154496 00000 n +0000154658 00000 n +0000154824 00000 n +0000154992 00000 n +0000155160 00000 n +0000155329 00000 n +0000155498 00000 n +0000155667 00000 n +0000155836 00000 n +0000156004 00000 n +0000156172 00000 n +0000156341 00000 n +0000156510 00000 n +0000156679 00000 n +0000156848 00000 n +0000157017 00000 n +0000157186 00000 n +0000157355 00000 n +0000157524 00000 n +0000173352 00000 n +0000174375 00000 n +0000174554 00000 n +0000174736 00000 n +0000174918 00000 n +0000175099 00000 n +0000175280 00000 n +0000175462 00000 n +0000175644 00000 n +0000175826 00000 n +0000176008 00000 n +0000176190 00000 n +0000176371 00000 n +0000176552 00000 n +0000176734 00000 n +0000176916 00000 n +0000177098 00000 n +0000177280 00000 n +0000177461 00000 n +0000177642 00000 n +0000177824 00000 n +0000178005 00000 n +0000178186 00000 n +0000178368 00000 n +0000178519 00000 n +0000178673 00000 n +0000178827 00000 n +0000178980 00000 n +0000179133 00000 n +0000179287 00000 n +0000179440 00000 n +0000179593 00000 n +0000179747 00000 n +0000179901 00000 n +0000180055 00000 n +0000180209 00000 n +0000180363 00000 n +0000180521 00000 n +0000180678 00000 n +0000180835 00000 n +0000180993 00000 n +0000181151 00000 n +0000181309 00000 n +0000181467 00000 n +0000181625 00000 n +0000181783 00000 n +0000181940 00000 n +0000182097 00000 n +0000182255 00000 n +0000182412 00000 n +0000182569 00000 n +0000197428 00000 n +0000214518 00000 n +0000198011 00000 n +0000198151 00000 n +0000198291 00000 n +0000198431 00000 n +0000322925 00000 n +0000228026 00000 n +0000214733 00000 n +0000214892 00000 n +0000215051 00000 n +0000215210 00000 n +0000215351 00000 n +0000215487 00000 n +0000215627 00000 n +0000215767 00000 n +0000215907 00000 n +0000216047 00000 n +0000216186 00000 n +0000216325 00000 n +0000228294 00000 n +0000228427 00000 n +0000228560 00000 n +0000228692 00000 n +0000228824 00000 n +0000228957 00000 n +0000230259 00000 n +0000230971 00000 n +0000256421 00000 n +0000256612 00000 n +0000257134 00000 n +0000257920 00000 n +0000290234 00000 n +0000290416 00000 n +0000291028 00000 n +0000291923 00000 n +0000302648 00000 n +0000302838 00000 n +0000303101 00000 n +0000303577 00000 n +0000321470 00000 n +0000321654 00000 n +0000322100 00000 n +0000323011 00000 n +0000323087 00000 n +0000323501 00000 n +0000323537 00000 n +0000326387 00000 n +0000326467 00000 n +trailer +<<0d26f2e6f76acce7a363ffc66a61e163>]/Info 557 0 R/Size 558>> +startxref +326666 +%%EOF diff --git a/doc/openshot.svg b/doc/openshot.svg new file mode 100644 index 00000000..7010978f --- /dev/null +++ b/doc/openshot.svg @@ -0,0 +1,540 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/include/AudioBufferSource.h b/include/AudioBufferSource.h new file mode 100644 index 00000000..0ad964af --- /dev/null +++ b/include/AudioBufferSource.h @@ -0,0 +1,72 @@ +#ifndef OPENSHOT_AUDIOBUFFERSOURCE_H +#define OPENSHOT_AUDIOBUFFERSOURCE_H + +/** + * \file + * \brief Header file for AudioBufferSource class + * \author Copyright (c) 2011 Jonathan Thomas + */ + +/// Do not include the juce unittest headers, because it collides with unittest++ +#define __JUCE_UNITTEST_JUCEHEADER__ + +#include +#include "juce.h" + +using namespace std; + +namespace openshot +{ + + /** + * \brief This class is used to expose an AudioSampleBuffer as an AudioSource in juce. + * + * The juce library cannot play audio directly from an AudioSampleBuffer, so this class exposes + * an AudioSampleBuffer as a AudioSource, so that juce can play the audio. + */ + class AudioBufferSource : public PositionableAudioSource + { + private: + int position; + int start; + bool repeat; + AudioSampleBuffer *buffer; + + public: + /// Default constructor + AudioBufferSource(int samples, int channels); + + /// Destructor + ~AudioBufferSource(); + + /// Get the next block of audio samples + void getNextAudioBlock (const AudioSourceChannelInfo& info); + + /// Prepare to play this audio source + void prepareToPlay(int, double); + + /// Release all resources + void releaseResources(); + + /// Set the next read position of this source + void setNextReadPosition (int newPosition); + + /// Get the next read position of this source + int getNextReadPosition() const; + + /// Get the total length (in samples) of this audio source + int getTotalLength() const; + + /// Determines if this audio source should repeat when it reaches the end + bool isLooping() const; + + /// Set if this audio source should repeat when it reaches the end + void setLooping (bool shouldLoop); + + /// Add audio samples to a specific channel + void AddAudio(int destChannel, int destStartSample, const float* source, int numSamples, float gainToApplyToSource); + }; + +} + +#endif diff --git a/include/Cache.h b/include/Cache.h new file mode 100644 index 00000000..d7ecde1e --- /dev/null +++ b/include/Cache.h @@ -0,0 +1,63 @@ +#ifndef OPENSHOT_CACHE_H +#define OPENSHOT_CACHE_H + +/** + * \file + * \brief Header file for Cache class + * \author Copyright (c) 2011 Jonathan Thomas + */ + +#include +#include +#include "Frame.h" +#include "Exceptions.h" + +/// This namespace is the default namespace for all code in the openshot library. +namespace openshot { + + /** + * \brief This class is a cache manager for Frame objects. It is used by FileReaders (such as FFmpegReader) to cache + * recently accessed frames. + * + * Due to the high cost of decoding streams, once a frame is decoded, converted to RGB, and a Frame object is created, + * it critical to keep these Frames cached for performance reasons. + */ + class Cache { + private: + int max_frames; ///< This is the max number of frames to cache + map frames; ///< This map holds the frame number and Frame objects + queue frame_numbers; ///< This queue holds a sequential list of cached Frame numbers + + /// Clean up cached frames that exceed the number in our max_frames variable + void CleanUp(); + + public: + /// Default constructor, max frames to cache is 20 + Cache(); + + /// Constructor that sets the max frames to cache + Cache(int max_frames); + + /// Add a Frame to the cache + void Add(int frame_number, Frame frame); + + /// Check for the existance of a frame in the cache + bool Exists(int frame_number); + + /// Get a frame from the cache + Frame GetFrame(int frame_number); + + /// Clear the cache of all frames + void Clear(); + + /// Display the list of cache and clear the cache (mainly for debugging reasons) + void DisplayAndClear(); + + /// Count the frames in the queue + int Count(); + + }; + +} + +#endif diff --git a/include/Coordinate.h b/include/Coordinate.h new file mode 100644 index 00000000..db20c4e8 --- /dev/null +++ b/include/Coordinate.h @@ -0,0 +1,41 @@ +#ifndef OPENSHOT_COORDINATE_H +#define OPENSHOT_COORDINATE_H + +/** + * \file + * \brief Header file for Coordinate class + * \author Copyright (c) 2011 Jonathan Thomas + */ + +/// This namespace is the default namespace for all code in the openshot library. +namespace openshot { + + /** + * \brief This class represents a Cartesian coordinate (X, Y) used in the Keyframe animation system. + * + * Animation involves the changing (i.e. interpolation) of numbers over time. A series of Coordinate + * objects allows us to plot a specific curve or line used during interpolation. In other words, it helps us + * control how a number changes over time (quickly or slowly). + * + * Please see the following Example Code: + * \code + * Coordinate c1(2,4); + * assert(c1.X == 2.0f); + * assert(c1.Y == 4.0f); + * \endcode + */ + class Coordinate { + public: + float X; ///< The X value of the coordinate + float Y; ///< The Y value of the coordinate + + /// The default constructor, which defaults to (0,0) + Coordinate(); + + /// Constructor which also sets the X and Y + Coordinate(float x, float y); + }; + +} + +#endif diff --git a/include/Exceptions.h b/include/Exceptions.h new file mode 100644 index 00000000..e877bfa1 --- /dev/null +++ b/include/Exceptions.h @@ -0,0 +1,100 @@ +#ifndef OPENSHOT_EXCEPTIONS_H +#define OPENSHOT_EXCEPTIONS_H + +/** + * \file + * \brief Header file for all Exception classes + * \author Copyright (c) 2011 Jonathan Thomas + */ + +#include + +using namespace std; + +namespace openshot { + + /** + * \brief Base exception class with a custom message variable. + * + * A custom error message field has been added to the std::exception base class. All + * OpenShot exception classes inherit from this class. + */ + class BaseException //: public exception + { + protected: + string m_message; + public: + BaseException(string message) : m_message(message) { } + virtual ~BaseException() throw () {} + virtual const char* what() const throw () { + // return custom message + return m_message.c_str(); + } + }; + + /// Exception for frames that are out of bounds. + class OutOfBoundsFrame : public BaseException + { + public: + int FrameRequested; + int MaxFrames; + OutOfBoundsFrame(string message, int frame_requested, int max_frames) + : BaseException(message), FrameRequested(frame_requested), MaxFrames(max_frames) { } + virtual ~OutOfBoundsFrame() throw () {} + }; + + /// Exception for an out of bounds key-frame point. + class OutOfBoundsPoint : public BaseException + { + public: + int PointRequested; + int MaxPoints; + OutOfBoundsPoint(string message, int point_requested, int max_points) + : BaseException(message), PointRequested(point_requested), MaxPoints(max_points) { } + virtual ~OutOfBoundsPoint() throw () {} + }; + + /// Exception for files that can not be found or opened + class InvalidFile : public BaseException + { + public: + string file_path; + InvalidFile(string message, string file_path) + : BaseException(message), file_path(file_path) { } + virtual ~InvalidFile() throw () {} + }; + + /// Exception when no streams are found in the file + class NoStreamsFound : public BaseException + { + public: + string file_path; + NoStreamsFound(string message, string file_path) + : BaseException(message), file_path(file_path) { } + virtual ~NoStreamsFound() throw () {} + }; + + /// Exception when no valid codec is found for a file + class InvalidCodec : public BaseException + { + public: + string file_path; + InvalidCodec(string message, string file_path) + : BaseException(message), file_path(file_path) { } + virtual ~InvalidCodec() throw () {} + }; + + /// Exception when decoding audio packet + class ErrorDecodingAudio : public BaseException + { + public: + string file_path; + int frame_number; + ErrorDecodingAudio(string message, int frame_number) + : BaseException(message), frame_number(frame_number) { } + virtual ~ErrorDecodingAudio() throw () {} + }; + +} + +#endif diff --git a/include/FFmpegReader.h b/include/FFmpegReader.h new file mode 100644 index 00000000..c185e2a7 --- /dev/null +++ b/include/FFmpegReader.h @@ -0,0 +1,133 @@ +#ifndef OPENSHOT_FFMPEG_READER_BASE_H +#define OPENSHOT_FFMPEG_READER_BASE_H + +/** + * \file + * \brief Header file for FFmpegReader class + * \author Copyright (c) 2011 Jonathan Thomas + */ + +#include "FileReaderBase.h" + +// Required for libavformat to build on Windows +#ifndef INT64_C +#define INT64_C(c) (c ## LL) +#define UINT64_C(c) (c ## ULL) +#endif + +extern "C" { + #include + #include + #include +} + +#include +#include +#include +#include +#include "Magick++.h" +#include "Cache.h" +#include "Exceptions.h" + +using namespace std; + +namespace openshot +{ + + /** + * \brief This class uses the FFmpeg libraries, to open video files and audio files, and return + * openshot::Frame objects for any frame in the file. + * + * All seeking and caching is handled internally, and the only public interface is the GetFrame() + * method. To use this reader, simply create an instance of this class, and call the GetFrame method + * to start retrieving frames. Use the info struct to obtain info on the file, such as the length + * (in frames), height, width, bitrate, frames per second (fps), etc... + */ + class FFmpegReader : public FileReaderBase + { + private: + string path; + + AVFormatContext *pFormatCtx; + int i, videoStream, audioStream; + AVCodecContext *pCodecCtx, *aCodecCtx; + AVCodec *pCodec, *aCodec; + AVStream *pStream, *aStream; + AVPacket packet; + AVFrame *pFrame; + + Frame new_frame; + Cache cache; + bool is_seeking; + int seeking_pts; + + bool found_pts_offset; + int pts_offset; + + bool found_frame; + int current_frame; + int current_pts; + int audio_position; + bool needs_packet; + + /// Open File - which is called by the constructor automatically + void Open(); + + /// Convert image to RGB format + Frame convert_image(AVPicture *copyFrame, int original_width, int original_height, PixelFormat pix_fmt); + + /// Convert PTS into Frame Number + int ConvertPTStoFrame(int pts); + + /// Convert Frame Number into PTS + int ConvertFrameToPTS(int frame_number); + + public: + /// Constructor for FFmpegReader. This automatically opens the media file and loads + /// frame 1, or it throws one of the following exceptions. + FFmpegReader(string path) throw(InvalidFile, NoStreamsFound, InvalidCodec); + + /// Close File + void Close(); + + /// Update File Info for video streams + void UpdateVideoInfo(); + + /// Update File Info for audio streams + void UpdateAudioInfo(); + + /// Get an openshot::Frame object for a specific frame number of this reader. + /// + /// @returns The requested frame of video + /// @param[in] number The frame number that is requested. + Frame GetFrame(int requested_frame); + + /// Seek to a specific Frame. This is not always frame accurate, it's more of an estimation on many codecs. + void Seek(int requested_frame); + + /// Read the stream until we find the requested Frame + Frame ReadStream(int requested_frame); + + /// Process a video packet + void ProcessVideoPacket(int requested_frame); + + /// Process an audio packet + void ProcessAudioPacket(int requested_frame); + + /// Get the next packet (if any) + int GetNextPacket(); + + /// Set the frame number and current pts + void SetFrameNumber(); + + /// Get an AVFrame (if any) + bool GetAVFrame(); + + /// Check the current seek position and determine if we need to seek again + bool CheckSeek(); + + }; + +} + +#endif diff --git a/include/FileReaderBase.h b/include/FileReaderBase.h new file mode 100644 index 00000000..a0939e23 --- /dev/null +++ b/include/FileReaderBase.h @@ -0,0 +1,83 @@ +#ifndef OPENSHOT_FILE_READER_BASE_H +#define OPENSHOT_FILE_READER_BASE_H + +/** + * \file + * \brief Header file for FileReaderBase class + * \author Copyright (c) 2011 Jonathan Thomas + */ + +#include +#include +#include "Fraction.h" +#include "Frame.h" + +using namespace std; + +namespace openshot +{ + /** + * \brief This struct contains info about a media file, such as height, width, frames per second, etc... + * + * Each derived class of FileReaderBase is responsible for updating this struct to reflect accurate information + * about the streams. Derived classes of FileReaderBase should call the InitFileInfo() method to initialize the + * default values of this struct. + */ + struct FileInfo + { + bool has_video; ///< Determines if this file has a video stream + bool has_audio; ///< Determines if this file has an audio stream + float duration; ///< Length of time (in seconds) + int file_size; ///< Size of file (in bytes) + int height; ///< The height of the video (in pixels) + int width; ///< The width of the video (in pixesl) + int pixel_format; ///< The pixel format (i.e. YUV420P, RGB24, etc...) + Fraction fps; ///< Frames per second, as a fraction (i.e. 24/1 = 24 fps) + int video_bit_rate; ///< The bit rate of the video stream (in bytes) + Fraction pixel_ratio; ///< The pixel ratio of the video stream as a fraction (i.e. some pixels are not square) + Fraction display_ratio; ///< The ratio of width to height of the video stream (i.e. 640x480 has a ratio of 4/3) + string vcodec; ///< The name of the video codec used to encode / decode the video stream + int video_length; ///< The number of frames in the video stream + int video_stream_index; ///< The index of the video stream + Fraction video_timebase; ///< The video timebase determines how long each frame stays on the screen + string acodec; ///< The name of the audio codec used to encode / decode the video stream + int audio_bit_rate; ///< The bit rate of the audio stream (in bytes) + int sample_rate; ///< The number of audio samples per second (44100 is a common sample rate) + int channels; ///< The number of audio channels used in the audio stream + int audio_length; ///< The number of audio packets in the audio stream (this is different than fps or sample rate) + int audio_stream_index; ///< The index of the audio stream + Fraction audio_timebase; ///< The audio timebase determines how long each audio packet should be played + }; + + /** + * \brief This abstract class is the base class, used by readers. Readers are types of classes that read + * video, audio, and image files, and return openshot::Frame objects. + * + * The only requirements for a 'reader', are to derive from this base class, implement the + * GetFrame method, and call the InitFileInfo() method. + */ + class FileReaderBase + { + public: + /// Information about the current media file + FileInfo info; + + /// This method is required for all derived classes of FileReaderBase, and return the + /// openshot::Frame object, which contains the image and audio information for that + /// frame of video. + /// + /// @returns The requested frame of video + /// @param[in] number The frame number that is requested. + virtual Frame GetFrame(int number) = 0; + + /// Initialize the values of the FileInfo struct. It is important for derived classes to call + /// this method, or the FileInfo struct values will not be initialized. + void InitFileInfo(); + + /// Display file information in the standard output stream (stdout) + void DisplayInfo(); + }; + +} + +#endif diff --git a/include/Fraction.h b/include/Fraction.h new file mode 100644 index 00000000..b1f9dc02 --- /dev/null +++ b/include/Fraction.h @@ -0,0 +1,45 @@ +#ifndef OPENSHOT_FRACTION_H +#define OPENSHOT_FRACTION_H + +/** + * \file + * \brief Header file for Fraction class + * \author Copyright (c) 2011 Jonathan Thomas + */ + +namespace openshot { + + /** + * \brief The class represents a fraction + * + * Fractions are often used in video editing to represent ratios and rates, for example: + * pixel ratios, frames per second, timebase, and other common ratios. Fractions are preferred + * over decimals due to their increased precision. + */ + class Fraction { + public: + int num; /// +#include +#include +#include "Magick++.h" +#include "juce.h" +#include "AudioBufferSource.h" + +using namespace std; + +namespace openshot +{ + /** + * \brief This class represents a single frame of video (i.e. image & audio data) + * + * FileReaders (such as FFmpegReader) use instances of this class to store the individual frames of video, + * which include both the image data (i.e. pixels) and audio samples. + */ + class Frame + { + private: + Magick::Image *image; + juce::AudioSampleBuffer *audio; + + public: + int number; ///< This is the frame number (starting at 1) + int pts; ///< This is the presentation timestamp (in frames) + + /// Constructor - blank frame (300x200 blank image, 48kHz audio silence) + Frame(); + + /// Constructor - image only (48kHz audio silence) + Frame(int number, int width, int height, string color); + + /// Constructor - image only from pixel array (48kHz audio silence) + Frame(int number, int pts, int width, int height, const string map, const Magick::StorageType type, const void *pixels_); + + /// Constructor - audio only (300x200 blank image) + Frame(int number, int samples, int channels); + + /// Constructor - image & audio + Frame(int number, int width, int height, string color, int samples, int channels); + + /// Destructor + ~Frame(); + + /// Copy constructor + Frame ( const Frame &other ); + + /// Assignment operator + Frame& operator= (const Frame& other); + + /// Copy data and pointers from another Frame instance + void DeepCopy(const Frame& other); + + /// Deallocate image and audio memory + void DeletePointers(); + + /// Display the frame image to the screen (primarily used for debugging reasons) + void Display(); + + /// Get pixel data (as packets) + const Magick::PixelPacket* GetPixels(); + + /// Get pixel data (for only a single scan-line) + const Magick::PixelPacket* GetPixels(int row); + + /// Get pixel data (for a resized image) + const Magick::PixelPacket* GetPixels(unsigned int width, unsigned int height, int frame); + + /// Get height of image + int GetHeight(); + + /// Get height of image + int GetWidth(); + + /// Save the frame image + void Save(); + + /// Add audio samples to a specific channel + void AddAudio(int destChannel, int destStartSample, const float* source, int numSamples, float gainToApplyToSource); + + /// Play audio samples for this frame + void Play(); + + }; + +} + +#endif diff --git a/include/FrameMapper.h b/include/FrameMapper.h new file mode 100644 index 00000000..3540d27b --- /dev/null +++ b/include/FrameMapper.h @@ -0,0 +1,156 @@ +#ifndef OPENSHOT_FRAMEMAPPER_H +#define OPENSHOT_FRAMEMAPPER_H + +/** + * \file + * \brief Header file for the FrameMapper class + * \author Copyright (c) 2011 Jonathan Thomas + */ + +#include +#include +#include +#include +#include "../include/FrameRate.h" +#include "../include/Exceptions.h" +#include "../include/KeyFrame.h" + +using namespace std; + +namespace openshot +{ + /** + * This enumeration determines how frame rates are increased or decreased, and + * whether to apply pull-down techniques or not. Pull-down techniques are only + * needed to remove artificial fields added when converting between 24 fps (film) + * and television fps (29.97 fps NTSC or 25 fps PAL). + */ + enum Pulldown_Method + { + PULLDOWN_CLASSIC, // Classic 2:3:2:3 pull-down + PULLDOWN_ADVANCED, // Advanced 2:3:3:2 pull-down (minimal dirty frames) + PULLDOWN_NONE, // Do not apply pull-down techniques, just repeat or skip entire frames + }; + + /** + * \brief This struct holds a single field (half a frame). + * + * A frame of video is made up of 2 fields (half a frame). This struct points to which original + * frame, and whether this is the ODD or EVEN lines (i.e. top or bottom). + */ + struct Field + { + int Frame; + bool isOdd; + + Field() : Frame(0), isOdd(true) { }; + + Field(int frame, bool isodd) + { + Frame = frame; + isOdd = isodd; + } + }; + + /** + * \brief This struct holds two fields which together make up a complete video frame. + * + * These fields can point at different original frame numbers, for example the odd lines from + * frame 3, and the even lines of frame 4, if required by a pull-down technique. + */ + struct MappedFrame + { + Field Odd; + Field Even; + }; + + /** + * \brief This class creates a mapping between 2 different frame rates, applying a specific pull-down technique. + * + * This class creates a mapping between 2 different video files, and supports many pull-down techniques, + * such as 2:3:2:3 or 2:3:3:2, and also supports inverse telecine. Pull-down techniques are only needed to remove + * artificial fields added when converting between 24 fps (film) and television fps (29.97 fps NTSC or 25 fps PAL). + * + * Please see the following Example Code: + * \code + * // Create a frame mapper for a clip with 100 frames, and convert the frame rate (from 24 fps to 29.97 fps) + * FrameMapper mapping(100, Framerate(24, 1), Framerate(30000, 1001), PULLDOWN_CLASSIC); + * Frame frame2 = mapping.GetFrame(2); + * assert(frame2.Odd.Frame == 2); + * \endcode + */ + class FrameMapper { + private: + int m_length; // Length in frames of a video file + vector fields; // List of all fields + vector frames; // List of all frames + bool field_toggle; // Internal odd / even toggle (used when building the mapping) + Framerate m_original; // The original frame rate + Framerate m_target; // The target frame rate + Pulldown_Method m_pulldown; // The pull-down technique + + // Internal methods used by init + void AddField(int frame); + void AddField(Field field); + + // Use the original and target frame rates and a pull-down technique to create + // a mapping between the original fields and frames or a video to a new frame rate. + // This might repeat or skip fields and frames of the original video, depending on + // whether the frame rate is increasing or decreasing. + void Init(); + + public: + /// Default constructor for FrameMapper class + FrameMapper(int Length, Framerate original, Framerate target, Pulldown_Method pulldown); + + /// Get a frame based on the target frame rate and the new frame number of a frame + MappedFrame GetFrame(int TargetFrameNumber) throw(OutOfBoundsFrame); + + /** + * \brief Re-map time to slow down, speed up, or reverse a clip based on a Keyframe. + * + * This method re-maps the time of a clip, or in other words, changes the sequence and/or + * duration of frames in a clip. Because this method accepts a Keyframe, the time, sequence, + * and direction of frames can be based on LINEAR, BEZIER, or CONSTANT values. + * + * The X axis of the Keyframe represents the time (in frames) of this clip. If you make the + * X axis longer than the number of frames in the clip, if will slow down your clip. If the + * X axis is shorter than your clip, it will speed up your clip. The Y axis determines which + * original frame from the media file will be played. For example, if you clip has 100 frames, + * and your Keyframe goes from (1,1) to (100,100), the clip will playback in the original sequence, + * and at the original speed. If your Keyframe goes from (1,100) to (100,1), it will playback in the + * reverse direction, and at normal speed. If your Keyframe goes from (1,100) to (500,1), + * it will play in reverse at 1/5 the original speed. + * + * Please see the following Example Code: + * \code + * // Create a mapping between 24 fps and 24 fps (a mapping is required for time-remapping) + * FrameMapper mapping(100, Framerate(24, 1), Framerate(24, 1), PULLDOWN_NONE); + * + * // Print the mapping (before it's been time-mapped) + * mapping.PrintMapping(); + * cout << "-----------------------" << endl; + * + * // Create a Keyframe to re-map time (forward, reverse, and then forward again) + * Keyframe kf; + * kf.AddPoint(Point(Coordinate(1, 1), LINEAR)); + * kf.AddPoint(Point(Coordinate(40, 40), LINEAR)); + * kf.AddPoint(Point(Coordinate(60, 20), LINEAR)); // Reverse for 20 frames + * kf.AddPoint(Point(Coordinate(100, 100), LINEAR)); // Play to end (in fast forward) + * + * // Use the Keyframe to remap the time of this clip + * mapping.MapTime(kf); + * + * // Print the mapping again (to see the time remapping) + * mapping.PrintMapping(); + * \endcode + */ + void MapTime(Keyframe new_time) throw(OutOfBoundsFrame); + + /// Print all of the original frames and which new frames they map to + void PrintMapping(); + + }; +} + +#endif diff --git a/include/FrameRate.h b/include/FrameRate.h new file mode 100644 index 00000000..15a219d9 --- /dev/null +++ b/include/FrameRate.h @@ -0,0 +1,49 @@ +#ifndef OPENSHOT_FRAMERATE_H +#define OPENSHOT_FRAMERATE_H + +/** + * \file + * \brief Header file for the FrameRate class + * \author Copyright (c) 2011 Jonathan Thomas + */ + +#include + +namespace openshot +{ + /** + * \brief This class represents a frame rate (otherwise known as frames per second). + * + * Frame rates are stored as a fraction, such as 24/1, 25/1 and 30000/1001 (29.97). + * + * Please see the following Example Code: + * \code + * Framerate rate(25, 1); + * assert(rate.GetRoundedFPS() == 25); + * + * Framerate rate(30000, 1001); + * assert(rate.GetRoundedFPS() == 30); + * \endcode + */ + class Framerate { + private: + int m_numerator; + int m_denominator; + + public: + + /// Default constructor (24/1 FPS) + Framerate(); + + /// Constructor which lets you set the frame rate (as a fraction) + Framerate(int numerator, int denominator); + + /// Return a rounded integer of the frame rate (for example 30000/1001 returns 30 fps) + int GetRoundedFPS(); + + /// Return a float of the frame rate (for example 30000/1001 returns 29.97...) + float GetFPS(); + }; +} + +#endif diff --git a/include/KeyFrame.h b/include/KeyFrame.h new file mode 100644 index 00000000..6993ba57 --- /dev/null +++ b/include/KeyFrame.h @@ -0,0 +1,115 @@ +#ifndef OPENSHOT_KEYFRAME_H +#define OPENSHOT_KEYFRAME_H + +/** + * \file + * \brief Header file for the Keyframe class + * \author Copyright (c) 2011 Jonathan Thomas + */ +#include +#include +#include +#include +#include "Exceptions.h" +#include "Coordinate.h" +#include "Point.h" + +using namespace std; +using namespace openshot; + +namespace openshot { + + /** + * \brief A Keyframe is a collection of Point instances, which is used to vary a number or property over time. + * + * Keyframes are used to animate and interpolate values of properties over time. For example, a single property + * can use a Keyframe instead of a constant value. Assume you want to slide an image (from left to right) over + * a video. You can create a Keyframe which will adjust the X value of the image over 100 frames (or however many + * frames the animation needs to last) from the value of 0 to 640. + * + * Please see the following Example Code: + * \code + * Keyframe k1; + * k1.AddPoint(Point(1,0)); + * k1.AddPoint(Point(100,640)); + * + * kf.PrintValues(); + * \endcode + */ + class Keyframe { + private: + double FactorialLookup[4]; + + /* + * Because points can be added in any order, we need to reorder them + * in ascending order based on the point.co.X value. This simplifies + * processing the curve, due to all the points going from left to right. + */ + void ReorderPoints(); + + // Process an individual segment + void ProcessSegment(int Segment, Point p1, Point p2); + + // create lookup table for fast factorial calculation + void CreateFactorialTable(); + + // Get a factorial for a coordinate + double Factorial(int n); + + // Calculate the factorial function for Bernstein basis + double Ni(int n, int i); + + // Calculate Bernstein Basis + double Bernstein(int n, int i, double t); + + public: + vector Points; ///< Vector of all Points + vector Values; ///< Vector of all Values (i.e. the processed coordinates from the curve) + float Auto_Handle_Percentage; ///< Percentage the left and right handles should be adjusted to, to create a smooth curve + + /// Default constructor for the Keyframe class + Keyframe(); + + /// Add a new point on the key-frame. Each point has a primary coordinate, a left handle, and a right handle. + void AddPoint(Point p); + + /// Set the handles, used for smooth curves. The handles are based on the surrounding points. + void SetHandles(Point current); + + /// Get the index of a point by matching a coordinate + int FindIndex(Point p) throw(OutOfBoundsPoint); + + /// Get the value at a specific index + Coordinate GetValue(int index); + + /// Get a point at a specific index + Point& GetPoint(int index) throw(OutOfBoundsPoint); + + /** + * \brief Calculate all of the values for this keyframe. + * + * This clears any existing data in the "values" vector. This method is automatically called + * by AddPoint(), so you don't typically need to call this method. + */ + void Process(); + + /// Remove a point by matching a coordinate + void RemovePoint(Point p) throw(OutOfBoundsPoint); + + /// Remove a point by index + void RemovePoint(int index) throw(OutOfBoundsPoint); + + /// Replace an existing point with a new point + void UpdatePoint(int index, Point p); + + /// Print a list of points + void PrintPoints(); + + /// Print just the Y value of the point's primary coordinate + void PrintValues(); + + }; + +} + +#endif diff --git a/include/OpenShot.h b/include/OpenShot.h new file mode 100644 index 00000000..83d4c610 --- /dev/null +++ b/include/OpenShot.h @@ -0,0 +1,42 @@ +#ifndef OPENSHOT_H +#define OPENSHOT_H + +/** + * \file + * \brief This header includes all commonly used headers, for ease-of-use + * \author Copyright (c) 2011 Jonathan Thomas + */ + +/** + * \mainpage OpenShot Video Editing Library C++ API + * + * Welcome to the OpenShot Video Editing Library C++ API. This library is a video editing and animation + * framework, which powers the OpenShot Video Editor application. + * It can also be used to power your next C++ video editing project! It is very powerful, supporting many + * different framerate mapping conversions as well as many different keyframe interpolation methods, such + * as Bezier curves, Linear, and Constant. + * + * All you need is a single include to get started: + * \code + * #include "OpenShot.h" + * \endcode + + * Please read this documentation to learn all about how the OpenShot Video Editing Library works, and how + * you can use it on your next video editing application. + */ + +#include "Cache.h" +#include "Coordinate.h" +#include "Exceptions.h" +#include "FileReaderBase.h" +#include "FFmpegReader.h" +#include "Fraction.h" +#include "Frame.h" +#include "FrameMapper.h" +#include "FrameRate.h" +#include "KeyFrame.h" +#include "Player.h" +#include "Point.h" + + +#endif diff --git a/include/Player.h b/include/Player.h new file mode 100644 index 00000000..77762028 --- /dev/null +++ b/include/Player.h @@ -0,0 +1,57 @@ +#ifndef OPENSHOT_PLAYER_H +#define OPENSHOT_PLAYER_H + +/** + * \file + * \brief Header file for Frame class + * \author Copyright (c) 2011 Jonathan Thomas + */ + +#include +#include +#include "../include/FileReaderBase.h" +#include +#include + +using namespace std; + +namespace openshot +{ + typedef void (*CallbackPtr)(int, int, int, const Magick::PixelPacket *Pixels, void *); + + /** + * \brief This class is used to playback a video from a reader. + * + * This player does not actually show the video, but rather it invokes a method each time + * a frame should be displayed. This allows the calling application to display the image using + * any toolkit it wishes. + */ + class Player + { + private: + FileReaderBase *reader; + CallbackPtr callback; + void *pythonmethod; + + public: + /// Default constructor + Player(); + + /// Set the current reader, such as a FFmpegReader + void SetReader(FileReaderBase *p_reader); + + /// Set a callback function which will be invoked each time a frame is ready to be displayed + void SetFrameCallback(CallbackPtr p_callback, void *p_pythonmethod); + + /// Manually invoke function (if any) + void Push(); + + /// Play the video + void Play(); + void putpixel(SDL_Surface *surface, SDL_Overlay *bmp, int x, int y, Uint32 pixel, int pixel_index); + + }; + +} + +#endif diff --git a/include/Point.h b/include/Point.h new file mode 100644 index 00000000..6e32a88b --- /dev/null +++ b/include/Point.h @@ -0,0 +1,85 @@ +#ifndef OPENSHOT_POINT_H +#define OPENSHOT_POINT_H + +/** + * \file + * \brief Header file for the Point class + * \author Copyright (c) 2011 Jonathan Thomas + */ + +#include "Coordinate.h" + +namespace openshot +{ + /** + * This controls how a Keyframe uses this point to interpolate between the previous + * point and this one. Bezier is a smooth curve. Linear is a straight line. Constant is + * is a jump from the previous point to this one. + */ + enum Interpolation_Type { + BEZIER, + LINEAR, + CONSTANT + }; + + /** + * When BEZIER interpolation is used, the point's left and right handles are used + * to influence the direction of the curve. AUTO will try and adjust the handles + * automatically, to achieve the smoothest curves. MANUAL will leave the handles + * alone, making it the responsibility of the user to set them. + */ + enum Handle_Type { + AUTO, + MANUAL + }; + + /** + * \brief A Point is the basic building block of a key-frame curve. + * + * Points have a primary coordinate and a left and right handle coordinate. + * The handles are used to influence the direction of the curve as it + * moves between the primary coordinate and the next primary coordinate when the + * interpolation mode is BEZIER. When using LINEAR or CONSTANT, the handles are + * ignored. + * + * Please see the following Example Code: + * \code + * Coordinate c1(3,9); + * Point p1(c1, BEZIER); + * assert(c1.X == 3); + * assert(c1.Y == 9); + * + * \endcode + */ + class Point { + public: + Coordinate co; ///< This is the primary coordinate + Coordinate handle_left; ///< This is the left handle coordinate + Coordinate handle_right; ///< This is the right handle coordinate + Interpolation_Type interpolation; ///< This is the interpolation mode + Handle_Type handle_type; ///< This is the handle mode + + /// Constructor which also creates a Point and sets the X and Y of the Point. + Point(float x, float y); + + // Constructor which takes a coordinate + Point(Coordinate co); + + // Constructor which takes a coordinate and interpolation mode + Point(Coordinate co, Interpolation_Type interpolation); + + // Constructor which takes a coordinate, interpolation mode, and handle type + Point(Coordinate co, Interpolation_Type interpolation, Handle_Type handle_type); + + /** + * Set the left and right handles to the same Y coordinate as the primary + * coordinate, but offset the X value by a given amount. This is typically used + * to smooth the curve (if BEZIER interpolation mode is used) + */ + void Initialize_Handles(float Offset = 0.0f); + + }; + +} + +#endif diff --git a/src/AudioBufferSource.cpp b/src/AudioBufferSource.cpp new file mode 100644 index 00000000..1aed59b7 --- /dev/null +++ b/src/AudioBufferSource.cpp @@ -0,0 +1,135 @@ +#include "../include/AudioBufferSource.h" + +using namespace std; +using namespace openshot; + +// Default constructor +AudioBufferSource::AudioBufferSource(int samples, int channels) + : position(0), start(0), repeat(false) +{ + // Create new buffer + buffer = new AudioSampleBuffer(channels, samples); + buffer->clear(); + +// AudioFormatManager formatManager; +// formatManager.registerBasicFormats(); +// +// File file ("/home/jonathan/Aptana Studio Workspace/OpenShotLibrary/src/examples/piano.wav"); +// AudioFormatReader* reader = formatManager.createReaderFor (file); +// if (reader != 0) +// { +// buffer = new AudioSampleBuffer(reader->numChannels, reader->lengthInSamples); +// buffer->readFromAudioReader(reader, 0, reader->lengthInSamples, 0, true, true); +// float* firstChannelSamples = buffer->getSampleData(0, 0); +// } +} + +// Destructor +AudioBufferSource::~AudioBufferSource() +{ + // Clear and delete the buffer + buffer->clear(); + delete buffer; + buffer = NULL; +}; + +// Get the next block of audio samples +void AudioBufferSource::getNextAudioBlock (const AudioSourceChannelInfo& info) +{ + int buffer_samples = buffer->getNumSamples(); + int buffer_channels = buffer->getNumChannels(); + + if (info.numSamples > 0) { + int start = position; + int number_to_copy = 0; + + // Determine how many samples to copy + if (start + info.numSamples <= buffer_samples) + { + // copy the full amount requested + number_to_copy = info.numSamples; + } + else if (start > buffer_samples) + { + // copy nothing + number_to_copy = 0; + } + else if (buffer_samples - start > 0) + { + // only copy what is left in the buffer + number_to_copy = buffer_samples - start; + } + else + { + // copy nothing + number_to_copy = 0; + } + + // Determine if any samples need to be copied + if (number_to_copy > 0) + { + // Loop through each channel and copy some samples + for (int channel = 0; channel < buffer_channels; channel++) + info.buffer->copyFrom(channel, info.startSample, *buffer, channel, start, number_to_copy); + + // Update the position of this audio source + position += number_to_copy; + } + + } + +} + +// Prepare to play this audio source +void AudioBufferSource::prepareToPlay(int, double) { }; + +// Release all resources +void AudioBufferSource::releaseResources() +{ + // Clear the buffer + buffer->clear(); +}; + +// Set the next read position of this source +void AudioBufferSource::setNextReadPosition (int newPosition) +{ + // set position (if the new position is in range) + if (newPosition > 0 && newPosition < buffer->getNumSamples()) + position = newPosition; +}; + +// Get the next read position of this source +int AudioBufferSource::getNextReadPosition() const +{ + // return the next read position + return position; +}; + +// Get the total length (in samples) of this audio source +int AudioBufferSource::getTotalLength() const +{ + // Get the length + return buffer->getNumSamples(); +}; + +// Determines if this audio source should repeat when it reaches the end +bool AudioBufferSource::isLooping() const +{ + // return if this source is looping + return repeat; +}; + +// Set if this audio source should repeat when it reaches the end +void AudioBufferSource::setLooping (bool shouldLoop) +{ + // Set the repeat flag + repeat = shouldLoop; +}; + +// Add audio samples to a specific channel +void AudioBufferSource::AddAudio(int destChannel, int destStartSample, const float* source, int numSamples, float gainToApplyToSource = 1.0f) +{ + // Add samples to frame's audio buffer + buffer->addFrom(destChannel, destStartSample, source, numSamples, gainToApplyToSource); +} + diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 00000000..86a9ced3 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,95 @@ +################ IMAGE MAGICK ################## +# Find the ImageMagick++ library +FIND_PACKAGE(ImageMagick REQUIRED COMPONENTS Magick++ MagickWand MagickCore) + +# Include ImageMagick++ headers (needed for compile) +include_directories(${ImageMagick_INCLUDE_DIRS}) + +################### FFMPEG ##################### +# Find FFmpeg libraries (used for video encoding / decoding) +FIND_PACKAGE(FFmpeg REQUIRED) + +# Include FFmpeg headers (needed for compile) +include_directories(${FFMPEG_INCLUDE_DIR}) + +################# JACK AUDIO ################### +# Find Jack Audio libraries +#FIND_PACKAGE(Jack REQUIRED) + +# Include Jack headers (needed for compile) +#include_directories(${LIBJACK_INCLUDE_DIR}) + +################# JUCE AUDIO ################### +# Find JUCE Audio libraries +FIND_PACKAGE(Juce REQUIRED) + +# Include Juce headers (needed for compile) +include_directories(${LIBJUCE_INCLUDE_DIRS}) + +################# SDL ################### +# Find SDL libraries +FIND_PACKAGE(SDL REQUIRED) + +# Include SDL headers (needed for compile) +include_directories(${SDL_INCLUDE_DIR}) + +################# GTK2 ################### +# Find GTK2 libraries +#FIND_PACKAGE(GTK2 COMPONENTS gtk gtkmm) + +# Include GTK headers (needed for compile) +#include_directories(${GTK2_INCLUDE_DIRS}) + +################### OPENMP ##################### +# Check for OpenMP (used for multi-core processing) +FIND_PACKAGE(OpenMP) + +# Add the OpenMP compiler flag +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") + + + +############### CREATE LIBRARY ################# +# Create shared openshot library +add_library(openshot SHARED + AudioBufferSource.cpp + Cache.cpp + Coordinate.cpp + FFmpegReader.cpp + FileReaderBase.cpp + Fraction.cpp + Frame.cpp + FrameMapper.cpp + FrameRate.cpp + KeyFrame.cpp + Player.cpp + Point.cpp) + +# Link all referenced libraries +target_link_libraries(openshot ${ImageMagick_LIBRARIES} ${FFMPEG_LIBRARIES} ${LIBJUCE_LIBRARIES} ${SDL_LIBRARY}) #${GTK2_LIBRARIES} + + +############### TEST EXECUTABLE ################ +# Create test executable +add_executable(example Main.cpp) + +# Link test executable to the new library +target_link_libraries(example openshot) + +############### EXAMPLES SUB-DIRECTORY ################ +add_subdirectory(examples) + +############### SWIG PYTHON BINDINGS ################ +FIND_PACKAGE(SWIG REQUIRED) +INCLUDE(${SWIG_USE_FILE}) + +FIND_PACKAGE(PythonLibs) +INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH}) +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) + +SET(CMAKE_SWIG_FLAGS "") + +SET_SOURCE_FILES_PROPERTIES(openshot.i PROPERTIES CPLUSPLUS ON) +SWIG_ADD_MODULE(openshot python openshot.i) +SWIG_LINK_LIBRARIES(openshot ${PYTHON_LIBRARIES} openshot) + diff --git a/src/Cache.cpp b/src/Cache.cpp new file mode 100644 index 00000000..4b4fc490 --- /dev/null +++ b/src/Cache.cpp @@ -0,0 +1,117 @@ +/** + * \file + * \brief Source code for the Cache class + * \author Copyright (c) 2011 Jonathan Thomas + */ + +#include "../include/Cache.h" + +using namespace std; +using namespace openshot; + +// Default constructor, max frames to cache is 20 +Cache::Cache() : max_frames(20) { }; + +// Constructor that sets the max frames to cache +Cache::Cache(int max_frames) : max_frames(max_frames) { }; + +// Add a Frame to the cache +void Cache::Add(int frame_number, Frame frame) +{ + // Only add frame if it does not exist in the cache + if (!frames.count(frame_number)) + { + // Add frame to queue and map + frames[frame_number] = frame; + frame_numbers.push(frame_number); + + // Clean up older frames (that exceed the max frames) + CleanUp(); + } + else + { + // Frame already exists... so just update the cache + frames.erase(frame_number); + frames[frame_number] = frame; + } +} + +// Check for the existance of a frame in the cache +bool Cache::Exists(int frame_number) +{ + // Is frame number cached + if (frames.count(frame_number)) + return true; + else + return false; +} + +// Get a frame from the cache +Frame Cache::GetFrame(int frame_number) +{ + // Does frame exists in cache? + if (Exists(frame_number)) + { + // return the Frame object + return frames[frame_number]; + } + else + // throw an exception for the missing frame + throw OutOfBoundsFrame("Frame not found in the cache", frame_number, -1); +} + +// Clear the cache of all frames +void Cache::Clear() +{ + // clear map + frames.clear(); + + // pop each of the frames from the queue... which emptys the queue + while(!frame_numbers.empty()) frame_numbers.pop(); +} + +// Count the frames in the queue +int Cache::Count() +{ + // Return the number of frames in the cache + return frames.size(); +} + +// Clean up cached frames that exceed the number in our max_frames variable +void Cache::CleanUp() +{ + // check against max size + if (frame_numbers.size() > max_frames) + { + // Remove the oldest frame + int frame_to_remove = frame_numbers.front(); + + // Remove frame_number and frame + frame_numbers.pop(); + frames.erase(frame_to_remove); + } +} + +// Display the list of cache and clear the cache (mainly for debugging reasons) +void Cache::DisplayAndClear() +{ + cout << "----- Cache List (" << frames.size() << ") ------" << endl; + int i = 1; + while(!frame_numbers.empty()) + { + // Print the frame number + int frame_number = frame_numbers.front(); + cout << " " << i << ") --- Frame " << frame_number << endl; + + // Remove this frame + frame_numbers.pop(); + frames.erase(frame_number); + + // increment counter + i++; + } +} + + + + diff --git a/src/Coordinate.cpp b/src/Coordinate.cpp new file mode 100644 index 00000000..61899d03 --- /dev/null +++ b/src/Coordinate.cpp @@ -0,0 +1,20 @@ +/** + * \file + * \brief Source code for the Coordinate class + * \author Copyright (c) 2011 Jonathan Thomas + */ + +#include "../include/Coordinate.h" + +using namespace std; +using namespace openshot; + +// Default constructor for a coordinate, which defaults the X and Y to zero (0,0) +Coordinate::Coordinate() : + X(0), Y(0) { +} + +// Constructor which also allows the user to set the X and Y +Coordinate::Coordinate(float x, float y) : + X(x), Y(y) { +} diff --git a/src/FFmpegReader.cpp b/src/FFmpegReader.cpp new file mode 100644 index 00000000..217c1fac --- /dev/null +++ b/src/FFmpegReader.cpp @@ -0,0 +1,612 @@ +#include "../include/FFmpegReader.h" + +using namespace openshot; + +FFmpegReader::FFmpegReader(string path) throw(InvalidFile, NoStreamsFound, InvalidCodec) + : current_frame(0), current_pts(0), is_seeking(0), seeking_pts(0), + found_frame(false), needs_packet(true), pts_offset(1), found_pts_offset(false), path(path) { + + // Open the file (if possible) + Open(); + + // Get Frame 1 (to determine the offset between the PTS and the Frame Number) + GetFrame(1); +} + +void FFmpegReader::Open() +{ + // Register all formats and codecs + av_register_all(); + + // Open video file + if (av_open_input_file(&pFormatCtx, path.c_str(), NULL, 0, NULL) != 0) + throw InvalidFile("File could not be opened.", path); + + // Retrieve stream information + if (av_find_stream_info(pFormatCtx) < 0) + throw NoStreamsFound("No streams found in file.", path); + + // Dump information about file onto standard error + //dump_format(pFormatCtx, 0, path.c_str(), 0); + + videoStream = -1; + audioStream = -1; + // Loop through each stream, and identify the video and audio stream index + for (unsigned int i = 0; i < pFormatCtx->nb_streams; i++) + { + // Is this a video stream? + if (pFormatCtx->streams[i]->codec->codec_type == CODEC_TYPE_VIDEO && videoStream < 0) { + videoStream = i; + } + // Is this an audio stream? + if (pFormatCtx->streams[i]->codec->codec_type == CODEC_TYPE_AUDIO && audioStream < 0) { + audioStream = i; + } + } + if (videoStream == -1 && audioStream == -1) + throw NoStreamsFound("No video or audio streams found in this file.", path); + + // Init FileInfo struct (clear all values) + InitFileInfo(); + + // Is there a video stream? + if (videoStream != -1) + { + // Set the stream index + info.video_stream_index = videoStream; + + // Set the codec and codec context pointers + pStream = pFormatCtx->streams[videoStream]; + pCodecCtx = pFormatCtx->streams[videoStream]->codec; + + // Find the decoder for the video stream + pCodec = avcodec_find_decoder(pCodecCtx->codec_id); + if (pCodec == NULL) { + throw InvalidCodec("A valid video codec could not be found for this file.", path); + } + // Open video codec + if (avcodec_open(pCodecCtx, pCodec) < 0) + throw InvalidCodec("A video codec was found, but could not be opened.", path); + + // Update the File Info struct with video details (if a video stream is found) + UpdateVideoInfo(); + } + + // Is there an audio stream? + if (audioStream != -1) + { + // Set the stream index + info.audio_stream_index = audioStream; + + // Get a pointer to the codec context for the audio stream + aStream = pFormatCtx->streams[audioStream]; + aCodecCtx = pFormatCtx->streams[audioStream]->codec; + + // Find the decoder for the audio stream + aCodec = avcodec_find_decoder(aCodecCtx->codec_id); + if (aCodec == NULL) { + throw InvalidCodec("A valid audio codec could not be found for this file.", path); + } + // Open audio codec + if (avcodec_open(aCodecCtx, aCodec) < 0) + throw InvalidCodec("An audio codec was found, but could not be opened.", path); + + // Update the File Info struct with audio details (if an audio stream is found) + UpdateAudioInfo(); + } + +} + +void FFmpegReader::Close() +{ + // Delete packet + av_free_packet(&packet); + + // Close the codec + if (info.has_video) + avcodec_close(pCodecCtx); + if (info.has_audio) + avcodec_close(aCodecCtx); + + // Close the video file + av_close_input_file(pFormatCtx); +} + +void FFmpegReader::UpdateAudioInfo() +{ + // Set values of FileInfo struct + info.has_audio = true; + info.file_size = pFormatCtx->file_size; + info.acodec = aCodecCtx->codec->name; + info.channels = aCodecCtx->channels; + info.sample_rate = aCodecCtx->sample_rate; + info.audio_bit_rate = aCodecCtx->bit_rate; + + // Timebase of audio stream + double time_base = Fraction(aStream->time_base.num, aStream->time_base.den).ToDouble(); + info.audio_length = aStream->duration; + info.duration = info.audio_length * time_base; + info.audio_timebase.num = aStream->time_base.num; + info.audio_timebase.den = aStream->time_base.den; +} + +void FFmpegReader::UpdateVideoInfo() +{ + // Set values of FileInfo struct + info.has_video = true; + info.file_size = pFormatCtx->file_size; + info.height = pCodecCtx->height; + info.width = pCodecCtx->width; + info.vcodec = pCodecCtx->codec->name; + info.video_bit_rate = pFormatCtx->bit_rate; + info.fps.num = pStream->r_frame_rate.num; + info.fps.den = pStream->r_frame_rate.den; + if (pStream->sample_aspect_ratio.num != 0) + info.pixel_ratio.num = pStream->sample_aspect_ratio.num; + else + info.pixel_ratio.num = 1; + info.pixel_ratio.den = pStream->sample_aspect_ratio.den; + info.pixel_format = pCodecCtx->pix_fmt; + + // Calculate the DAR (display aspect ratio) + Fraction size(info.width, info.height); + + // Reduce size fraction + size.Reduce(); + + // Set the ratio based on the reduced fraction + info.display_ratio.num = size.num; + info.display_ratio.den = size.den; + + // Timebase of video stream + double time_base = Fraction(pStream->time_base.num, pStream->time_base.den).ToDouble(); + info.video_length = pStream->duration; + info.duration = info.video_length * time_base; + info.video_timebase.num = pStream->time_base.num; + info.video_timebase.den = pStream->time_base.den; +} + +Frame FFmpegReader::GetFrame(int requested_frame) +{ + // Initialize found_frame flag + found_frame = false; + audio_position = 0; + + // Check the cache for this frame + if (cache.Exists(requested_frame)) + { + cout << "Cached Frame!" << endl; + // Return the cached frame + return cache.GetFrame(requested_frame); + } + else + { + // Frame is not in cache + // Adjust for a requested frame that is too small or too large + if (requested_frame < 1) + requested_frame = 1; + if (requested_frame > info.video_length) + requested_frame = info.video_length; + + // Are we within 20 frames of the requested frame? + int diff = requested_frame - current_frame; + if (abs(diff) >= 0 && abs(diff) <= 19) + { + // Continue walking the stream + cout << " >> CLOSE, SO WALK THE STREAM" << endl; + return ReadStream(requested_frame); + } + else + { + // Greater than 20 frames away, we need to seek to the nearest key frame + cout << " >> TOO FAR, SO SEEK FIRST AND THEN WALK THE STREAM" << endl; + Seek(requested_frame); + + // Then continue walking the stream + return ReadStream(requested_frame); + } + + } +} + +// Read the stream until we find the requested Frame +Frame FFmpegReader::ReadStream(int requested_frame) +{ + // Allocate video frame + pFrame = avcodec_alloc_frame(); + + #pragma XXX omp parallel private(i) + { + #pragma XXX omp master + { + // Loop through the stream until the correct frame is found + while (true) + { + // Should we get the next packet? (sometimes we already have an unprocessed packet) + if (needs_packet) + { + // Get the next packet (if any) + if (GetNextPacket() < 0) + // Break loop when no more packets found + break; + } + else + { + // Reset this flag so next time around we get a new packet + needs_packet = true; + } + + // Video packet + if (packet.stream_index == videoStream) + { + // Check for found frame + if (found_frame) + // Stop looping + break; + + // Set the frame number and pts + SetFrameNumber(); + + // Check if the AVFrame is finished and set it + if (GetAVFrame()) + { + cout << endl << "VIDEO PACKET (DTS: " << packet.dts << ")" << endl; + + // Check the status of a seek (if any) + if (CheckSeek()) + // Jump to the next iteration of this loop + continue; + + // Process Video Packet + ProcessVideoPacket(requested_frame); + } + + } + // Audio packet + else if (packet.stream_index == audioStream) + { + cout << "AUDIO PACKET (DTS: " << packet.dts << ")" << endl; + + // Process Audio Packet + ProcessAudioPacket(requested_frame); + + } + + } // end while + + } // end omp master + } // end omp parallel + + // Set flag to not get the next packet (since we already got it) + needs_packet = false; + + // Delete packet + //av_free_packet(&packet); + + // Free the YUV frame + av_free(pFrame); + + // return frame + return new_frame; +} + +// Get the next packet (if any) +int FFmpegReader::GetNextPacket() +{ + // Get the next packet (if any) + return av_read_frame(pFormatCtx, &packet); +} + +// Set the frame number and current pts +void FFmpegReader::SetFrameNumber() +{ + // Set the PTS (presentation timestamp for this packet) + if(packet.dts != AV_NOPTS_VALUE) + current_pts = packet.dts; + else + current_pts = -1; + + // Set the current frame correctly + current_frame = ConvertPTStoFrame(current_pts); +} + +// Get an AVFrame (if any) +bool FFmpegReader::GetAVFrame() +{ + // Decode video frame + int frameFinished = 0; + avcodec_decode_video(pCodecCtx, pFrame, &frameFinished, + packet.data, packet.size); + + // Did we get a video frame? + return frameFinished; +} + +// Check the current seek position and determine if we need to seek again +bool FFmpegReader::CheckSeek() +{ + // Are we seeking for a specific frame? + if (is_seeking) + { + cout << "Looking for frame: " << (seeking_pts + 1) << endl; + cout << " but seeked to: " << (current_frame) << endl; + + // determine if we are "before" the requested frame + if (current_pts > seeking_pts) + { + cout << "Woops! Need to seek backwards further..." << endl; + + // Seek back even further (as long as it's not smaller than -1) + if (seeking_pts - 5 >= ConvertFrameToPTS(1)) + seeking_pts -= 5; + else + seeking_pts = ConvertFrameToPTS(1); + + // Seek again... to the nearest Keyframe + Seek(ConvertPTStoFrame(seeking_pts)); + + } + else + { + // Seek worked, and we are "before" the requested frame + is_seeking = false; + seeking_pts = ConvertFrameToPTS(1); + } + } + + // return the pts to seek to (if any) + return is_seeking; +} + +// Process a video packet +void FFmpegReader::ProcessVideoPacket(int requested_frame) +{ + // reset the audio position (since we found a new video packet) + audio_position = 0; + + // Are we close enough to decode the frame? + if (current_frame < (requested_frame - 20)) + // Skip to next frame without decoding or caching + return; + + + #pragma XXX omp task + { + // Get the array buffer + int w = pCodecCtx->width; + int h = pCodecCtx->height; + + AVPicture copyFrame; + avpicture_alloc(©Frame, pCodecCtx->pix_fmt, w, h); + av_picture_copy(©Frame, (AVPicture *) pFrame, pCodecCtx->pix_fmt, w, h); + + // Process Frame + new_frame = convert_image(©Frame, w, h, pCodecCtx->pix_fmt); + + // Cache Frame + cache.Add(current_frame, new_frame); + + // Free AVPicture + avpicture_free(©Frame); + + // Break the loop when the correct frame is found + if (current_frame == requested_frame) + found_frame = true; + + // Determine the offset between the PTS and Frame number (if needed) + if (!found_pts_offset) + { + // Find the difference between PTS and frame number + pts_offset = current_frame - current_pts; + found_pts_offset = true; + } + + + } // end omp task + +} + +// Process an audio packet +void FFmpegReader::ProcessAudioPacket(int requested_frame) +{ + // Are we close enough to decode the frame's audio? + if (current_frame < (requested_frame - 20)) + // Skip to next frame without decoding or caching + return; + + // Allocate audio buffer + static int16_t audio_buf[AVCODEC_MAX_AUDIO_FRAME_SIZE + FF_INPUT_BUFFER_PADDING_SIZE]; + int buf_size = AVCODEC_MAX_AUDIO_FRAME_SIZE; + + int packet_samples = 0; + while (packet.size > 0) { + // re-initialize buffer size (it gets changed in the avcodec_decode_audio2 method call) + buf_size = AVCODEC_MAX_AUDIO_FRAME_SIZE; + + // decode audio packet into samples (put samples in the audio_buf array) + int sample_count = avcodec_decode_audio2(aCodecCtx, audio_buf, &buf_size, + packet.data, packet.size); + + if (sample_count < 0) { + // Throw exception + throw ErrorDecodingAudio("Error decoding audio samples", current_frame); + packet.size = 0; + break; + } + + // Calculate total number of samples + packet_samples += sample_count; + + // process samples... + packet.data += sample_count; + packet.size -= sample_count; + } + + for (int channel_filter = 0; channel_filter < info.channels; channel_filter++) + { + // Array of floats (to hold samples for each channel) + int channel_buffer_size = (packet_samples / info.channels) + 1; + float *channel_buffer = new float[channel_buffer_size]; + int position = 0; + + // Init buffer array + for (int z = 0; z < channel_buffer_size; z++) + channel_buffer[z] = 0.0f; + + // Loop through all samples and add them to our Frame based on channel. + // Toggle through each channel number, since channel data is stored like (left right left right) + int channel = 0; + for (int sample = 0; sample < packet_samples; sample++) + { + // Only add samples for current channel + if (channel_filter == channel) + { + // Add sample (convert from (-32768 to 32768) to (-1.0 to 1.0)) + channel_buffer[position] = audio_buf[sample] * (1.0f / (1 << 15)); + + // Increment audio position + position++; + } + + // increment channel (if needed) + if (channel < info.channels) + // move to next channel + channel ++; + else + // reset channel + channel = 0; + } + + // Add channel buffer to Frame object + if (packet_samples > 0) // DEBUG to prevent overwriting samples with multiple audio packets + { + //cout << " *** ADDED AUDIO FOR FRAME " << current_frame << " *** (" << channel_buffer_size << " samples)" << endl; + new_frame.AddAudio(channel_filter, audio_position, channel_buffer, channel_buffer_size, 1.0f); + } + + // Cache Frame (or update an existing frame) + cache.Add(current_frame, new_frame); + + // clear channel buffer + delete channel_buffer; + channel_buffer = NULL; + } +} + + + +// Seek to a specific frame. This is not always frame accurate, it's more of an estimation on many codecs. +void FFmpegReader::Seek(int requested_frame) +{ + // Adjust for a requested frame that is too small or too large + if (requested_frame < 1) + requested_frame = 1; + if (requested_frame > info.video_length) + requested_frame = info.video_length; + + // Set seeking flags + is_seeking = true; + seeking_pts = ConvertFrameToPTS(requested_frame); // PTS seems to always start at zero, and our frame numbers start at 1. + int64_t seek_target = ((double)seeking_pts * info.video_timebase.ToDouble()) * (double)AV_TIME_BASE; + + // Find a valid stream index + int stream_index = -1; + if (info.video_stream_index >= 0) + stream_index = info.video_stream_index; + else if (info.audio_stream_index >= 0) + stream_index = info.audio_stream_index; + + // If valid stream, rescale timestamp so the av_seek_frame method will understand it + if (stream_index >= 0) { + seek_target = av_rescale_q(seek_target, AV_TIME_BASE_Q, + pFormatCtx->streams[stream_index]->time_base); + } + + // If seeking to frame 1, we need to close and re-open the file (this is more reliable than seeking) + if (requested_frame == 1) + { + // Close and re-open file (basically seeking to frame 1) + Close(); + Open(); + + // Not actually seeking, so clear these flags + is_seeking = false; + seeking_pts = ConvertFrameToPTS(1); + } + else + { + // Seek to nearest key-frame (aka, i-frame) + if (av_seek_frame(pFormatCtx, stream_index, seek_target, AVSEEK_FLAG_BACKWARD) < 0) { + fprintf(stderr, "%s: error while seeking\n", pFormatCtx->filename); + } + } + + // Flush buffers + avcodec_flush_buffers(pCodecCtx); + avcodec_flush_buffers(aCodecCtx); +} + +// Convert image to RGB format +Frame FFmpegReader::convert_image(AVPicture *copyFrame, int original_width, int original_height, PixelFormat pix_fmt) +{ + AVFrame *pFrameRGB = NULL; + int numBytes; + uint8_t *buffer = NULL; + + // Allocate an AVFrame structure + pFrameRGB = avcodec_alloc_frame(); + if (pFrameRGB == NULL) + throw OutOfBoundsFrame("Convert Image Broke!", current_frame, info.video_length); + + // Determine required buffer size and allocate buffer + const int new_width = original_width; + const int new_height = original_height; + numBytes = avpicture_get_size(PIX_FMT_RGB24, new_width, + new_height); + buffer = (uint8_t *) av_malloc(numBytes * sizeof(uint8_t)); + + // Assign appropriate parts of buffer to image planes in pFrameRGB + // Note that pFrameRGB is an AVFrame, but AVFrame is a superset + // of AVPicture + avpicture_fill((AVPicture *) pFrameRGB, buffer, PIX_FMT_RGB24, + new_width, new_height); + + struct SwsContext *img_convert_ctx = NULL; + + // Convert the image into YUV format that SDL uses + if(img_convert_ctx == NULL) { + img_convert_ctx = sws_getContext(original_width, original_height, + pix_fmt, new_width, new_height, + PIX_FMT_RGB24, SWS_FAST_BILINEAR, NULL, NULL, NULL); + + if(img_convert_ctx == NULL) { + fprintf(stderr, "Cannot initialize the conversion context!\n"); + exit(1); + } + } + + sws_scale(img_convert_ctx, copyFrame->data, copyFrame->linesize, + 0, original_height, pFrameRGB->data, pFrameRGB->linesize); + + // Get ImageMagick Constructor + Frame new_frame(current_frame, current_pts, new_width, new_height, "RGB", Magick::CharPixel, buffer); + + // Free the RGB image + av_free(buffer); + av_free(pFrameRGB); + + return new_frame; +} + +// Convert PTS into Frame Number +int FFmpegReader::ConvertPTStoFrame(int pts) +{ + return pts + pts_offset; +} + +// Convert Frame Number into PTS +int FFmpegReader::ConvertFrameToPTS(int frame_number) +{ + return frame_number - pts_offset; +} + diff --git a/src/FileReaderBase.cpp b/src/FileReaderBase.cpp new file mode 100644 index 00000000..d5171ee6 --- /dev/null +++ b/src/FileReaderBase.cpp @@ -0,0 +1,68 @@ +#include "../include/FileReaderBase.h" + +using namespace openshot; + +// Initialize the values of the FileInfo struct +void FileReaderBase::InitFileInfo() +{ + info.has_video = false; + info.has_audio = false; + info.duration = 0.0; + info.file_size = 0; + info.height = 0; + info.width = 0; + info.pixel_format = -1; + info.fps = Fraction(); + info.video_bit_rate = 0; + info.pixel_ratio = Fraction(); + info.display_ratio = Fraction(); + info.vcodec = ""; + info.video_length = 0; + info.video_stream_index = -1; + info.video_timebase = Fraction(); + info.acodec = ""; + info.audio_bit_rate = 0; + info.sample_rate = 0; + info.channels = 0; + info.audio_length = 0; + info.audio_stream_index = -1; + info.audio_timebase = Fraction(); +} + +// Display file information +void FileReaderBase::DisplayInfo() { + cout << fixed << setprecision(2); + cout << "----------------------------" << endl; + cout << "----- File Information -----" << endl; + cout << "----------------------------" << endl; + cout << "--> Has Video: " << info.has_video << endl; + cout << "--> Has Audio: " << info.has_audio << endl; + cout << "--> Duration: " << info.duration << " Seconds" << endl; + cout << "--> File Size: " << double(info.file_size) / 1024 / 1024 << " MB" << endl; + cout << "----------------------------" << endl; + cout << "----- Video Attributes -----" << endl; + cout << "----------------------------" << endl; + cout << "--> Height: " << info.height << endl; + cout << "--> Width: " << info.width << endl; + cout << "--> Pixel Format: " << info.pixel_format << endl; + cout << "--> Frames Per Second: " << info.fps.ToDouble() << " (" << info.fps.num << "/" << info.fps.den << ")" << endl; + cout << "--> Video Bit Rate: " << info.video_bit_rate/1000 << " kb/s" << endl; + cout << "--> Pixel Ratio: " << info.pixel_ratio.ToDouble() << " (" << info.pixel_ratio.num << "/" << info.pixel_ratio.den << ")" << endl; + cout << "--> Display Aspect Ratio: " << info.display_ratio.ToDouble() << " (" << info.display_ratio.num << "/" << info.display_ratio.den << ")" << endl; + cout << "--> Video Codec: " << info.vcodec << endl; + cout << "--> Video Length: " << info.video_length << " Frames" << endl; + cout << "--> Video Stream Index: " << info.video_stream_index << endl; + cout << "--> Video Timebase: " << info.video_timebase.ToDouble() << " (" << info.video_timebase.num << "/" << info.video_timebase.den << ")" << endl; + cout << "----------------------------" << endl; + cout << "----- Audio Attributes -----" << endl; + cout << "----------------------------" << endl; + cout << "--> Audio Codec: " << info.acodec << endl; + cout << "--> Audio Bit Rate: " << info.audio_bit_rate/1000 << " kb/s" << endl; + cout << "--> Sample Rate: " << info.sample_rate << " Hz" << endl; + cout << "--> # of Channels: " << info.channels << endl; + cout << "--> Audio Length: " << info.audio_length << endl; + cout << "--> Audio Stream Index: " << info.audio_stream_index << endl; + cout << "--> Audio Timebase: " << info.audio_timebase.ToDouble() << " (" << info.audio_timebase.num << "/" << info.audio_timebase.den << ")" << endl; + cout << "----------------------------" << endl; +} + diff --git a/src/Fraction.cpp b/src/Fraction.cpp new file mode 100644 index 00000000..75bf84ea --- /dev/null +++ b/src/Fraction.cpp @@ -0,0 +1,45 @@ +#include "../include/Fraction.h" + +using namespace openshot; + +// Constructor +Fraction::Fraction() : + num(1), den(1) { +} +Fraction::Fraction(int num, int den) : + num(num), den(den) { +} + +// Return this fraction as a float (i.e. 1/2 = 0.5) +float Fraction::ToFloat() { + return float(num) / float(den); +} + +// Return this fraction as a double (i.e. 1/2 = 0.5) +double Fraction::ToDouble() { + return double(num) / double(den); +} + +int Fraction::GreatestCommonDenominator() { + int first = num; + int second = den; + + // Find the biggest whole number that will divide into both the numerator + // and denominator + int t; + while (second != 0) { + t = second; + second = first % second; + first = t; + } + return first; +} + +void Fraction::Reduce() { + // Get the greatest common denominator + int GCD = GreatestCommonDenominator(); + + // Reduce this fraction to the smallest possible whole numbers + num = num / GCD; + den = den / GCD; +} diff --git a/src/Frame.cpp b/src/Frame.cpp new file mode 100644 index 00000000..9ec407c4 --- /dev/null +++ b/src/Frame.cpp @@ -0,0 +1,249 @@ +/** + * \file + * \brief Source code for the Frame class + * \author Copyright (c) 2011 Jonathan Thomas + */ + +#include "../include/Frame.h" + +using namespace std; +using namespace openshot; + +// Constructor - blank frame (300x200 blank image, 48kHz audio silence) +Frame::Frame() : number(1), pts(0), image(0), audio(0) +{ + // Init the image magic and audio buffer + image = new Magick::Image(Magick::Geometry(300,200), Magick::Color("red")); + audio = new juce::AudioSampleBuffer(2,1600); + + // initialize the audio samples to zero (silence) + audio->clear(); +}; + +// Constructor - image only (48kHz audio silence) +Frame::Frame(int number, int width, int height, string color) : number(number), pts(0), image(0), audio(0) +{ + // Init the image magic and audio buffer + image = new Magick::Image(Magick::Geometry(width, height), Magick::Color(color)); + audio = new juce::AudioSampleBuffer(2,1600); + + // initialize the audio samples to zero (silence) + audio->clear(); +}; + +// Constructor - image only from pixel array (48kHz audio silence) +Frame::Frame(int number, int pts, int width, int height, const string map, const Magick::StorageType type, const void *pixels) + : number(number), pts(pts), image(0), audio(0) +{ + // Init the image magic and audio buffer + image = new Magick::Image(width, height, map, type, pixels); + audio = new juce::AudioSampleBuffer(2,1600); + + // initialize the audio samples to zero (silence) + audio->clear(); +}; + +// Constructor - audio only (300x200 blank image) +Frame::Frame(int number, int samples, int channels) : number(number), pts(0), image(0), audio(0) +{ + // Init the image magic and audio buffer + image = new Magick::Image(Magick::Geometry(300, 200), Magick::Color("white")); + audio = new juce::AudioSampleBuffer(channels, samples); + + // initialize the audio samples to zero (silence) + audio->clear(); +}; + +// Constructor - image & audio +Frame::Frame(int number, int width, int height, string color, int samples, int channels) : number(number), pts(0), image(0), audio(0) +{ + // Init the image magic and audio buffer + image = new Magick::Image(Magick::Geometry(width, height), Magick::Color(color)); + audio = new juce::AudioSampleBuffer(channels, samples); + + // initialize the audio samples to zero (silence) + audio->clear(); +}; + +// Destructor +Frame::~Frame() +{ + // deallocate image and audio memory + DeletePointers(); +} + +// Copy constructor +Frame::Frame ( const Frame &other ) +{ + // copy pointers and data + DeepCopy(other); +} + +// Assignment operator +Frame& Frame::operator= (const Frame& other) +{ + if (this != &other) { + // deallocate image and audio memory + DeletePointers(); + + // copy pointers and data + DeepCopy(other); + } + + // return this instance + return *this; + } + +// Copy data and pointers from another Frame instance +void Frame::DeepCopy(const Frame& other) +{ + // ignore copy if objects are the same + number = other.number; + image = new Magick::Image(*(other.image)); + audio = new juce::AudioSampleBuffer(*(other.audio)); +} + +// Deallocate image and audio memory +void Frame::DeletePointers() +{ + // deallocate image memory + delete image; + image = NULL; + // deallocate audio memory + delete audio; + audio = NULL; +} + +// Display the frame image to the screen (primarily used for debugging reasons) +void Frame::Display() +{ + // display the image + image->display(); +} + +// Get pixel data (as packets) +const Magick::PixelPacket* Frame::GetPixels() +{ + // Return arry of pixel packets + return image->getConstPixels(0,0, image->columns(), image->rows()); +} + +// Get pixel data (for only a single scan-line) +const Magick::PixelPacket* Frame::GetPixels(int row) +{ + // Return arry of pixel packets + return image->getConstPixels(0,row, image->columns(), 1); +} + +// Get pixel data (for a resized image) +const Magick::PixelPacket* Frame::GetPixels(unsigned int width, unsigned int height, int frame) +{ + // Create a new resized image + Magick::Image newImage = *image; + newImage.resize(Magick::Geometry(width, height)); + + stringstream file; + file << "frame" << frame << ".png"; + newImage.write(file.str()); + + // Return arry of pixel packets + return newImage.getConstPixels(0,0, newImage.columns(), newImage.rows()); +} + +// Get height of image +int Frame::GetHeight() +{ + // return height + return image->rows(); +} + +// Get height of image +int Frame::GetWidth() +{ + // return width + return image->columns(); +} + +// Save the frame image +void Frame::Save() +{ + // save the image + stringstream file; + file << "frame" << number << ".png"; + image->write(file.str()); +} + +// Add audio samples to a specific channel +void Frame::AddAudio(int destChannel, int destStartSample, const float* source, int numSamples, float gainToApplyToSource = 1.0f) +{ + // Add samples to frame's audio buffer + audio->addFrom(destChannel, destStartSample, source, numSamples, gainToApplyToSource); +} + +// Play audio samples for this frame +void Frame::Play() +{ + AudioDeviceManager deviceManager; + deviceManager.initialise (0, /* number of input channels */ + audio->getNumChannels(), /* number of output channels */ + 0, /* no XML settings.. */ + true /* select default device on failure */); + + AudioFormatManager formatManager; + formatManager.registerBasicFormats(); + + AudioSourcePlayer audioSourcePlayer; + deviceManager.addAudioCallback (&audioSourcePlayer); + + ScopedPointer my_source; + my_source = new AudioBufferSource(audio->getNumSamples(), audio->getNumChannels()); + + cout << "audio->getNumSamples(): " << audio->getNumSamples() << endl; + + // Add audio to AudioBufferSource + for (int channel = 0; channel < audio->getNumChannels(); channel++) + { + // Add audio for each channel + my_source->AddAudio(channel, 0, audio->getSampleData(channel), audio->getNumSamples(), 1.0f); + } + + AudioTransportSource transport1; + transport1.setSource (my_source, + 5000, // tells it to buffer this many samples ahead + (double) 8000); + transport1.setPosition (0); + transport1.setGain(1.0); + + // Create MIXER + MixerAudioSource mixer; + mixer.addInputSource(&transport1, false); + audioSourcePlayer.setSource (&mixer); + + // Start transports + transport1.start(); + + while (transport1.isPlaying()) + { + cout << "playing" << endl; + sleep(1); + } + + cout << "DONE!!!" << endl; + + transport1.stop(); + transport1.setSource (0); + audioSourcePlayer.setSource (0); + deviceManager.removeAudioCallback (&audioSourcePlayer); + deviceManager.closeAudioDevice(); + deviceManager.removeAllChangeListeners(); + deviceManager.dispatchPendingMessages(); + + cout << "End of Play()" << endl; + + +} + + + + + diff --git a/src/FrameMapper.cpp b/src/FrameMapper.cpp new file mode 100644 index 00000000..f487c300 --- /dev/null +++ b/src/FrameMapper.cpp @@ -0,0 +1,249 @@ +/** + * \file + * \brief Source code for the FrameMapper class + * \author Copyright (c) 2011 Jonathan Thomas + */ + +#include "../include/FrameMapper.h" + +using namespace std; +using namespace openshot; + +FrameMapper::FrameMapper(int Length, Framerate original, Framerate target, Pulldown_Method pulldown) +{ + // init position + m_length = Length; + m_original = original; + m_target = target; + m_pulldown = pulldown; + + // Used to toggle odd / even fields + field_toggle = true; + + // init mapping between original and target frames + Init(); +} + +void FrameMapper::AddField(int frame) +{ + // Add a field, and toggle the odd / even field + Field f(frame, field_toggle); + AddField(f); +} + +void FrameMapper::AddField(Field field) +{ + // Add a field to the end of the field list + fields.push_back(field); + + // toggle the odd / even flag + field_toggle = (field_toggle ? false : true); +} + +// Use the original and target frame rates and a pull-down technique to create +// a mapping between the original fields and frames or a video to a new frame rate. +// This might repeat or skip fields and frames of the original video, depending on +// whether the frame rate is increasing or decreasing. +void FrameMapper::Init() +{ + // Get the difference (in frames) between the original and target frame rates + float difference = m_target.GetRoundedFPS() - m_original.GetRoundedFPS(); + + // Find the number (i.e. interval) of fields that need to be skipped or repeated + int field_interval = 0; + int frame_interval = 0; + + if (difference != 0) + { + field_interval = round(fabs(m_original.GetRoundedFPS() / difference)); + + // Get frame interval (2 fields per frame) + frame_interval = field_interval * 2.0f; + } + + // Clear the fields & frames lists + fields.clear(); + frames.clear(); + + // Loop through all fields in the original video file + int frame = 1; + int number_of_fields = m_length * 2; + for (int field = 1; field <= number_of_fields; field++) + { + + if (difference == 0) // Same frame rate, NO pull-down or special techniques required + { + // Add fields + AddField(frame); + } + else if (difference > 0) // Need to ADD fake fields & frames, because original video has too few frames + { + // Add current field + AddField(frame); + + if (m_pulldown == PULLDOWN_CLASSIC && field % field_interval == 0) + { + // Add extra field for each 'field interval + AddField(frame); + } + else if (m_pulldown == PULLDOWN_ADVANCED && field % field_interval == 0 && field % frame_interval != 0) + { + // Add both extra fields in the middle 'together' (i.e. 2:3:3:2 technique) + AddField(frame); // add field for current frame + + if (frame + 1 <= m_length) + // add field for next frame (if the next frame exists) + AddField(Field(frame + 1, field_toggle)); + } + else if (m_pulldown == PULLDOWN_NONE && field % frame_interval == 0) + { + // No pull-down technique needed, just repeat this frame + AddField(frame); + AddField(frame); + } + } + else if (difference < 0) // Need to SKIP fake fields & frames, because we want to return to the original film frame rate + { + + if (m_pulldown == PULLDOWN_CLASSIC && field % field_interval == 0) + { + // skip current field and toggle the odd/even flag + field_toggle = (field_toggle ? false : true); + } + else if (m_pulldown == PULLDOWN_ADVANCED && field % field_interval == 0 && field % frame_interval != 0) + { + // skip this field, plus the next field + field++; + } + else if (m_pulldown == PULLDOWN_NONE && frame % field_interval == 0) + { + // skip this field, plus the next one + field++; + } + else + { + // No skipping needed, so add the field + AddField(frame); + } + } + + // increment frame number (if field is divisible by 2) + if (field % 2 == 0 && field > 0) + frame++; + } + + // Loop through the target frames again (combining fields into frames) + Field Odd(0, true); // temp field used to track the ODD field + Field Even(0, true); // temp field used to track the EVEN field + + for (unsigned int field = 1; field <= fields.size(); field++) + { + // Get the current field + Field f = fields[field - 1]; + + // Is field divisible by 2? + if (field % 2 == 0 && field > 0) + { + // Set the bottom frame + if (f.isOdd) + Odd = f; + else + Even = f; + + // Create a frame and ADD it to the frames collection + MappedFrame frame = {Odd, Even}; + frames.push_back(frame); + } + else + { + // Set the top field + if (f.isOdd) + Odd = f; + else + Even = f; + } + } + + // Clear the internal fields list (no longer needed) + fields.clear(); +} + +MappedFrame FrameMapper::GetFrame(int TargetFrameNumber) throw(OutOfBoundsFrame) +{ + // Check if frame number is valid + if(TargetFrameNumber < 1 || TargetFrameNumber > frames.size()) + { + throw OutOfBoundsFrame("An invalid frame was requested.", TargetFrameNumber, frames.size()); + } + + // Return frame + return frames[TargetFrameNumber - 1]; +} + +void FrameMapper::MapTime(Keyframe new_time) throw(OutOfBoundsFrame) +{ + // New time-mapped frames vector + vector time_mapped_frames; + + // Loop through each coordinate of the Keyframe + for (int keyframe_number = 1; keyframe_number < new_time.Values.size(); keyframe_number++) { + // Get the current coordinate from the Keyframe + Coordinate c = new_time.Values[keyframe_number]; + + // Get the requested time-mapped frame number... and make it zero based, to match + // the existing frame mapper vector. + int requested_frame = round(c.Y) - 1; + + // Check if frame number is valid + if(requested_frame < 0 || requested_frame >= frames.size()) + { + throw OutOfBoundsFrame("An invalid frame was requested.", requested_frame + 1, frames.size()); + } + + // Add the Keyframe requested frame to the new "time-mapped" frames vector + time_mapped_frames.push_back(frames[requested_frame]); + } + + // Now that we have a new vector of frames that match the Keyframe, we need + // to replace the internal frames vector with this new one. + frames.clear(); + for (int new_frame = 0; new_frame < time_mapped_frames.size(); new_frame++) + { + // Add new frames to this frame mapper instance + frames.push_back(time_mapped_frames[new_frame]); + } + +} + +void FrameMapper::PrintMapping() +{ + // Get the difference (in frames) between the original and target frame rates + float difference = m_target.GetRoundedFPS() - m_original.GetRoundedFPS(); + + int field_interval = 0; + int frame_interval = 0; + + if (difference != 0) + { + // Find the number (i.e. interval) of fields that need to be skipped or repeated + field_interval = round(fabs(m_original.GetRoundedFPS() / difference)); + + // Get frame interval (2 fields per frame) + frame_interval = field_interval * 2.0f; + } + + // print header + cout << "Convert " << m_original.GetRoundedFPS() << " fps to " << m_target.GetRoundedFPS() << " fps" << endl; + cout << "Difference of " << difference << " frames per second" << endl; + cout << "Field Interval: " << field_interval << "th field" << endl; + cout << "Frame Interval: " << frame_interval << "th field" << endl << endl; + + // Loop through frame mappings + for (float map = 1; map <= frames.size(); map++) + { + MappedFrame frame = frames[map - 1]; + cout << "Target frame #: " << map << " mapped to original frame #:\t(" << frame.Odd.Frame << " odd, " << frame.Even.Frame << " even)" << endl; + + } + +} diff --git a/src/FrameRate.cpp b/src/FrameRate.cpp new file mode 100644 index 00000000..97868f7c --- /dev/null +++ b/src/FrameRate.cpp @@ -0,0 +1,29 @@ +/** + * \file + * \brief Source code for the FrameRate class + * \author Copyright (c) 2011 Jonathan Thomas + */ + +#include "../include/FrameRate.h" + +using namespace openshot; + +Framerate::Framerate(int numerator, int denominator) { + m_numerator = numerator; + m_denominator = denominator; +} + +Framerate::Framerate() { + m_numerator = 24; + m_denominator = 1; +} + +// Return a rounded integer of the frame rate (for example 30000/1001 returns 30 fps) +int Framerate::GetRoundedFPS() { + return round((float) m_numerator / m_denominator); +} + +// Return a float of the frame rate (for example 30000/1001 returns 29.97...) +float Framerate::GetFPS() { + return (float) m_numerator / m_denominator; +} diff --git a/src/KeyFrame.cpp b/src/KeyFrame.cpp new file mode 100644 index 00000000..cbaebf52 --- /dev/null +++ b/src/KeyFrame.cpp @@ -0,0 +1,451 @@ +/** + * \file + * \brief Source code for the Keyframe class + * \author Copyright (c) 2011 Jonathan Thomas + */ + +#include "../include/KeyFrame.h" + +using namespace std; +using namespace openshot; + +/// Because points can be added in any order, we need to reorder them +/// in ascending order based on the point.co.X value. This simplifies +/// processing the curve, due to all the points going from left to right. +void Keyframe::ReorderPoints() { + // Loop through all coordinates, and sort them by the X attribute + for (int x = 0; x < Points.size(); x++) { + int compare_index = x; + int smallest_index = x; + + for (int compare_index = x + 1; compare_index < Points.size(); compare_index++) { + if (Points[compare_index].co.X < Points[smallest_index].co.X) { + smallest_index = compare_index; + } + } + + // swap items + if (smallest_index != compare_index) { + cout << "swap item " << Points[compare_index].co.X << " with " + << Points[smallest_index].co.X << endl; + swap(Points[compare_index], Points[smallest_index]); + } + } +} + +/// Keyframe constructor +Keyframe::Keyframe() : Auto_Handle_Percentage(0.4f) { + // Init the factorial table, needed by bezier curves + CreateFactorialTable(); +} + +/// Add a new point on the key-frame. Each point has a primary coordinate, +/// a left handle, and a right handle. +void Keyframe::AddPoint(Point p) { + // Add point at correct spot + Points.push_back(p); + + // Sort / Re-order points based on X coordinate + ReorderPoints(); + + // Set Handles (used for smooth curves). + SetHandles(p); + + // Process all points in Key-frame + Process(); +} + +/// Set the handles, used for smooth curves. The handles are based +/// on the surrounding points. +void Keyframe::SetHandles(Point current) +{ + // Lookup the index of this point + int index = FindIndex(current); + Point *Current_Point = &Points[index]; + + // Find the previous point and next points (if any) + Point *Previous_Point = NULL; + Point *Next_Point = NULL; + float Previous_X_diff = 0.0f; + float Next_X_diff = 0.0f; + + // If not the 1st point + if (index > 0) + Previous_Point = &Points[index - 1]; + + // If not the last point + if (index < (Points.size() - 1)) + Next_Point = &Points[index + 1]; + + // Update the previous point's right handle + if (Previous_Point) + Previous_X_diff = (Current_Point->co.X - Previous_Point->co.X) * Auto_Handle_Percentage; // Use the keyframe handle percentage to size the handle + if (Previous_Point && Previous_Point->handle_type == AUTO) + Previous_Point->handle_right.X = Previous_Point->co.X + Previous_X_diff; + // Update the current point's left handle + if (Current_Point->handle_type == AUTO) + Current_Point->handle_left.X = Current_Point->co.X - Previous_X_diff; + + // Update the next point's left handle + if (Next_Point) + Next_X_diff = (Next_Point->co.X - Current_Point->co.X) * Auto_Handle_Percentage; // Use the keyframe handle percentage to size the handle + if (Next_Point && Next_Point->handle_type == AUTO) + Next_Point->handle_left.X = Next_Point->co.X - Next_X_diff; + // Update the next point's right handle + if (Current_Point->handle_type == AUTO) + Current_Point->handle_right.X = Current_Point->co.X + Next_X_diff; +} + +// Get the index of a point by matching a coordinate +int Keyframe::FindIndex(Point p) throw(OutOfBoundsPoint) { + // loop through points, and find a matching coordinate + for (int x = 0; x < Points.size(); x++) { + // Get each point + Point existing_point = Points[x]; + + // find a match + if (p.co.X == existing_point.co.X && p.co.Y == existing_point.co.Y) { + // Remove the matching point, and break out of loop + return x; + } + } + + // no matching point found + throw OutOfBoundsPoint("Invalid point requested", -1, Points.size()); +} + +// Get the value at a specific index +Coordinate Keyframe::GetValue(int index) +{ + // Is index a valid point? + if (index >= 0 && index < Values.size()) + // Return value + return Values[index]; + else if (index < 0 && Values.size() > 0) + // Return the minimum value + return Coordinate(index, Values[0].Y); + else if (index >= Values.size() && Values.size() > 0) + // return the maximum value + return Coordinate(index, Values[Values.size() - 1].Y); + else + // return a blank coordinate (0,0) + return Coordinate(0,0); +} + +// Get a point at a specific index +Point& Keyframe::GetPoint(int index) throw(OutOfBoundsPoint) { + // Is index a valid point? + if (index >= 0 && index < Points.size()) + return Points[index]; + else + // Invalid index + throw OutOfBoundsPoint("Invalid point requested", index, Points.size()); +} + +// Remove a point by matching a coordinate +void Keyframe::RemovePoint(Point p) throw(OutOfBoundsPoint) { + // loop through points, and find a matching coordinate + for (int x = 0; x < Points.size(); x++) { + // Get each point + Point existing_point = Points[x]; + + // find a match + if (p.co.X == existing_point.co.X && p.co.Y == existing_point.co.Y) { + // Remove the matching point, and break out of loop + Points.erase(Points.begin() + x); + + // Process points + Process(); + + break; + } + } + + // no matching point found + throw OutOfBoundsPoint("Invalid point requested", -1, Points.size()); +} + +// Remove a point by index +void Keyframe::RemovePoint(int index) throw(OutOfBoundsPoint) { + // Is index a valid point? + if (index >= 0 && index < Points.size()) + { + // Remove a specific point by index + Points.erase(Points.begin() + index); + + // Process points + Process(); + } + else + // Invalid index + throw OutOfBoundsPoint("Invalid point requested", index, Points.size()); +} + +void Keyframe::UpdatePoint(int index, Point p) { + // Remove matching point + RemovePoint(index); + + // Add new point + AddPoint(p); + + // Reorder points + ReorderPoints(); + + // Process points + Process(); +} + +void Keyframe::PrintPoints() { + int x = 0; + for (vector::iterator it = Points.begin(); it != Points.end(); it++) { + cout << it->co.X << "\t" << it->co.Y << endl; + x++; + } +} + +void Keyframe::PrintValues() { + cout << " PRINT ALL VALUES " << endl; + + for (int x = 0; x < Values.size(); x++) { + Coordinate c = Values[x]; + cout << c.X << "\t" << c.Y << endl; + } +} + +void Keyframe::Process() { + // do not process if no points are found + if (Points.size() == 0) + return; + + // Clear all values + Values.clear(); + + // fill in all values between 0 and 1st point's co.X + Point p1 = Points[0]; + for (int x = 0; x < p1.co.X; x++) + Values.push_back(Coordinate(Values.size(), p1.co.Y)); + + // Loop through each pair of points (1 less than the max points). Each + // pair of points is used to process a segment of the keyframe. + Point p2(0, 0); + for (int x = 0; x < Points.size() - 1; x++) { + p1 = Points[x]; + p2 = Points[x + 1]; + + // process segment p1,p2 + ProcessSegment(x, p1, p2); + } +} + +void Keyframe::ProcessSegment(int Segment, Point p1, Point p2) { + // Determine the number of values for this segment + int number_of_values = round(p2.co.X) - round(p1.co.X); + + // Exit function if no values + if (number_of_values == 0) + return; + + // Based on the interpolation mode, fill the "values" vector with the coordinates + // for this segment + switch (p2.interpolation) { + + // Calculate the "values" for this segment in with a LINEAR equation, effectively + // creating a straight line with coordinates. + case LINEAR: { + // Get the difference in value + float current_value = p1.co.Y; + float value_difference = p2.co.Y - p1.co.Y; + float value_increment = 0.0f; + + // Get the increment value, but take into account the + // first segment has 1 extra value + value_increment = value_difference / (float) (number_of_values); + + if (Segment == 0) + // Add an extra value to the first segment + number_of_values++; + else + // If not 1st segment, skip the first value + current_value += value_increment; + + // Add each increment to the values vector + for (int x = 0; x < number_of_values; x++) { + // add value as a coordinate to the "values" vector + Values.push_back(Coordinate(Values.size(), current_value)); + + // increment value + current_value += value_increment; + } + + break; + } + + // Calculate the "values" for this segment using a quadratic Bezier curve. This creates a + // smooth curve. + case BEZIER: { + + // Always increase the number of points by 1 (need all possible points + // to correctly calculate the curve). + number_of_values++; + number_of_values *= 4; // We need a higher resolution curve (4X) + + vector segment_coordinates; + segment_coordinates.push_back(p1.co); + segment_coordinates.push_back(p1.handle_right); + segment_coordinates.push_back(p2.handle_left); + segment_coordinates.push_back(p2.co); + + vector raw_coordinates; + int npts = segment_coordinates.size(); + int icount, jcount; + double step, t; + double last_x = -1; // small number init, to track the last used x + + // Calculate points on curve + icount = 0; + t = 0; + + step = (double) 1.0 / (number_of_values - 1); + + for (int i1 = 0; i1 < number_of_values; i1++) { + if ((1.0 - t) < 5e-6) + t = 1.0; + + jcount = 0; + + float new_x = 0.0f; + float new_y = 0.0f; + + for (int i = 0; i < npts; i++) { + Coordinate co = segment_coordinates[i]; + double basis = Bernstein(npts - 1, i, t); + new_x += basis * co.X; + new_y += basis * co.Y; + } + + // Add new value to the vector + Coordinate current_value(new_x, new_y); + + // Add all values for 1st segment + raw_coordinates.push_back(current_value); + + // increment counters + icount += 2; + t += step; + } + + // Loop through the raw coordinates, and map them correctly to frame numbers. For example, + // we can't have duplicate X values, since X represents our frame numbers. + int current_frame = p1.co.X; + float current_value = p1.co.Y; + for (int i = 0; i < raw_coordinates.size(); i++) + { + // Get the raw coordinate + Coordinate raw = raw_coordinates[i]; + + if (current_frame == round(raw.X)) + // get value of raw coordinate + current_value = raw.Y; + else + { + // Missing X values (use last known Y values) + int number_of_missing = round(raw.X) - current_frame; + for (int missing = 0; missing < number_of_missing; missing++) + { + // Add new value to the vector + Coordinate new_coord(current_frame, current_value); + + if (Segment == 0 || Segment > 0 && current_frame > p1.co.X) + // Add to "values" vector + Values.push_back(new_coord); + + // Increment frame + current_frame++; + } + + // increment the current value + current_value = raw.Y; + } + } + + // Add final coordinate + Coordinate new_coord(current_frame, current_value); + Values.push_back(new_coord); + + break; + } + + // Calculate the "values" of this segment by maintaining the value of p1 until the + // last point, and then make the value jump to p2. This effectively just jumps + // the value, instead of ramping up or down the value. + case CONSTANT: { + + if (Segment == 0) + // first segment has 1 extra value + number_of_values++; + + // Add each increment to the values vector + for (int x = 0; x < number_of_values; x++) { + if (x < (number_of_values - 1)) { + // Not the last value of this segment + // add coordinate to "values" + Values.push_back(Coordinate(Values.size(), p1.co.Y)); + } else { + // This is the last value of this segment + // add coordinate to "values" + Values.push_back(Coordinate(Values.size(), p2.co.Y)); + } + } + break; + } + + } +} + +// Create lookup table for fast factorial calculation +void Keyframe::CreateFactorialTable() { + // Only 4 lookups are needed, because we only support 4 coordinates per curve + FactorialLookup[0] = 1.0; + FactorialLookup[1] = 1.0; + FactorialLookup[2] = 2.0; + FactorialLookup[3] = 6.0; +} + +// Get a factorial for a coordinate +double Keyframe::Factorial(int n) { + assert(n >= 0 && n <= 3); + return FactorialLookup[n]; /* returns the value n! as a SUMORealing point number */ +} + +// Calculate the factorial function for Bernstein basis +double Keyframe::Ni(int n, int i) { + double ni; + double a1 = Factorial(n); + double a2 = Factorial(i); + double a3 = Factorial(n - i); + ni = a1 / (a2 * a3); + return ni; +} + +// Calculate Bernstein basis +double Keyframe::Bernstein(int n, int i, double t) { + double basis; + double ti; /* t^i */ + double tni; /* (1 - t)^i */ + + /* Prevent problems with pow */ + if (t == 0.0 && i == 0) + ti = 1.0; + else + ti = pow(t, i); + + if (n == i && t == 1.0) + tni = 1.0; + else + tni = pow((1 - t), (n - i)); + + // Bernstein basis + basis = Ni(n, i) * ti * tni; + return basis; +} + diff --git a/src/Main.cpp b/src/Main.cpp new file mode 100644 index 00000000..6f38c10e --- /dev/null +++ b/src/Main.cpp @@ -0,0 +1,52 @@ + +#include +#include +#include +#include "../include/OpenShot.h" + +using namespace openshot; + +void FrameReady(int number) +{ + cout << "Frame #: " << number << " is ready!" << endl; +} + +int main() +{ + + // openshot::FFmpegReader r("/home/jonathan/Aptana Studio Workspace/OpenShotLibrary/src/examples/test.mp4"); + // openshot::FFmpegReader r("/home/jonathan/Aptana Studio Workspace/OpenShotLibrary/src/examples/test1.mp4"); + // openshot::FFmpegReader r("/home/jonathan/Videos/Version 1.1a.mp4"); + openshot::FFmpegReader r("/home/jonathan/Videos/sintel-1024-stereo.mp4"); + // openshot::FFmpegReader r("/home/jonathan/Videos/sintel_trailer-720p.mp4"); + // openshot::FFmpegReader r("/home/jonathan/Aptana Studio Workspace/OpenShotLibrary/src/examples/test.wav"); + // openshot::FFmpegReader r("/home/jonathan/Music/Army of Lovers/Crucified/Army of Lovers - Crucified [Single Version].mp3"); + // openshot::FFmpegReader r("/home/jonathan/Documents/OpenShot Art/bannertemplate.png"); + // openshot::FFmpegReader r("/home/jonathan/Aptana Studio Workspace/OpenShotLibrary/src/examples/CMakeLists.txt"); + // openshot::FFmpegReader r("/home/jonathan/Aptana Studio Workspace/OpenShotLibrary/src/examples/asdf.wdf"); + + // Display debug info + r.DisplayInfo(); + + Player g; + g.SetReader(&r); + //g.SetFrameCallback(&FrameReady); + g.Play(); + + // Get a frame + //Frame f = r.GetFrame(300); + //f = r.GetFrame(301); + //f = r.GetFrame(302); + //f = r.GetFrame(303); + //f.Display(); + //f.Play(); + + //f.Display(); + r.Close(); + + cout << "Successfully executed Main.cpp!" << endl; + + + return 0; +} + diff --git a/src/Player.cpp b/src/Player.cpp new file mode 100644 index 00000000..5907796c --- /dev/null +++ b/src/Player.cpp @@ -0,0 +1,251 @@ +#include "../include/Player.h" + +using namespace openshot; + +// Default constructor +Player::Player() { + +}; + +// Set the current reader, such as a FFmpegReader +void Player::SetReader(FileReaderBase *p_reader) +{ + // Set the reader + reader = p_reader; +}; + +// Set a callback function which will be invoked each time a frame is ready to be displayed +void Player::SetFrameCallback(CallbackPtr p_callback, void *p_pythonmethod) +{ + // set the private function pointer + callback = p_callback; + pythonmethod = p_pythonmethod; + + +// double *Pixels = new double[100]; +// for (int i = 0; i < 100; i++) +// Pixels[i] = i + 100; + Frame f = reader->GetFrame(300); + + // invoke method pointer 10 times + for (int i = 0; i < 30; i++) + callback(i, f.GetWidth(), f.GetHeight(), f.GetPixels(), pythonmethod); +}; + +// Manually invoke function (if any) +void Player::Push() +{ + cout << "callback: " << &callback << endl; + cout << "pythonmethod: " << &pythonmethod << endl; + +// double *Pixels = new double[100]; +// for (int i = 0; i < 100; i++) +// Pixels[i] = i + 200; + Frame f = reader->GetFrame(500); + + // manually invoke method + for (int i = 30; i < 20; i++) + callback(i, f.GetWidth(), f.GetHeight(), f.GetPixels(), pythonmethod); +} + +// Play the video +void Player::Play() +{ + // Init SDL + if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER)) { + fprintf(stderr, "Could not initialize SDL - %s\n", SDL_GetError()); + exit(1); + } + + // Create an SDL surface + SDL_Surface *screen; + screen = SDL_SetVideoMode(reader->info.width, reader->info.height, 0, SDL_HWSURFACE | SDL_ANYFORMAT | SDL_DOUBLEBUF); + if (!screen) { + fprintf(stderr, "SDL: could not set video mode - exiting\n"); + exit(1); + } + + vector overlays; + int number_of_cycles = 60; + + +// Create YUV Overlay +//SDL_Overlay *bmp; +//bmp = SDL_CreateYUVOverlay(reader->info.width, reader->info.height, SDL_YV12_OVERLAY, screen); + +cout << setprecision(6); +cout << "START PREPARING SURFACES..." << endl; + +for (int stuff = 0; stuff < number_of_cycles; stuff++) +{ + // Get pointer to pixels of image. + Frame f = reader->GetFrame(300 + stuff); + + // Create YUV Overlay + SDL_Overlay *bmp; + bmp = SDL_CreateYUVOverlay(reader->info.width, reader->info.height, SDL_YV12_OVERLAY, screen); + SDL_LockYUVOverlay(bmp); + + // Get pixels for resized frame (for reduced color needed by YUV420p) + int divider = 2; + const Magick::PixelPacket *reduced_color = f.GetPixels(reader->info.width / divider, reader->info.height / divider, f.number); + int number_of_colors = (reader->info.width / divider) * (reader->info.height / divider); + + int pixel_index = 0; + int biggest_y = 0; + int smallest_y = 512; + for (int row = 0; row < screen->h; row++) { + // Get array of pixels for this row + //cout << "row: " << row << endl; + const Magick::PixelPacket *imagepixels = f.GetPixels(row); + + // Loop through pixels on this row + for (int column = 0; column < screen->w; column++) { + + // Get a pixel from this row + const Magick::PixelPacket *pixel = imagepixels; + + // Get the RGB colors + float r = pixel[column].red / 255.0; + float b = pixel[column].blue / 255.0; + float g = pixel[column].green / 255.0; + + // Calculate the Y value (brightness or luminance) + float y = (0.299 * r) + (0.587 * g) + (0.114 * b); + +// if (y > biggest_y) +// biggest_y = y; +// if (y < smallest_y) +// smallest_y = y; + + // Update the Y value for every pixel + bmp->pixels[0][pixel_index] = y; + //bmp->pixels[1][pixel_index] = 0; + //bmp->pixels[2][pixel_index] = 0; + + // Increment counter + pixel_index++; + + } + } + +// cout << "Biggest Y: " << biggest_y << ", Smallest Y: " << smallest_y << endl; +// cout << "ADD COLOR TO YUV OVERLAY" << endl; + + // Loop through the UV (color info) + //int color_counter = 511; + //number_of_colors = bmp->pitches[1] * 218; +// int biggest_v = 0; +// int smallest_v = 512; +// int biggest_u = 0; +// int smallest_u = 512; + for (int pixel_index = 0; pixel_index < number_of_colors; pixel_index++) + { + // Get a pixel from this row + const Magick::PixelPacket *pixel = reduced_color; + + // Get the RGB colors +// float r = pixel[pixel_index].red / 255.0; +// float b = pixel[pixel_index].blue / 255.0; +// float g = pixel[pixel_index].green / 255.0; + float r = 100.0; + float g = 100.0; + float b = 100.0; + + // Calculate UV colors + float v = (0.439 * r) - (0.368 * g) - (0.071 * b) + 128; + float u = (-0.148 * r) - (0.291 * g) + (0.439 * b) + 128; + +// // Grey pixel +// if (pixel_index == 40650) +// { +// cout << "GREY FOUND!!!" << endl; +// cout << "r: " << int(r) << ", g: " << int(g) << ", b: " << int(b) << " v: " << int(v) << ", u: " << int(u) << endl; +// } +// +// // Pink pixel +// if (pixel_index == 42698) +// { +// cout << "PINK FOUND!!!" << endl; +// cout << "r: " << int(r) << ", g: " << int(g) << ", b: " << int(b) << " v: " << int(v) << ", u: " << int(u) << endl; +// } + +// if (v > 255.0 || v <= 0.0) +// cout << "TOO BIG v!!!!" << endl; +// if (u > 255.0 || u <= 0.0) +// cout << "TOO BIG u!!!!" << endl; + +// if (v > biggest_v) +// biggest_v = v; +// if (v < smallest_v) +// smallest_v = v; +// +// if (u > biggest_u) +// biggest_u = u; +// if (u < smallest_u) +// smallest_u = u; + + // Update the UV values for every pixel + bmp->pixels[1][pixel_index] = v * 1.0; + bmp->pixels[2][pixel_index] = u * 1.0; + + //color_counter++; + } + + //cout << "Biggest V: " << biggest_v << ", Smallest V: " << smallest_v << endl; + //cout << "Biggest U: " << biggest_u << ", Smallest U: " << smallest_u << endl; + + SDL_UnlockYUVOverlay(bmp); + + // Add to vector + overlays.push_back(bmp); + + // Update surface. + //SDL_UpdateRect(screen, 0, 0, reader->info.width, reader->info.height); +} + +cout << "START DISPLAYING SURFACES..." << endl; + +SDL_Rect rect; +rect.x = 0; +rect.y = 0; +rect.w = reader->info.width; +rect.h = reader->info.height; + +//cout << "PRESS A BUTTON TO PLAY THE VIDEO" << endl; +//string name = ""; +//cin >> name; + +for (int repeat = 0; repeat < 10; repeat++) +{ + cout << "START OVERLAY LOOP:" << endl; + for (int z = 0; z < number_of_cycles; z++) + { + cout << z << endl; + //SDL_LockSurface( screen); + //primary_screen->pixels = surfaces[z].pixels; + //SDL_UnlockSurface(primary_screen); + //SDL_UpdateRect(screen, 0, 0, reader->info.width, reader->info.height); + + SDL_DisplayYUVOverlay(overlays[z], &rect); + //SDL_UnlockSurface( screen); + + SDL_Delay(41); + } +} + +// Works! +//cout << "SDL_RECT" << endl; +//SDL_Rect rect; +//rect.x = 0; +//rect.y = 0; +//rect.w = reader->info.width; +//rect.h = reader->info.height; +//SDL_DisplayYUVOverlay(bmp, &rect); + + +cout << "DONE!" << endl; + + SDL_Delay(3000); +} + diff --git a/src/Point.cpp b/src/Point.cpp new file mode 100644 index 00000000..d49bb481 --- /dev/null +++ b/src/Point.cpp @@ -0,0 +1,43 @@ +/** + * \file + * \brief Source code for the Point class + * \author Copyright (c) 2011 Jonathan Thomas + */ + +#include "../include/Point.h" + +using namespace std; +using namespace openshot; + +Point::Point(float x, float y) : + interpolation(BEZIER), handle_type(AUTO) { + // set new coorinate + co = Coordinate(x, y); + + // set handles + Initialize_Handles(); +} + +Point::Point(Coordinate co) : + co(co), interpolation(BEZIER), handle_type(AUTO) { + // set handles + Initialize_Handles(); +} + +Point::Point(Coordinate co, Interpolation_Type interpolation) : + co(co), interpolation(interpolation), handle_type(AUTO) { + // set handles + Initialize_Handles(); +} + +Point::Point(Coordinate co, Interpolation_Type interpolation, Handle_Type handle_type) : + co(co), interpolation(interpolation), handle_type(handle_type) { + // set handles + Initialize_Handles(); +} + +void Point::Initialize_Handles(float Offset) { + // initialize left and right handles + handle_left = Coordinate(co.X - Offset, co.Y); + handle_right = Coordinate(co.X + Offset, co.Y); +} diff --git a/src/examples/CMakeLists.txt b/src/examples/CMakeLists.txt new file mode 100644 index 00000000..2359c62f --- /dev/null +++ b/src/examples/CMakeLists.txt @@ -0,0 +1,10 @@ +############### TEST EXECUTABLES ################ + +add_executable(Example_FFmpeg Example_FFmpeg.cpp) +target_link_libraries(Example_FFmpeg ${FFMPEG_LIBRARIES} ${ImageMagick_LIBRARIES} ) + +add_executable(Example_ImageMagick Example_ImageMagick.cpp) +target_link_libraries(Example_ImageMagick ${ImageMagick_LIBRARIES} ) + +add_executable(Example_Juce Example_Juce.cpp) +target_link_libraries(Example_Juce ${LIBJUCE_LIBRARIES}) \ No newline at end of file diff --git a/src/examples/Example_FFmpeg.cpp b/src/examples/Example_FFmpeg.cpp new file mode 100644 index 00000000..16d3e37e --- /dev/null +++ b/src/examples/Example_FFmpeg.cpp @@ -0,0 +1,265 @@ +// tutorial01.c +// Code based on a tutorial by Martin Bohme (boehme@inb.uni-luebeckREMOVETHIS.de) +// Tested on Gentoo, CVS version 5/01/07 compiled with GCC 4.1.1 + +// A small sample program that shows how to use libavformat and libavcodec to +// read video from a file. +// +// Use +// +// gcc -o tutorial01 tutorial01.c -lavformat -lavcodec -lz +// +// to build (assuming libavformat and libavcodec are correctly installed +// your system). +// +// Run using +// +// tutorial01 myvideofile.mpg +// +// to write the first five frames from "myvideofile.mpg" to disk in PPM +// format. + +extern "C" { + #include + #include + #include +} + +#include +#include +#include +#include + +#include "Magick++.h" + +using namespace std; +using namespace Magick; + +void SaveFrame(AVFrame *pFrame, int width, int height, int iFrame) { + FILE *pFile; + char szFilename[32]; + int y; + + // Open file + sprintf(szFilename, "frame%d.ppm", iFrame); + pFile = fopen(szFilename, "wb"); + if (pFile == NULL) + return;time_t seconds; + + seconds = time (NULL); + + // Write header + fprintf(pFile, "P6\n%d %d\n255\n", width, height); + + // Write pixel data + for (y = 0; y < height; y++) + fwrite(pFrame->data[0] + y * pFrame->linesize[0], 1, width * 3, pFile); + + // Close file + fclose(pFile); +} + +/// Process a single frame of video +int process_frame(AVPicture *copyFrame, int original_width, int original_height, PixelFormat pix_fmt, int i) +{ + //cout << i << endl; + + AVFrame *pFrameRGB = NULL; + int numBytes; + uint8_t *buffer = NULL; + + // Allocate an AVFrame structure + pFrameRGB = avcodec_alloc_frame(); + if (pFrameRGB == NULL) + return -1; + + // Determine required buffer size and allocate buffer + const int new_width = 640; + const int new_height = 350; + numBytes = avpicture_get_size(PIX_FMT_RGB24, new_width, + new_height); + buffer = (uint8_t *) av_malloc(numBytes * sizeof(uint8_t)); + + // Assign appropriate parts of buffer to image planes in pFrameRGB + // Note that pFrameRGB is an AVFrame, but AVFrame is a superset + // of AVPicture + avpicture_fill((AVPicture *) pFrameRGB, buffer, PIX_FMT_RGB24, + new_width, new_height); + + struct SwsContext *img_convert_ctx = NULL; + + // Convert the image into YUV format that SDL uses + if(img_convert_ctx == NULL) { + img_convert_ctx = sws_getContext(original_width, original_height, + pix_fmt, new_width, new_height, + PIX_FMT_RGB24, SWS_FAST_BILINEAR, NULL, NULL, NULL); + + if(img_convert_ctx == NULL) { + fprintf(stderr, "Cannot initialize the conversion context!\n"); + exit(1); + } + + } + + sws_scale(img_convert_ctx, copyFrame->data, copyFrame->linesize, + 0, original_height, pFrameRGB->data, pFrameRGB->linesize); + + // Get ImageMagick Constructor + Image img(new_width, new_height, "RGB", CharPixel, buffer); + + // Apply some ImageMagick filters + img.negate(); + //img.sigmoidalContrast(15.0, 0.30 ); + //img.sparseColor(AllChannels, BarycentricColorInterpolate, 0, args); + img.flip(); + + // Get a list of pixels in our newly modified image. Each pixel is represented by + // a PixelPacket struct, which has 4 properties: .red, .blue, .green, .alpha + PixelPacket *pixel_packets = img.getPixels(0,0,new_width, new_height); + + // loop through ImageMagic pixel structs, and put the colors in a regular array, and move the + // colors around to match FFmpeg's order (RGB). They appear to be in RBG by default. + for (int packet = 0, row = 0; row < numBytes; packet++, row+=3) + { + // Update buffer (which is already linked to the AVFrame: pFrameRGB) + buffer[row] = pixel_packets[packet].red; + buffer[row+1] = pixel_packets[packet].green; + buffer[row+2] = pixel_packets[packet].blue; + } + + if (i % 5 == 0 and i != 0) + cout << "5 Frames Processed!" << endl; + //cout << i << endl; + + // write back pixels to AVFrame + if (i > 1 && i < 10) + SaveFrame(pFrameRGB, new_width, new_height, i); + //img.write("/home/jonathan/Aptana Studio Workspace/LearnFFmpeg/frameXX.png"); + + + // Free the RGB image + av_free(buffer); + av_free(pFrameRGB); + + return 0; +} + +int main(int argc, char *argv[]) { + + AVFormatContext *pFormatCtx; + int i, videoStream; + AVCodecContext *pCodecCtx; + AVCodec *pCodec; + AVPacket packet; + int frameFinished; + + if (argc < 2) { + printf("Please provide a movie file\n"); + return -1; + } + // Register all formats and codecs + av_register_all(); + + // Open video file + if (av_open_input_file(&pFormatCtx, argv[1], NULL, 0, NULL) != 0) + return -1; // Couldn't open file + + // Retrieve stream information + if (av_find_stream_info(pFormatCtx) < 0) + return -1; // Couldn't find stream information + + // Dump information about file onto standard error + dump_format(pFormatCtx, 0, argv[1], 0); + + // Find the first video stream + videoStream = -1; + for (unsigned int i = 0; i < pFormatCtx->nb_streams; i++) + if (pFormatCtx->streams[i]->codec->codec_type == CODEC_TYPE_VIDEO) { + videoStream = i; + break; + } + if (videoStream == -1) + return -1; // Didn't find a video stream + + // Get a pointer to the codec context for the video stream + pCodecCtx = pFormatCtx->streams[videoStream]->codec; + + // Find the decoder for the video stream + pCodec = avcodec_find_decoder(pCodecCtx->codec_id); + if (pCodec == NULL) { + fprintf(stderr, "Unsupported codec!\n"); + return -1; // Codec not found + } + // Open codec + if (avcodec_open(pCodecCtx, pCodec) < 0) + return -1; // Could not open codec + + // Allocate video frame + AVFrame *pFrame = avcodec_alloc_frame(); + + #pragma omp parallel private(i) + { + #pragma omp master + { + + // Read frames and save first five frames to disk + i = 0; + while (av_read_frame(pFormatCtx, &packet) >= 0) + { + // Is this a packet from the video stream? + if (packet.stream_index == videoStream) + { + // Decode video frame + avcodec_decode_video(pCodecCtx, pFrame, &frameFinished, + packet.data, packet.size); + + // Did we get a video frame? + if (frameFinished) + { + + #pragma omp task + { + + // Get the array buffer + int w = pCodecCtx->width; + int h = pCodecCtx->height; + + AVPicture copyFrame; + avpicture_alloc(©Frame, pCodecCtx->pix_fmt, w, h); + av_picture_copy(©Frame, (AVPicture *) pFrame, pCodecCtx->pix_fmt, w, h); + + // Process Frame + process_frame(©Frame, w, h, pCodecCtx->pix_fmt, i); + + // Free AVPicture + avpicture_free(©Frame); + } + + + } + + i++; + } + + + } + + } + } + + // Free the packet that was allocated by av_read_frame + av_free_packet(&packet); + + // Free the YUV frame + av_free(pFrame); + + // Close the codec + avcodec_close(pCodecCtx); + + // Close the video file + av_close_input_file(pFormatCtx); + + cout << "Done!" << endl; + + return 0; +} diff --git a/src/examples/Example_ImageMagick.cpp b/src/examples/Example_ImageMagick.cpp new file mode 100644 index 00000000..daaf1f69 --- /dev/null +++ b/src/examples/Example_ImageMagick.cpp @@ -0,0 +1,15 @@ +#include +#include "Magick++.h" + +using namespace std; +using namespace Magick; + +int main() +{ + // Create base image (white image of 300 by 200 pixels) + Image image( Geometry(300,200), Color("red") ); + image.matte(true); + image.display(); + + return 0; +} diff --git a/src/examples/Example_Juce.cpp b/src/examples/Example_Juce.cpp new file mode 100644 index 00000000..89f87fa8 --- /dev/null +++ b/src/examples/Example_Juce.cpp @@ -0,0 +1,105 @@ +//============================================================================ +// Name : LearnJuce.cpp +// Author : +// Version : +// Copyright : Your copyright notice +// Description : Hello World in C++, Ansi-style +//============================================================================ + +#include +#include "juce.h" + +using namespace std; +using namespace juce; + + +int main() { + cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!! + + AudioDeviceManager deviceManager; + deviceManager.initialise (0, /* number of input channels */ + 2, /* number of output channels */ + 0, /* no XML settings.. */ + true /* select default device on failure */); + + + + ///////////// FILE 1 ///////////// + String filepath = "/home/jonathan/Aptana Studio Workspace/OpenShotLibrary/src/examples/test.wav"; + File audioFile(filepath); + + AudioSourcePlayer audioSourcePlayer; + deviceManager.addAudioCallback (&audioSourcePlayer); + + // get a format manager and set it up with the basic types (wav and aiff). + AudioFormatManager formatManager; + formatManager.registerBasicFormats(); + + AudioFormatReader* reader = formatManager.createReaderFor (audioFile); + ScopedPointer currentAudioFileSource; + AudioTransportSource transport1; + if (reader != 0) + { + currentAudioFileSource = new AudioFormatReaderSource (reader, true); + + // ..and plug it into our transport source + transport1.setSource (currentAudioFileSource, + 32768, // tells it to buffer this many samples ahead + reader->sampleRate); + transport1.setPosition (0); + transport1.setGain(.5); + + } + + ///////////// FILE 2 ///////////// + String filepath1 = "/home/jonathan/Aptana Studio Workspace/OpenShotLibrary/src/examples/piano.wav"; + File audioFile1(filepath1); + + AudioSourcePlayer audioSourcePlayer1; + deviceManager.addAudioCallback (&audioSourcePlayer1); + + // get a format manager and set it up with the basic types (wav and aiff). + AudioFormatManager formatManager1; + formatManager1.registerBasicFormats(); + + AudioFormatReader* reader1 = formatManager1.createReaderFor (audioFile1); + ScopedPointer currentAudioFileSource1; + AudioTransportSource transport2; + if (reader1 != 0) + { + currentAudioFileSource1 = new AudioFormatReaderSource (reader1, true); + + // ..and plug it into our transport source + transport2.setSource (currentAudioFileSource1, + 32768, // tells it to buffer this many samples ahead + reader1->sampleRate); + transport2.setPosition (0); + transport2.setGain(.5); + } + + // Create MIXER + MixerAudioSource mixer; + mixer.addInputSource(&transport1, true); + mixer.addInputSource(&transport2, true); + audioSourcePlayer.setSource (&mixer); + + AudioPluginFormatManager pluginmanager; + cout << "Number of Plugins: " << pluginmanager.getNumFormats() << endl; + + + // Start transports + transport1.start(); + transport2.start(); + + // wait for 10 seconds + string name = ""; + cout << "Press to Exit" << endl; + cin >> name; + + + transport1.setSource (0); + audioSourcePlayer.setSource (0); + deviceManager.removeAudioCallback (&audioSourcePlayer); + + return 0; +} diff --git a/src/examples/piano.wav b/src/examples/piano.wav new file mode 100644 index 00000000..179a8d6c Binary files /dev/null and b/src/examples/piano.wav differ diff --git a/src/examples/test.mp4 b/src/examples/test.mp4 new file mode 100644 index 00000000..f011a97a Binary files /dev/null and b/src/examples/test.mp4 differ diff --git a/src/examples/test.py b/src/examples/test.py new file mode 100644 index 00000000..7f11dfb1 --- /dev/null +++ b/src/examples/test.py @@ -0,0 +1,33 @@ +import openshot +import gtk + +# Create Reader +r = openshot.FFmpegReader("/home/jonathan/Videos/sintel-1024-stereo.mp4") + +# Create Player +p = openshot.Player() + +# Set the Reader +p.SetReader(r) + +# Create callback method +def FrameDone(frame, width, height, pixels): + print "------------" + print "frame ready for display: %d" % frame + + # Create pixbuf + #pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8, width, height) + #pixel_array = pixbuf.get_pixels_array() + + # Loop through pixel array of pixbuf, and set values + #for row in range(height): + # for col in range(width): + # for color in range(3): + # pixel_array[row][col][color] = pixels[row][col][color] + + # Save pixbuf for debugging + #pixbuf.save("test.png", "png") + print "pixbuf created for frame: %d" % frame + +# Hook up python callback +p.set_pymethod(FrameDone) \ No newline at end of file diff --git a/src/examples/test.wav b/src/examples/test.wav new file mode 100644 index 00000000..ad425399 Binary files /dev/null and b/src/examples/test.wav differ diff --git a/src/examples/test1.mp4 b/src/examples/test1.mp4 new file mode 100644 index 00000000..e5ee8e54 Binary files /dev/null and b/src/examples/test1.mp4 differ diff --git a/src/openshot.i b/src/openshot.i new file mode 100644 index 00000000..35a6f24d --- /dev/null +++ b/src/openshot.i @@ -0,0 +1,119 @@ +%module openshot + +/* Ignore overloaded operator= warning */ +#pragma SWIG nowarn=362 + +%{ + +#include "../include/Cache.h" +#include "../include/Coordinate.h" +#include "../include/Exceptions.h" +#include "../include/FileReaderBase.h" +#include "../include/FFmpegReader.h" +#include "../include/Fraction.h" +#include "../include/Frame.h" +#include "../include/FrameMapper.h" +#include "../include/FrameRate.h" +#include "../include/Player.h" +#include "../include/Point.h" +#include "../include/KeyFrame.h" +%} + +/* Use standard exception handling */ +%include std_except.i +%include "std_string.i" + +// Grab a Python function object as a Python object. +%typemap(in) PyObject *pyfunc { + if (!PyCallable_Check($input)) { + PyErr_SetString(PyExc_TypeError, "Need a callable object!"); + return NULL; + } + $1 = $input; +} + + +%{ + +/* This function matches the prototype of the normal C callback + function for our widget. However, we use the clientdata pointer + for holding a reference to a Python callable object. */ + + #include + + static void PythonCallBack(int frame, int width, int height, const Magick::PixelPacket *Pixels, void *clientdata) + { + PyObject *func; + double dres = 0; + int i = 0; + + // CREATE ROWS OF PIXEL ARRAYS (which represent an image) + PyObject *rows = PyList_New(height); + for(int row_id = 0; row_id < height; row_id++) + { + PyObject *cols = PyList_New(width); + for(int col_id = 0; col_id < width; col_id++) + { + // CREATE RGB LIST + PyObject *pixels = PyList_New(3); + PyList_SetItem(pixels, 0, Py_BuildValue("i", Pixels[i].red)); + PyList_SetItem(pixels, 1, Py_BuildValue("i", Pixels[i].green)); + PyList_SetItem(pixels, 2, Py_BuildValue("i", Pixels[i].blue)); + + // ADD RGB PIXELS TO COL + PyList_SetItem(cols, col_id, pixels); + + // Increment pixel iterator + i++; + } + + PyList_SetItem(rows, row_id, cols); + } + + PyObject *arglist = PyTuple_New(4); + PyTuple_SetItem(arglist, 0, Py_BuildValue("i", frame)); + PyTuple_SetItem(arglist, 1, Py_BuildValue("i", width)); + PyTuple_SetItem(arglist, 2, Py_BuildValue("i", height)); + PyTuple_SetItem(arglist, 3, rows); + + func = (PyObject *) clientdata; // Get Python function + PyEval_CallObject(func, arglist); // Call Python + + Py_DECREF(arglist); // Trash arglist + Py_DECREF(rows); // Trash list + } + +%} + +%include "../include/Cache.h" +%include "../include/Coordinate.h" +%include "../include/Exceptions.h" +%include "../include/FileReaderBase.h" +%include "../include/FFmpegReader.h" +%include "../include/Fraction.h" +%include "../include/Frame.h" +%include "../include/FrameMapper.h" +%include "../include/FrameRate.h" +%include "../include/Player.h" +%include "../include/Point.h" +%include "../include/KeyFrame.h" + + + + + +// Attach a new method to our plot widget for adding Python functions +%extend openshot::Player { + // Set a Python function object as a callback function + // Note : PyObject *pyfunc is remapped with a typempap + + void set_pymethod(PyObject *pyfunc) { + self->SetFrameCallback(PythonCallBack, (void *) pyfunc); + Py_INCREF(pyfunc); + } +} + + + + + diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt new file mode 100644 index 00000000..ac702470 --- /dev/null +++ b/tests/CMakeLists.txt @@ -0,0 +1,73 @@ +################### UNITTEST++ ##################### +# Find UnitTest++ libraries (used for unit testing) +FIND_PACKAGE(UnitTest++ REQUIRED) + +# Include UnitTest++ headers (needed for compile) +include_directories(${UNITTEST++_INCLUDE_DIR}) + + + + +################ IMAGE MAGICK ################## +# Find the ImageMagick++ library +FIND_PACKAGE(ImageMagick COMPONENTS Magick++ MagickWand MagickCore) + +# Include ImageMagick++ headers (needed for compile) +include_directories(${ImageMagick_INCLUDE_DIRS}) + +################### FFMPEG ##################### +# Find FFmpeg libraries (used for video encoding / decoding) +FIND_PACKAGE(FFmpeg REQUIRED) + +# Include FFmpeg headers (needed for compile) +include_directories(${FFMPEG_INCLUDE_DIR}) + +################# JACK AUDIO ################### +# Find Jack Audio libraries +#FIND_PACKAGE(Jack) + +# Include Jack headers (needed for compile) +#include_directories(${LIBJACK_INCLUDE_DIR}) + +################# JUCE AUDIO ################### +# Find JUCE Audio libraries +FIND_PACKAGE(Juce) + +# Include Juce headers (needed for compile) +include_directories(${LIBJUCE_INCLUDE_DIRS}) + +################# SDL ################### +# Find SDL libraries +FIND_PACKAGE(SDL REQUIRED) + +# Include SDL headers (needed for compile) +include_directories(${SDL_INCLUDE_DIR}) + +################# GTK2 ################### +# Find GTK2 libraries +#FIND_PACKAGE(GTK2 COMPONENTS gtk gtkmm) +# +# Include GTK headers (needed for compile) +#include_directories(${GTK2_INCLUDE_DIRS}) + + +################ TESTER EXECUTABLE ################# +# Create unit test executable (tester) +add_executable(tester + tests.cpp + Cache_Tests.cpp + Coordinate_Tests.cpp + FileReaderBase_Tests.cpp + Fraction_Tests.cpp + FrameMapper_Tests.cpp + FrameRate_Tests.cpp + KeyFrame_Tests.cpp + Point_Tests.cpp) + +# Link libraries to the new executable +target_link_libraries(tester openshot ${UNITTEST++_LIBRARY}) + + +#################### MAKE TEST ###################### +# Hook up the 'make test' target to the 'tester' executable +ADD_CUSTOM_TARGET(test ${CMAKE_CURRENT_BINARY_DIR}/tester) \ No newline at end of file diff --git a/tests/Cache_Tests.cpp b/tests/Cache_Tests.cpp new file mode 100644 index 00000000..2b6f162d --- /dev/null +++ b/tests/Cache_Tests.cpp @@ -0,0 +1,123 @@ +#include "UnitTest++.h" +#include "../include/OpenShot.h" + +using namespace std; +using namespace openshot; + +TEST(Cache_Default_Constructor) +{ + // Create cache object + Cache c; + + // Loop 30 times + for (int i = 0; i < 30; i++) + { + // Add blank frame to the cache + c.Add(i, Frame()); + } + + // Cache should only have 20 items (since 20 is the max size in the default constructor) + CHECK_EQUAL(20, c.Count()); +} + +TEST(Cache_Max_Frames_Constructor) +{ + // Create cache object (with a max of 10 items) + Cache c(10); + + // Loop 20 times + for (int i = 0; i < 20; i++) + { + // Add blank frame to the cache + c.Add(i, Frame()); + } + + // Cache should only have 10 items + CHECK_EQUAL(10, c.Count()); +} + +TEST(Cache_Clear) +{ + // Create cache object (with a max of 10 items) + Cache c(10); + + // Loop 10 times + for (int i = 0; i < 10; i++) + { + // Add blank frame to the cache + c.Add(i, Frame()); + } + + // Cache should only have 10 items + CHECK_EQUAL(10, c.Count()); + + // Clear Cache + c.Clear(); + + // Cache should now have 0 items + CHECK_EQUAL(0, c.Count()); +} + +TEST(Cache_Add_Duplicate_Frames) +{ + // Create cache object (with a max of 10 items) + Cache c(10); + + // Loop 10 times + for (int i = 0; i < 10; i++) + { + // Add blank frame to the cache (each frame is #1) + c.Add(1, Frame()); + } + + // Cache should only have 1 items (since all frames were frame #1) + CHECK_EQUAL(1, c.Count()); +} + +TEST(Cache_Check_If_Frame_Exists) +{ + // Create cache object (with a max of 10 items) + Cache c(5); + + // Loop 5 times + for (int i = 1; i < 6; i++) + { + // Add blank frame to the cache + c.Add(i, Frame()); + } + + // Check if certain frames exists (only 1-5 exist) + CHECK_EQUAL(false, c.Exists(0)); + CHECK_EQUAL(true, c.Exists(1)); + CHECK_EQUAL(true, c.Exists(2)); + CHECK_EQUAL(true, c.Exists(3)); + CHECK_EQUAL(true, c.Exists(4)); + CHECK_EQUAL(true, c.Exists(5)); + CHECK_EQUAL(false, c.Exists(6)); +} + +TEST(Cache_GetFrame) +{ + // Create cache object (with a max of 10 items) + Cache c(10); + + // Create 3 frames + Frame red(1, 300, 300, "red"); + Frame blue(2, 400, 400, "blue"); + Frame green(3, 500, 500, "green"); + + // Add frames to cache + c.Add(red.number, red); + c.Add(blue.number, blue); + c.Add(green.number, green); + + // Get frames + CHECK_THROW(c.GetFrame(0), OutOfBoundsFrame); + CHECK_THROW(c.GetFrame(4), OutOfBoundsFrame); + + // Check if certain frames exists (only 1-5 exist) + CHECK_EQUAL(1, c.GetFrame(1).number); + CHECK_EQUAL(2, c.GetFrame(2).number); + CHECK_EQUAL(3, c.GetFrame(3).number); +} + diff --git a/tests/Coordinate_Tests.cpp b/tests/Coordinate_Tests.cpp new file mode 100644 index 00000000..21448422 --- /dev/null +++ b/tests/Coordinate_Tests.cpp @@ -0,0 +1,23 @@ +#include "UnitTest++.h" +#include "../include/OpenShot.h" + +using namespace std; +using namespace openshot; + +TEST(Coordinate_Default_Constructor) +{ + // Create an empty coordinate + Coordinate c1; + + CHECK_CLOSE(0.0f, c1.X, 0.00001); + CHECK_CLOSE(0.0f, c1.Y, 0.00001); +} + +TEST(Coordinate_X_Y_Constructor) +{ + // Create an empty coordinate + Coordinate c1(2,8); + + CHECK_CLOSE(2.0f, c1.X, 0.00001); + CHECK_CLOSE(8.0f, c1.Y, 0.00001); +} diff --git a/tests/FileReaderBase_Tests.cpp b/tests/FileReaderBase_Tests.cpp new file mode 100644 index 00000000..a1ff0426 --- /dev/null +++ b/tests/FileReaderBase_Tests.cpp @@ -0,0 +1,31 @@ +#include "UnitTest++.h" +#include "../include/OpenShot.h" + +using namespace std; +using namespace openshot; + +// Since it is not possible to instantiate an abstract class, this test creates +// a new derived class, in order to test the base class file info struct. +TEST(FileReaderBase_Derived_Class) +{ + // Create a new derived class from type FileReaderBase + class TestReader : public FileReaderBase + { + public: + TestReader() { InitFileInfo(); }; + Frame GetFrame(int number) { return Frame(); } + }; + + // Create an instance of the derived class + TestReader t1; + + // Check some of the default values of the FileInfo struct on the base class + // If InitFileInfo() is not called in the derived class, these checks would fail. + CHECK_EQUAL(false, t1.info.has_audio); + CHECK_EQUAL(false, t1.info.has_audio); + CHECK_CLOSE(0.0f, t1.info.duration, 0.00001); + CHECK_EQUAL(0, t1.info.height); + CHECK_EQUAL(0, t1.info.width); + CHECK_EQUAL(1, t1.info.fps.num); + CHECK_EQUAL(1, t1.info.fps.den); +} diff --git a/tests/Fraction_Tests.cpp b/tests/Fraction_Tests.cpp new file mode 100644 index 00000000..7d2d8649 --- /dev/null +++ b/tests/Fraction_Tests.cpp @@ -0,0 +1,69 @@ +#include "UnitTest++.h" +#include "../include/OpenShot.h" + +using namespace std; +using namespace openshot; + +TEST(Fraction_Default_Constructor) +{ + // Create a default fraction (should be 1/1) + Fraction f1; + + // Check default fraction + CHECK_EQUAL(1, f1.num); + CHECK_EQUAL(1, f1.den); + CHECK_CLOSE(1.0f, f1.ToFloat(), 0.00001); + CHECK_CLOSE(1.0f, f1.ToDouble(), 0.00001); + + // reduce fraction + f1.Reduce(); + + // Check the reduced fraction + CHECK_EQUAL(1, f1.num); + CHECK_EQUAL(1, f1.den); + CHECK_CLOSE(1.0f, f1.ToFloat(), 0.00001); + CHECK_CLOSE(1.0f, f1.ToDouble(), 0.00001); +} + +TEST(Fraction_640_480) +{ + // Create fraction + Fraction f1(640, 480); + + // Check fraction + CHECK_EQUAL(640, f1.num); + CHECK_EQUAL(480, f1.den); + CHECK_CLOSE(1.33333f, f1.ToFloat(), 0.00001); + CHECK_CLOSE(1.33333f, f1.ToDouble(), 0.00001); + + // reduce fraction + f1.Reduce(); + + // Check the reduced fraction + CHECK_EQUAL(4, f1.num); + CHECK_EQUAL(3, f1.den); + CHECK_CLOSE(1.33333f, f1.ToFloat(), 0.00001); + CHECK_CLOSE(1.33333f, f1.ToDouble(), 0.00001); +} + +TEST(Fraction_1280_720) +{ + // Create fraction + Fraction f1(1280, 720); + + // Check fraction + CHECK_EQUAL(1280, f1.num); + CHECK_EQUAL(720, f1.den); + CHECK_CLOSE(1.77777f, f1.ToFloat(), 0.00001); + CHECK_CLOSE(1.77777f, f1.ToDouble(), 0.00001); + + // reduce fraction + f1.Reduce(); + + // Check the reduced fraction + CHECK_EQUAL(16, f1.num); + CHECK_EQUAL(9, f1.den); + CHECK_CLOSE(1.77777f, f1.ToFloat(), 0.00001); + CHECK_CLOSE(1.77777f, f1.ToDouble(), 0.00001); +} + diff --git a/tests/FrameMapper_Tests.cpp b/tests/FrameMapper_Tests.cpp new file mode 100644 index 00000000..88da7002 --- /dev/null +++ b/tests/FrameMapper_Tests.cpp @@ -0,0 +1,170 @@ +#include "UnitTest++.h" +#include "../include/OpenShot.h" + +using namespace std; +using namespace openshot; + +TEST(FrameMapper_Get_Valid_Frame) +{ + // Create mapping between 24 fps and 29.97 fps using classic pulldown + FrameMapper mapping(100, Framerate(24, 1), Framerate(30000, 1001), PULLDOWN_CLASSIC); + + try + { + // Should find this frame + MappedFrame f = mapping.GetFrame(125); + CHECK(true); // success + } + catch (OutOfBoundsFrame &e) + { + // Unexpected failure to find frame + CHECK(false); + } +} + +TEST(FrameMapper_Invalid_Frame_Too_Small) +{ + // Create mapping 24 fps and 29.97 fps + FrameMapper mapping(100, Framerate(24, 1), Framerate(30000, 1001), PULLDOWN_CLASSIC); + + // Check invalid frame number + CHECK_THROW(mapping.GetFrame(0), OutOfBoundsFrame); + +} + +TEST(FrameMapper_Invalid_Frame_Too_Large) +{ + // Create mapping 24 fps and 29.97 fps + FrameMapper mapping(100, Framerate(24, 1), Framerate(30000, 1001), PULLDOWN_CLASSIC); + + // Check invalid frame number + CHECK_THROW(mapping.GetFrame(126), OutOfBoundsFrame); +} + +TEST(FrameMapper_24_fps_to_30_fps_Pulldown_Classic) +{ + // Create mapping 24 fps and 29.97 fps + FrameMapper mapping(100, Framerate(24, 1), Framerate(30000, 1001), PULLDOWN_CLASSIC); + MappedFrame frame2 = mapping.GetFrame(2); + MappedFrame frame3 = mapping.GetFrame(3); + + // Check for 3 fields of frame 2 + CHECK_EQUAL(2, frame2.Odd.Frame); + CHECK_EQUAL(2, frame2.Even.Frame); + CHECK_EQUAL(2, frame3.Odd.Frame); + CHECK_EQUAL(3, frame3.Even.Frame); +} + +TEST(FrameMapper_24_fps_to_30_fps_Pulldown_Advanced) +{ + // Create mapping 24 fps and 29.97 fps + FrameMapper mapping(100, Framerate(24, 1), Framerate(30000, 1001), PULLDOWN_ADVANCED); + MappedFrame frame2 = mapping.GetFrame(2); + MappedFrame frame3 = mapping.GetFrame(3); + MappedFrame frame4 = mapping.GetFrame(4); + + // Check for advanced pulldown (only 1 fake frame) + CHECK_EQUAL(2, frame2.Odd.Frame); + CHECK_EQUAL(2, frame2.Even.Frame); + CHECK_EQUAL(2, frame3.Odd.Frame); + CHECK_EQUAL(3, frame3.Even.Frame); + CHECK_EQUAL(3, frame4.Odd.Frame); + CHECK_EQUAL(3, frame4.Even.Frame); +} + +TEST(FrameMapper_24_fps_to_30_fps_Pulldown_None) +{ + // Create mapping 24 fps and 29.97 fps + FrameMapper mapping(100, Framerate(24, 1), Framerate(30000, 1001), PULLDOWN_NONE); + MappedFrame frame4 = mapping.GetFrame(4); + MappedFrame frame5 = mapping.GetFrame(5); + + // Check for advanced pulldown (only 1 fake frame) + CHECK_EQUAL(4, frame4.Odd.Frame); + CHECK_EQUAL(4, frame4.Even.Frame); + CHECK_EQUAL(4, frame5.Odd.Frame); + CHECK_EQUAL(4, frame5.Even.Frame); +} + +TEST(FrameMapper_30_fps_to_24_fps_Pulldown_Classic) +{ + // Create mapping between 29.97 fps and 24 fps + FrameMapper mapping(100, Framerate(30000, 1001), Framerate(24, 1), PULLDOWN_CLASSIC); + MappedFrame frame3 = mapping.GetFrame(3); + MappedFrame frame4 = mapping.GetFrame(4); + MappedFrame frame5 = mapping.GetFrame(5); + + // Check for advanced pulldown (only 1 fake frame) + CHECK_EQUAL(4, frame3.Odd.Frame); + CHECK_EQUAL(3, frame3.Even.Frame); + CHECK_EQUAL(5, frame4.Odd.Frame); + CHECK_EQUAL(4, frame4.Even.Frame); + CHECK_EQUAL(6, frame5.Odd.Frame); + CHECK_EQUAL(6, frame5.Even.Frame); +} + +TEST(FrameMapper_30_fps_to_24_fps_Pulldown_Advanced) +{ + // Create mapping between 29.97 fps and 24 fps + FrameMapper mapping(100, Framerate(30000, 1001), Framerate(24, 1), PULLDOWN_ADVANCED); + MappedFrame frame2 = mapping.GetFrame(2); + MappedFrame frame3 = mapping.GetFrame(3); + MappedFrame frame4 = mapping.GetFrame(4); + + // Check for advanced pulldown (only 1 fake frame) + CHECK_EQUAL(2, frame2.Odd.Frame); + CHECK_EQUAL(2, frame2.Even.Frame); + CHECK_EQUAL(4, frame3.Odd.Frame); + CHECK_EQUAL(4, frame3.Even.Frame); + CHECK_EQUAL(5, frame4.Odd.Frame); + CHECK_EQUAL(5, frame4.Even.Frame); +} + +TEST(FrameMapper_30_fps_to_24_fps_Pulldown_None) +{ + // Create mapping between 29.97 fps and 24 fps + FrameMapper mapping(100, Framerate(30000, 1001), Framerate(24, 1), PULLDOWN_NONE); + MappedFrame frame4 = mapping.GetFrame(4); + MappedFrame frame5 = mapping.GetFrame(5); + + // Check for advanced pulldown (only 1 fake frame) + CHECK_EQUAL(4, frame4.Odd.Frame); + CHECK_EQUAL(4, frame4.Even.Frame); + CHECK_EQUAL(6, frame5.Odd.Frame); + CHECK_EQUAL(6, frame5.Even.Frame); +} + +TEST(FrameMapper_MapTime) +{ + // Create mapping 24 fps and 24 fps + FrameMapper mapping(100, Framerate(24, 1), Framerate(24, 1), PULLDOWN_NONE); + + // Create a Keyframe to re-map time (forward, reverse, and then forward again) + Keyframe kf; + kf.AddPoint(openshot::Point(Coordinate(1, 1), LINEAR)); + kf.AddPoint(openshot::Point(Coordinate(40, 40), LINEAR)); + kf.AddPoint(openshot::Point(Coordinate(60, 20), LINEAR)); + kf.AddPoint(openshot::Point(Coordinate(100, 100), LINEAR)); + + // Re-map time + mapping.MapTime(kf); + + // Check for OutOfBoundsFrames + CHECK_THROW(mapping.GetFrame(0), OutOfBoundsFrame); + CHECK_THROW(mapping.GetFrame(101), OutOfBoundsFrame); + + // Check to see if time remapping worked correctly + CHECK_EQUAL(1, mapping.GetFrame(1).Odd.Frame); + CHECK_EQUAL(2, mapping.GetFrame(2).Odd.Frame); + CHECK_EQUAL(39, mapping.GetFrame(39).Odd.Frame); + CHECK_EQUAL(40, mapping.GetFrame(40).Odd.Frame); + CHECK_EQUAL(39, mapping.GetFrame(41).Odd.Frame); + CHECK_EQUAL(38, mapping.GetFrame(42).Odd.Frame); + CHECK_EQUAL(21, mapping.GetFrame(59).Odd.Frame); + CHECK_EQUAL(20, mapping.GetFrame(60).Odd.Frame); + CHECK_EQUAL(22, mapping.GetFrame(61).Odd.Frame); + CHECK_EQUAL(24, mapping.GetFrame(62).Odd.Frame); + CHECK_EQUAL(90, mapping.GetFrame(95).Odd.Frame); + CHECK_EQUAL(100, mapping.GetFrame(100).Odd.Frame); + +} diff --git a/tests/FrameRate_Tests.cpp b/tests/FrameRate_Tests.cpp new file mode 100644 index 00000000..88db51a3 --- /dev/null +++ b/tests/FrameRate_Tests.cpp @@ -0,0 +1,54 @@ +#include "UnitTest++.h" +#include "../include/OpenShot.h" + +using namespace std; +using namespace openshot; + +TEST(FrameRate_Check_Rounded_24_FPS) +{ + // Create framerate for 24 fps + Framerate rate(24, 1); + + CHECK_EQUAL(24, rate.GetRoundedFPS()); +} + +TEST(FrameRate_Check_Rounded_25_FPS) +{ + // Create framerate for 25 fps + Framerate rate(25, 1); + + CHECK_EQUAL(25, rate.GetRoundedFPS()); +} + +TEST(FrameRate_Check_Rounded_29_97_FPS) +{ + // Create framerate for 29.97 fps + Framerate rate(30000, 1001); + + CHECK_EQUAL(30, rate.GetRoundedFPS()); +} + +TEST(FrameRate_Check_Decimal_24_FPS) +{ + // Create framerate for 24 fps + Framerate rate(24, 1); + + CHECK_CLOSE(24.0f, rate.GetFPS(), 0.0001); +} + +TEST(FrameRate_Check_Decimal_25_FPS) +{ + // Create framerate for 24 fps + Framerate rate(25, 1); + + CHECK_CLOSE(25.0f, rate.GetFPS(), 0.0001); +} + +TEST(FrameRate_Check_Decimal_29_97_FPS) +{ + // Create framerate for 29.97 fps + Framerate rate(30000, 1001); + + CHECK_CLOSE(29.97f, rate.GetFPS(), 0.0001); +} + diff --git a/tests/KeyFrame_Tests.cpp b/tests/KeyFrame_Tests.cpp new file mode 100644 index 00000000..5935670a --- /dev/null +++ b/tests/KeyFrame_Tests.cpp @@ -0,0 +1,164 @@ +#include "UnitTest++.h" +#include "../include/OpenShot.h" + +using namespace std; +using namespace openshot; + +TEST(Keyframe_GetPoint_With_No_Points) +{ + // Create an empty keyframe + Keyframe k1; + + CHECK_THROW(k1.GetPoint(0), OutOfBoundsPoint); +} + +TEST(Keyframe_GetPoint_With_1_Points) +{ + // Create an empty keyframe + Keyframe k1; + k1.AddPoint(openshot::Point(2,3)); + + CHECK_THROW(k1.GetPoint(-1), OutOfBoundsPoint); + CHECK_EQUAL(1, k1.Points.size()); + CHECK_CLOSE(2.0f, k1.GetPoint(0).co.X, 0.00001); + CHECK_CLOSE(3.0f, k1.GetPoint(0).co.Y, 0.00001); + CHECK_THROW(k1.GetPoint(1), OutOfBoundsPoint); +} + + +TEST(Keyframe_AddPoint_With_1_Point) +{ + // Create an empty keyframe + Keyframe k1; + k1.Auto_Handle_Percentage = 0.4f; + k1.AddPoint(openshot::Point(2,9)); + + CHECK_CLOSE(2.0f, k1.GetPoint(0).co.X, 0.00001); + CHECK_THROW(k1.GetPoint(-1), OutOfBoundsPoint); + CHECK_THROW(k1.GetPoint(1), OutOfBoundsPoint); +} + +TEST(Keyframe_AddPoint_With_2_Points) +{ + // Create an empty keyframe + Keyframe k1; + k1.Auto_Handle_Percentage = 0.4f; + k1.AddPoint(openshot::Point(2,9)); + k1.AddPoint(openshot::Point(5,20)); + + CHECK_CLOSE(2.0f, k1.GetPoint(0).co.X, 0.00001); + CHECK_CLOSE(5.0f, k1.GetPoint(1).co.X, 0.00001); + CHECK_THROW(k1.GetPoint(-1), OutOfBoundsPoint); + CHECK_THROW(k1.GetPoint(2), OutOfBoundsPoint); +} + +TEST(Keyframe_GetValue_For_Bezier_Curve_2_Points) +{ + // Create a keyframe curve with 2 points + Keyframe kf; + kf.Auto_Handle_Percentage = 0.4f; + kf.AddPoint(openshot::Point(Coordinate(1, 1), BEZIER)); + kf.AddPoint(openshot::Point(Coordinate(50, 4), BEZIER)); + + // Spot check values from the curve + CHECK_CLOSE(1.0f, kf.GetValue(-1).Y, 0.0001); + CHECK_CLOSE(1.0f, kf.GetValue(0).Y, 0.0001); + CHECK_CLOSE(1.00023f, kf.GetValue(1).Y, 0.0001); + CHECK_CLOSE(1.18398f, kf.GetValue(9).Y, 0.0001); + CHECK_CLOSE(1.99988f, kf.GetValue(20).Y, 0.0001); + CHECK_CLOSE(3.75424f, kf.GetValue(40).Y, 0.0001); + CHECK_CLOSE(4.0f, kf.GetValue(50).Y, 0.0001); + // Check the expected number of values + CHECK_EQUAL(kf.Values.size(), 51); +} + +TEST(Keyframe_GetValue_For_Bezier_Curve_5_Points_40_Percent_Handle) +{ + // Create a keyframe curve with 2 points + Keyframe kf; + kf.Auto_Handle_Percentage = 0.4f; + kf.AddPoint(openshot::Point(Coordinate(1, 1), BEZIER)); + kf.AddPoint(openshot::Point(Coordinate(50, 4), BEZIER)); + kf.AddPoint(openshot::Point(Coordinate(100, 10), BEZIER)); + kf.AddPoint(openshot::Point(Coordinate(150, 0), BEZIER)); + kf.AddPoint(openshot::Point(Coordinate(200, 3), BEZIER)); + + // Spot check values from the curve + CHECK_CLOSE(kf.GetValue(-1).Y, 1.0f, 0.0001); + CHECK_CLOSE(1.0f, kf.GetValue(0).Y, 0.0001); + CHECK_CLOSE(1.00023f, kf.GetValue(1).Y, 0.0001); + CHECK_CLOSE(2.69174f, kf.GetValue(27).Y, 0.0001); + CHECK_CLOSE(7.46386f, kf.GetValue(77).Y, 0.0001); + CHECK_CLOSE(4.22691f, kf.GetValue(127).Y, 0.0001); + CHECK_CLOSE(1.73193f, kf.GetValue(177).Y, 0.0001); + CHECK_CLOSE(3.0f, kf.GetValue(200).Y, 0.0001); + // Check the expected number of values + CHECK_EQUAL(kf.Values.size(), 201); +} + +TEST(Keyframe_GetValue_For_Bezier_Curve_5_Points_25_Percent_Handle) +{ + // Create a keyframe curve with 2 points + Keyframe kf; + kf.Auto_Handle_Percentage = 0.25f; + kf.AddPoint(openshot::Point(Coordinate(1, 1), BEZIER)); + kf.AddPoint(openshot::Point(Coordinate(50, 4), BEZIER)); + kf.AddPoint(openshot::Point(Coordinate(100, 10), BEZIER)); + kf.AddPoint(openshot::Point(Coordinate(150, 0), BEZIER)); + kf.AddPoint(openshot::Point(Coordinate(200, 3), BEZIER)); + + // Spot check values from the curve + CHECK_CLOSE(1.0f, kf.GetValue(-1).Y, 0.0001); + CHECK_CLOSE(1.0f, kf.GetValue(0).Y, 0.0001); + CHECK_CLOSE(1.0009f, kf.GetValue(1).Y, 0.0001); + CHECK_CLOSE(2.64678f, kf.GetValue(27).Y, 0.0001); + CHECK_CLOSE(7.37597f, kf.GetValue(77).Y, 0.0001); + CHECK_CLOSE(4.37339f, kf.GetValue(127).Y, 0.0001); + CHECK_CLOSE(1.68798f, kf.GetValue(177).Y, 0.0001); + CHECK_CLOSE(3.0f, kf.GetValue(200).Y, 0.0001); + // Check the expected number of values + CHECK_EQUAL(kf.Values.size(), 201); +} + +TEST(Keyframe_GetValue_For_Linear_Curve_3_Points) +{ + // Create a keyframe curve with 2 points + Keyframe kf; + kf.Auto_Handle_Percentage = 0.4f; + kf.AddPoint(openshot::Point(Coordinate(1, 1), LINEAR)); + kf.AddPoint(openshot::Point(Coordinate(25, 8), LINEAR)); + kf.AddPoint(openshot::Point(Coordinate(50, 2), LINEAR)); + + // Spot check values from the curve + CHECK_CLOSE(1.0f, kf.GetValue(-1).Y, 0.0001); + CHECK_CLOSE(1.0f, kf.GetValue(0).Y, 0.0001); + CHECK_CLOSE(1.0f, kf.GetValue(1).Y, 0.0001); + CHECK_CLOSE(3.33333f, kf.GetValue(9).Y, 0.0001); + CHECK_CLOSE(6.54167f, kf.GetValue(20).Y, 0.0001); + CHECK_CLOSE(4.4f, kf.GetValue(40).Y, 0.0001); + CHECK_CLOSE(2.0f, kf.GetValue(50).Y, 0.0001); + // Check the expected number of values + CHECK_EQUAL(kf.Values.size(), 51); +} + +TEST(Keyframe_GetValue_For_Constant_Curve_3_Points) +{ + // Create a keyframe curve with 2 points + Keyframe kf; + kf.Auto_Handle_Percentage = 0.4f; + kf.AddPoint(openshot::Point(Coordinate(1, 1), CONSTANT)); + kf.AddPoint(openshot::Point(Coordinate(25, 8), CONSTANT)); + kf.AddPoint(openshot::Point(Coordinate(50, 2), CONSTANT)); + + // Spot check values from the curve + CHECK_CLOSE(1.0f, kf.GetValue(-1).Y, 0.0001); + CHECK_CLOSE(1.0f, kf.GetValue(0).Y, 0.0001); + CHECK_CLOSE(1.0f, kf.GetValue(1).Y, 0.0001); + CHECK_CLOSE(1.0f, kf.GetValue(24).Y, 0.0001); + CHECK_CLOSE(8.0f, kf.GetValue(25).Y, 0.0001); + CHECK_CLOSE(8.0f, kf.GetValue(40).Y, 0.0001); + CHECK_CLOSE(8.0f, kf.GetValue(49).Y, 0.0001); + CHECK_CLOSE(2.0f, kf.GetValue(50).Y, 0.0001); + // Check the expected number of values + CHECK_EQUAL(kf.Values.size(), 51); +} diff --git a/tests/Point_Tests.cpp b/tests/Point_Tests.cpp new file mode 100644 index 00000000..e6dcf931 --- /dev/null +++ b/tests/Point_Tests.cpp @@ -0,0 +1,110 @@ +#include "UnitTest++.h" +#include "../include/OpenShot.h" + +using namespace std; +using namespace openshot; + +TEST(Point_Default_Constructor) +{ + // Create a point with X and Y values + openshot::Point p1(2,9); + + CHECK_EQUAL(2, p1.co.X); + CHECK_EQUAL(9, p1.co.Y); + CHECK_EQUAL(BEZIER, p1.interpolation); +} + +TEST(Point_Constructor_With_Coordinate) +{ + // Create a point with a coordinate + Coordinate c1(3,7); + openshot::Point p1(c1); + + CHECK_EQUAL(3, p1.co.X); + CHECK_EQUAL(7, p1.co.Y); + CHECK_EQUAL(BEZIER, p1.interpolation); +} + +TEST(Point_Constructor_With_Coordinate_And_LINEAR_Interpolation) +{ + // Create a point with a coordinate and interpolation + Coordinate c1(3,9); + Interpolation_Type interp = LINEAR; + openshot::Point p1(c1, interp); + + CHECK_EQUAL(3, c1.X); + CHECK_EQUAL(9, c1.Y); + CHECK_EQUAL(LINEAR, p1.interpolation); +} + +TEST(Point_Constructor_With_Coordinate_And_BEZIER_Interpolation) +{ + // Create a point with a coordinate and interpolation + Coordinate c1(3,9); + Interpolation_Type interp = BEZIER; + openshot::Point p1(c1, interp); + + CHECK_EQUAL(3, p1.co.X); + CHECK_EQUAL(9, p1.co.Y); + CHECK_EQUAL(BEZIER, p1.interpolation); +} + +TEST(Point_Constructor_With_Coordinate_And_CONSTANT_Interpolation) +{ + // Create a point with a coordinate and interpolation + Coordinate c1(2,8); + Interpolation_Type interp = CONSTANT; + openshot::Point p1(c1, interp); + + CHECK_EQUAL(2, p1.co.X); + CHECK_EQUAL(8, p1.co.Y); + CHECK_EQUAL(CONSTANT, p1.interpolation); +} + +TEST(Point_Constructor_With_Coordinate_And_BEZIER_And_AUTO_Handle) +{ + // Create a point with a coordinate and interpolation + Coordinate c1(3,9); + openshot::Point p1(c1, BEZIER, AUTO); + + CHECK_EQUAL(3, p1.co.X); + CHECK_EQUAL(9, p1.co.Y); + CHECK_EQUAL(BEZIER, p1.interpolation); + CHECK_EQUAL(AUTO, p1.handle_type); +} + +TEST(Point_Constructor_With_Coordinate_And_BEZIER_And_MANUAL_Handle) +{ + // Create a point with a coordinate and interpolation + Coordinate c1(3,9); + openshot::Point p1(c1, BEZIER, MANUAL); + + CHECK_EQUAL(3, p1.co.X); + CHECK_EQUAL(9, p1.co.Y); + CHECK_EQUAL(BEZIER, p1.interpolation); + CHECK_EQUAL(MANUAL, p1.handle_type); +} + +TEST(Point_Set_Handles_Auto_No_Value) +{ + // Create a point with X and Y values + openshot::Point p1(2,8); + p1.Initialize_Handles(); + + CHECK_EQUAL(p1.co.Y, p1.handle_left.Y); + CHECK_EQUAL(p1.co.Y, p1.handle_right.Y); + CHECK_CLOSE(p1.co.X, p1.handle_left.X, 0.000001); + CHECK_CLOSE(p1.co.X, p1.handle_right.X, 0.000001); +} + +TEST(Point_Set_Handles_Auto_With_Values) +{ + // Create a point with X and Y values + openshot::Point p1(2,8); + p1.Initialize_Handles(4.2); + + CHECK_EQUAL(p1.co.Y, p1.handle_left.Y); + CHECK_EQUAL(p1.co.Y, p1.handle_right.Y); + CHECK_CLOSE(p1.co.X - 4.2, p1.handle_left.X, 0.000001); + CHECK_CLOSE(p1.co.X + 4.2, p1.handle_right.X, 0.000001); +} diff --git a/tests/tests.cpp b/tests/tests.cpp new file mode 100644 index 00000000..0bd1045c --- /dev/null +++ b/tests/tests.cpp @@ -0,0 +1,19 @@ +#include +#include "UnitTest++.h" + +using namespace std; +using namespace UnitTest; + +int main() +{ + cout << "----------------------------" << endl; + cout << " RUNNING ALL TESTS" << endl; + cout << "----------------------------" << endl; + + // Run all unit tests + RunAllTests(); + + cout << "----------------------------" << endl; + + return 0; +}