pax_global_header00006660000000000000000000000064150410246150014510gustar00rootroot0000000000000052 comment=e15d3fc436b91a3c51d1dcd489ebff3261e1cf35 ruby-gpgme-2.0.25/000077500000000000000000000000001504102461500136545ustar00rootroot00000000000000ruby-gpgme-2.0.25/.editorconfig000066400000000000000000000001631504102461500163310ustar00rootroot00000000000000root = true # 2 space indentation [*.{rb,c}] indent_style = space indent_size = 2 trim_trailing_whitespace = true ruby-gpgme-2.0.25/.github/000077500000000000000000000000001504102461500152145ustar00rootroot00000000000000ruby-gpgme-2.0.25/.github/workflows/000077500000000000000000000000001504102461500172515ustar00rootroot00000000000000ruby-gpgme-2.0.25/.github/workflows/test.yml000066400000000000000000000016351504102461500207600ustar00rootroot00000000000000name: Matrix Testing on: push: branches: [ master ] pull_request: branches: [ master ] jobs: test: runs-on: ubuntu-latest strategy: fail-fast: false matrix: ruby: ['3.4', '3.3', '3.2', '3.1', '3.0', '2.7'] use_system_libraries: [false, true] steps: - uses: actions/checkout@v3 - name: Set up Ruby ${{ matrix.ruby-version }} uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} - name: Install libgpgme-dev if: ${{ matrix.use_system_libraries }} run: | sudo apt install -y libgpgme-dev echo "RUBY_GPGME_USE_SYSTEM_LIBRARIES=1" >> $GITHUB_ENV - name: Install dependencies run: bundle install - name: Run tests run: | gpg --version gpg2 --version gpgconf --list-options gpg-agent bundle exec rake TESTOPTS="-v" ruby-gpgme-2.0.25/.gitignore000066400000000000000000000001261504102461500156430ustar00rootroot00000000000000doc gpgme_n.* mkmf.log Makefile coverage Gemfile.lock /tmp/* /ports/* .byebug_history ruby-gpgme-2.0.25/AUTHORS000066400000000000000000000001601504102461500147210ustar00rootroot00000000000000Daiki Ueno (wrote version 1.0) Albert Llop (major rework of version 2.0) ruby-gpgme-2.0.25/COPYING000066400000000000000000000431271504102461500147160ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19yy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. ruby-gpgme-2.0.25/COPYING.LESSER000066400000000000000000000636501504102461500157150ustar00rootroot00000000000000 GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. ^L Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. ^L GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. ^L Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. ^L 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. ^L 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. ^L 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser 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 Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. ^L 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "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 LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY 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 LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS ^L How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! ruby-gpgme-2.0.25/Gemfile000066400000000000000000000001451504102461500151470ustar00rootroot00000000000000source "http://rubygems.org" # Specify your gem's dependencies in gpgme.gemspec gemspec gem 'rake' ruby-gpgme-2.0.25/Manifest.txt000066400000000000000000000004031504102461500161600ustar00rootroot00000000000000COPYING COPYING.LESSER Makefile Manifest.txt README Rakefile THANKS examples/edit.rb examples/genkey.rb examples/keylist.rb examples/roundtrip.rb examples/sign.rb examples/verify.rb extconf.rb gpgme_n.c lib/gpgme.rb lib/gpgme/compat.rb lib/gpgme/constants.rb ruby-gpgme-2.0.25/NEWS000066400000000000000000000123331504102461500143550ustar00rootroot000000000000002.0.25 July 26, 2025 - Support GPGME 2.0.0 (#202, #203) - Support deletion of secret keys without confirmation (#193) - Update dependencies (#201, ...) * libgpg-error 1.55 * libassuan 3.0.2 * gpgme 2.0.0 - Build improvements (#195, ...) 2.0.24 January 31, 2024 - Fix --clean option (#178, #179) - Add the ignore_mdc_error flag setter and getter (#180) - Add workaround for building gpgme with musl >= 1.2.4 (#181) - Don't add gem root to LOAD_PATH (#120) 2.0.23 August 16, 2023 - Fix incompatible function pointer types with “gpgme_op_keylist_ext_start” (Clang 16) (#176) - Update dependencies (#174, ...) * libgpg-error 1.47 * libassuan 2.5.6 - Fix rubydoc URL (#169) - Improve checks for pkg-config and fall back to gpgme-config (#168) 2.0.22 November 25, 2022 - Make mini_portile2 less restrictive (#163) - Undefine the alloc Ctx, Data and Key functions for Ruby 3.2 (#158) - Prefer pkg-config over gpgme-config (#166) 2.0.21 October 8, 2022 - Update dependencies (#154) * libgpg-error 1.46 * libassuan 2.5.5 * gpgme to 1.18.0 2.0.20 February 18, 2020 - Update dependencies (Issue#134) * libgpg-error 1.37 * libassuan 2.5.3 * gpgme to 1.13.1 - Set `IO#autoclose = false` on the pass_function `IO` object to avoid GC race conditions * Vicent Martí 2.0.19 October 3, 2019 - Significant test/CI improvements * Sebastian Skałacki * Daiki Ueno - New features * Enable minimal key exports. (#132) * Added GPGME::Key.valid? method (#133) 2.0.18 November 22, 2018 - Broken build fix 2.0.17 November 22, 2018 - Dependency updates to help with Docker/gpgme 1.9 poor performance * gpgme 1.12.0 * assuan 2.5.1 * error 1.32 2.0.16 January 3, 2018 - API change * Expose gpgme_data_set_file_name (Issue#101) 2.0.15 December 19, 2017 - Bug fixes * Nokogiri 1.8.1 compatibility update (Issue#106) 2.0.14 October 30, 2017 - Bug fixes * Fix build issues on Ubuntu by only compiling needed APIs (Issue#93) 2.0.13 July 2, 2017 - API change * Expose gpgme_ctx_get_engine_info and gpgme_ctx_set_engine_info (Issue#83) - Bug fixes * Update included libraries (GPGME 1.9.0, libgpg-error 1.27) * Use HTTPS to retrieve tarballs and check the checksums (Issue#91) * Relax dependency on mini_portile2 (Issue#88) * Fix constructing capabilities value for GPGME::Key (Issue#76) 2.0.12 January 19, 2016 - Bug fixes * Switch to mini_portile2 (Issue#74) 2.0.11 December 15, 2015 - Bug fixes * Fix building with mini_portile > 0.7.0rc* (Issue#67) * Update included libraries (libassuan 2.4.2, libgpg-error 1.21) 2.0.10 August 27, 2015 - Bug fixes * Update included libraries (GPGME 1.6.5, libassuan 2.2.1, libgpg-error 1.20) 2.0.9 July 24, 2015 - Bug fixes * Update included libraries (GPGME 1.5.5, libassuan 2.2.1, libgpg-error 1.19) 2.0.8 December 31, 2014 - API change * New convenience methods: Key#expires? and SubKey#expires? - Bug fixes * Update included libraries (GPGME 1.5.3, libassuan 2.2.0, libgpg-error 1.17) * Signal error if gpgme_op_*_result is called with an invalid state (Issue#57) * Switch to byebug instead of debugger, when building with ruby 2.x * Add NULL check of gpgme_op_decrypt_result_t->file_name (Issue#56) * Relax mini_portile dependency (Issue#52) 2.0.7 September 9, 2014 - API change * Update to GPGME 1.5.1 interface - Bug fixes * Update included libraries (GPGME 1.5.1, libassuan 2.1.2) * Fix build when a static library is available in system's libdir (Issue#50) * Remove rcov support, which is incompatible with ruby 2.x 2.0.6 June 26, 2014 - API change * Update to GPGME 1.5.0 interface - Bug fixes * Update included libraries (GPGME 1.5.0, libgpg-error 1.13) * Depend on newer mini_portile, if available (Issue#44) * Don't refer to missing PINENTRY_MODE_* constants (Issue#39) 2.0.5 March 14, 2014 - Bug fixes * Fix build on Capistrano (Issue#37) 2.0.4 March 13, 2014 - Bug fixes * Fix build with ruby 1.8 2.0.3 March 13, 2014 - API change * Expose gpgme_recipient_t to ruby (Issue#36) - Build enhancement * Support system GPGME libraries (Issue#21) - Bug fixes * Better support for UTF-8 input (Issue#24, Issue#27) * Update included libraries (GPGME 1.4.3, libassuan 2.1.1) * Rework the build stuff using mini_portile * Specify license in gpgme.gemspec * Bump required debugger gem version 2.0.2 March 5, 2013 - Bug fixes * Update included libraries * Fix build when --libdir is specified in config.site * Fix equality check of GPGME::Key and other objects 2.0.1 May 14, 2012 - Bug fixes * Fix linking order of GPG related libraries * Skip some tests when gpg command is not available * Fix signature notation handling * Add GPGME::Data#to_s to retrieve data content without rewinding 2.0.0 October 3, 2011 - Major rework mostly done by Albert Llop * Add test coverage of some type. * Make documentation a little bit more newbie friendly. * Improve the API to be more idiomatic. 1.0.9 May 21, 2010 - Stop using Hoe. 1.0.8 September, 2009 - Follow the ABI changes of GPGME 1.2. * Add bindings for gpgme_op_{export,import}_keys_start. * GPGME.{decrypt,verify,sign,encrypt} now calls gpgme_check_version() before creating a context. Fixes Bug#26829 reported by Sam Hall. - Use Hoe for packaging contributed by Kouhei Sutou. ruby-gpgme-2.0.25/README.rdoc000066400000000000000000000150741504102461500154710ustar00rootroot00000000000000= GPGME This README is better viewed through the YARD formatted documentation: https://www.rubydoc.info/github/ueno/ruby-gpgme for latest github version, or https://www.rubydoc.info/gems/gpgme for latest gem release. {Build Status}[https://github.com/ueno/ruby-gpgme/actions/workflows/test.yml] {Coverage Status}[https://coveralls.io/r/ueno/ruby-gpgme] == Requirements * Ruby 1.8 or later * GPGME 1.1.2 or later * gpg-agent (optional, but recommended) == Installation $ gem install gpgme == API GPGME provides three levels of API. The highest level API is as simple as it gets, the mid level API provides more functionality but might be less user-friendly, and the lowest level API is close to the C interface of GPGME. === The highest level API For example, to create a cleartext signature of the plaintext from stdin and write the result to stdout can be written as follows. crypto = GPGME::Crypto.new crypto.clearsign $stdin, :output => $stdout === The mid level API The same example can be rewritten in the mid level API as follows. plain = GPGME::Data.new($stdin) sig = GPGME::Data.new($stdout) GPGME::Ctx.new do |ctx| ctx.sign(plain, sig, GPGME::SIG_MODE_CLEAR) end === The lowest level API The same example can be rewritten in the lowest level API as follows. ret = [] GPGME::gpgme_new(ret) ctx = ret.shift GPGME::gpgme_data_new_from_fd(ret, 0) plain = ret.shift GPGME::gpgme_data_new_from_fd(ret, 1) sig = ret.shift GPGME::gpgme_op_sign(ctx, plain, sig, GPGME::SIG_MODE_CLEAR) As you see, it's much harder to write a program in this API than the highest level API. However, if you are already familiar with the C interface of GPGME and want to control detailed behavior of GPGME, it might be useful. == Usage All the high level methods attack the mid level GPGME::Ctx API. It is recommended to read through the GPGME::Ctx.new methods for common options. Also, most of the input/output is done via GPGME::Data objects that create a common interface for reading/writing to normal strings, or other common objects like files. Read the GPGME::Data documentation to understand how it works. Every time the lib needs a GPGME::Data object, it will be automatically converted to it. === Crypto The GPGME::Crypto class has the high level convenience methods to encrypt, decrypt, sign and verify signatures. Here are some examples, but it is recommended to read through the GPGME::Crypto class to see all the options. * Document encryption via GPGME::Crypto#encrypt: crypto = GPGME::Crypto.new crypto.encrypt "Hello world!", :recipients => "someone@example.com" * Symmetric encryption: crypto = GPGME::Crypto.new :password => "gpgme" crypto.encrypt "Hello world!", :symmetric => true * Document decryption via GPGME::Crypto#decrypt (including signature verification): crypto.decrypt File.open("text.gpg") * Document signing via GPGME::Crypto#sign. Also the clearsigning and detached signing. crypto.sign "I hereby proclaim Github the beneficiary of all my money when I die" * Sign verification via GPGME::Crypto#verify sign = crypto.sign "Some text" data = crypto.verify(sign) { |signature| signature.valid? } === Key The GPGME::Key object represents a key, and has the high level related methods to work with them and find them, export, import, deletetion and creation. * Key listing GPGME::Key.find(:secret, "someone@example.com") # => Returns an array with all the secret keys available in the keychain. # that match "someone@example.com" * Key exporting GPGME::Key.export("someone@example.com") # => Returns a GPGME::Data object with the exported key. key = GPGME::Key.find(:secret, "someone@example.com").first key.export # => Returns a GPGME::Data object with the exported key. * Key importing GPGME::Key.import(File.open("my.key")) * Key validation GPGME::Key.valid?(public_key) # => Returns wheter this key is valid or not * TODO: Key generation === Engine Provides three convenience methods to obtain information about the gpg engine one is currently using. For example: * Getting current information GPGME::Engine.info.first # => # * Changing home directory to work with different settings: GPGME::Engine.home_dir = '/tmp' === Round trip example using keychain keys Rather than importing the keys it's possible to specify the recipient when performing crypto functions. Here's a roundtrip example, and note that as this is for a console, the conf.echo = false line is to stop IRB complaining when echoing binary data # Stop IRB echoing everything, which errors with binary data. # Not required for production code conf.echo = false class PassphraseCallback def initialize(passphrase) @passphrase = passphrase end def call(*args) fd = args.last io = IO.for_fd(fd, 'w') io.puts(@passphrase) io.flush end end # recipients can be found using $ gpg --list-keys --homedir ./keychain_location # pub 2048R/A1B2C3D4 2014-01-17 # Use that line to substitute your own. 2048R is the key length and type (RSA in this case) # If you want to substitute a non-default keychain into the engine do this: # home_dir = Rails.root.join('keychain_location').to_s # GPGME::Engine.set_info(GPGME::PROTOCOL_OpenPGP, '/usr/local/bin/gpg', home_dir) # Note GPG executable location will change across platforms crypto = GPGME::Crypto.new options = {:recipients => 'A1B2C3D4'} plaintext = GPGME::Data.new(File.open(Rails.root.join('Gemfile'))) data = crypto.encrypt plaintext, options f = File.open(Rails.root.join('Gemfile.gpg'), 'wb') bytes_written = f.write(data) f.close puts bytes_written crypto = GPGME::Crypto.new options = {:recipients => 'A1B2C3D4', :passphrase_callback => PassphraseCallback.new('my_passphrase')} cipthertext = GPGME::Data.new(File.open(Rails.root.join('Gemfile.gpg'))) data = crypto.decrypt cipthertext, options puts data == Contributing To run the local test suite you need bundler and gpg: bundle rake compile # simple rake task to compile the extension rake # runs the test suite == License The library itself is licensed under LGPLv2.1+. See the file COPYING.LESSER and each file for copyright and warranty information. ruby-gpgme-2.0.25/Rakefile000066400000000000000000000010411504102461500153150ustar00rootroot00000000000000require 'bundler' Bundler::GemHelper.install_tasks require 'rake/testtask' require 'yard' desc "Re-compile the extensions" task :compile do FileUtils.rm_rf('tmp') if File.directory?('tmp') mkdir 'tmp' Dir.chdir('tmp') do system "ruby #{File.dirname(__FILE__)}/ext/gpgme/extconf.rb" system "make" end end task :default => [:test] Rake::TestTask.new(:test => :compile) do |t| t.libs << 'test' t.pattern = "test/**/*_test.rb" t.verbose = true end Rake::Task['test'].comment = "Run all tests" YARD::Rake::YardocTask.new ruby-gpgme-2.0.25/THANKS000066400000000000000000000005621504102461500145720ustar00rootroot00000000000000Ruby-GPGME was originally written by Daiki Ueno. Other people contributed by reporting problems, suggesting various improvements or submitting actual code. Here is a list of those people. Help us keep it complete and free of errors. Ben Burkert Carl Corliss Jérémie Pierson Kouhei Sutou Kris Nuttycombe Marc Dequènes Peter Meier Rob Pitt Rory McKinley Sam Hall ruby-gpgme-2.0.25/examples/000077500000000000000000000000001504102461500154725ustar00rootroot00000000000000ruby-gpgme-2.0.25/examples/edit.rb000077500000000000000000000035171504102461500167550ustar00rootroot00000000000000#!/usr/bin/env ruby require 'gpgme' # If you do not have gpg-agent installed, comment out the following # and set it as :passphrase_callback. # # def passfunc(hook, uid_hint, passphrase_info, prev_was_bad, fd) # $stderr.write("Passphrase for #{uid_hint}: ") # $stderr.flush # begin # system('stty -echo') # io = IO.for_fd(fd, 'w') # io.puts(gets) # io.flush # ensure # (0 ... $_.length).each do |i| $_[i] = ?0 end if $_ # system('stty echo') # end # $stderr.puts # end unless ENV['GPG_AGENT_INFO'] $stderr.puts("gpg-agent is not running. See the comment in #{$0}.") exit(1) end unless ENV['GNUPGHOME'] $stderr.write('As GNUPGHOME is not set, the generated key pair will be stored into *your* keyring. Really proceed? (y/N) ') $stderr.flush exit(1) unless gets.chomp == 'y' end unless ARGV.length == 1 $stderr.puts("Usage: #{$0} KEYGRIP") exit(1) end def progfunc(hook, what, type, current, total) $stderr.write("#{what}: #{current}/#{total}\r") $stderr.flush end def editfunc(hook, status, args, fd) case status when GPGME::GPGME_STATUS_GET_BOOL begin $stderr.write("#{args} (y/n) ") $stderr.flush line = gets end until line =~ /\A\s*[ny]\s*\z/ io = IO.for_fd(fd) io.puts(line.strip) io.flush when GPGME::GPGME_STATUS_GET_LINE, GPGME::GPGME_STATUS_GET_HIDDEN $stderr.write("#{args}: ") $stderr.flush line = gets io = IO.for_fd(fd) io.puts(line) io.flush else $stderr.puts([status, args].inspect) end end ctx = GPGME::Ctx.new({:progress_callback => method(:progfunc), # :passphrase_callback => method(:passfunc) }) keystr = ARGV.shift keys = ctx.keys(keystr) if keys.empty? $stderr.puts("Can't find key for \"#{keystr}\"") exit(1) end $stderr.puts(keys.first.inspect) ctx.edit_key(keys.first, method(:editfunc)) ruby-gpgme-2.0.25/examples/genkey.rb000077500000000000000000000025141504102461500173060ustar00rootroot00000000000000#!/usr/bin/env ruby require 'gpgme' # If you do not have gpg-agent installed, comment out the following # and set it as :passphrase_callback. # # def passfunc(hook, uid_hint, passphrase_info, prev_was_bad, fd) # $stderr.write("Passphrase for #{uid_hint}: ") # $stderr.flush # begin # system('stty -echo') # io = IO.for_fd(fd, 'w') # io.puts(gets) # io.flush # ensure # (0 ... $_.length).each do |i| $_[i] = ?0 end if $_ # system('stty echo') # end # $stderr.puts # end unless ENV['GPG_AGENT_INFO'] $stderr.puts("gpg-agent is not running. See the comment in #{$0}.") exit(1) end unless ENV['GNUPGHOME'] $stderr.write('As GNUPGHOME is not set, the generated key pair will be stored into *your* keyring. Really proceed? (y/N) ') $stderr.flush exit(1) unless gets.chomp == 'y' end def progfunc(hook, what, type, current, total) $stderr.write("#{what}: #{current}/#{total}\r") $stderr.flush end ctx = GPGME::Ctx.new({:progress_callback => method(:progfunc), # :passphrase_callback => method(:passfunc) }) ctx.genkey(<<'EOF', nil, nil) Key-Type: DSA Key-Length: 1024 Subkey-Type: ELG-E Subkey-Length: 1024 Name-Real: Joe Tester Name-Comment: with stupid passphrase Name-Email: joe@foo.bar Expire-Date: 0 Passphrase: abc EOF $stderr.puts ruby-gpgme-2.0.25/examples/keylist.rb000077500000000000000000000001541504102461500175060ustar00rootroot00000000000000#!/usr/bin/env ruby require 'gpgme' ctx = GPGME::Ctx.new ctx.each_key(ARGV.shift) do |key| puts(key) end ruby-gpgme-2.0.25/examples/roundtrip.rb000077500000000000000000000020601504102461500200460ustar00rootroot00000000000000#!/usr/bin/env ruby require 'gpgme' # If you do not have gpg-agent installed, comment out the following # and set it as :passphrase_callback. # # def passfunc(hook, uid_hint, passphrase_info, prev_was_bad, fd) # $stderr.write("Passphrase for #{uid_hint}: ") # $stderr.flush # begin # system('stty -echo') # io = IO.for_fd(fd, 'w') # io.puts(gets) # io.flush # ensure # (0 ... $_.length).each do |i| $_[i] = ?0 end if $_ # system('stty echo') # end # $stderr.puts # end unless ENV['GPG_AGENT_INFO'] $stderr.puts("gpg-agent is not running. See the comment in #{$0}.") exit(1) end plain = 'test test test' puts("Plaintext:\n#{plain}") # Perform symmetric encryption on PLAIN. crypto = GPGME::Crypto.new(:armor => true) cipher = crypto.encrypt(plain, {:symmetric => true, # :passphrase_callback => method(:passfunc) }) str = cipher.read puts("Ciphertext:\n#{str}") cipher = GPGME::Data.new(str) plain = crypto.decrypt(cipher, { # :passphrase_callback => method(:passfunc) }) puts("Plaintext:\n#{plain.read}") ruby-gpgme-2.0.25/examples/sign.rb000077500000000000000000000014711504102461500167650ustar00rootroot00000000000000#!/usr/bin/env ruby require 'gpgme' # If you do not have gpg-agent installed, comment out the following # and set it as :passphrase_callback. # # def passfunc(hook, uid_hint, passphrase_info, prev_was_bad, fd) # $stderr.write("Passphrase for #{uid_hint}: ") # $stderr.flush # begin # system('stty -echo') # io = IO.for_fd(fd, 'w') # io.puts(gets) # io.flush # ensure # (0 ... $_.length).each do |i| $_[i] = ?0 end if $_ # system('stty echo') # end # $stderr.puts # end unless ENV['GPG_AGENT_INFO'] $stderr.puts("gpg-agent is not running. See the comment in #{$0}.") exit(1) end crypto = GPGME::Crypto.new signature = crypto.clearsign('test test test', { # :passphrase_callback => method(:passfunc) }) puts signature.read ruby-gpgme-2.0.25/examples/verify.rb000077500000000000000000000002361504102461500173270ustar00rootroot00000000000000#!/usr/bin/env ruby require 'gpgme' crypto = GPGME::Crypto.new signature = GPGME::Data.new(ARGF.read) crypto.verify(signature) do |sig| puts(sig.to_s) end ruby-gpgme-2.0.25/ext/000077500000000000000000000000001504102461500144545ustar00rootroot00000000000000ruby-gpgme-2.0.25/ext/gpgme/000077500000000000000000000000001504102461500155535ustar00rootroot00000000000000ruby-gpgme-2.0.25/ext/gpgme/extconf.rb000066400000000000000000000165501504102461500175550ustar00rootroot00000000000000require 'mkmf' # Available options: # # --enable-clean (default) # --disable-clean # # This file is largely based on Nokogiri's extconf.rb. ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..', '..')) if arg_config('--clean') require 'pathname' require 'fileutils' root = Pathname(ROOT) pwd = Pathname(Dir.pwd) # Skip if this is a development work tree unless (root + '.git').exist? message "Cleaning files only used during build.\n" # (root + 'tmp') cannot be removed at this stage because # gpgme_n.so is yet to be copied to lib. # clean the ports build directory Pathname.glob(pwd.join('tmp', '*', 'ports')) { |dir| FileUtils.rm_rf(dir, verbose: true) FileUtils.rmdir(dir.parent, parents: true, verbose: true) } # ports installation can be safely removed if statically linked. FileUtils.rm_rf(root + 'ports', verbose: true) end exit end if arg_config('--use-system-libraries', ENV['RUBY_GPGME_USE_SYSTEM_LIBRARIES']) if find_executable('pkg-config') && system('pkg-config gpgme --exists') $CFLAGS += ' ' << `pkg-config --cflags gpgme`.chomp $libs += ' ' << `pkg-config --libs gpgme`.chomp elsif find_executable('gpgme-config') $CFLAGS += ' ' << `gpgme-config --cflags`.chomp $libs += ' ' << `gpgme-config --libs`.chomp else $stderr.puts("pkg-config with gpgme.pc and gpgme-config not found") exit(1) end else message <<-'EOS' ************************************************************************ IMPORTANT! gpgme gem uses locally built versions of required C libraries, namely libgpg-error, libassuan, and gpgme. If this is a concern for you and you want to use the system library instead, abort this installation process and reinstall gpgme gem as follows: gem install gpgme -- --use-system-libraries ************************************************************************ EOS require 'rubygems' require 'mini_portile2' libgpg_error_recipe = MiniPortile.new('libgpg-error', '1.55').tap do |recipe| recipe.target = File.join(ROOT, "ports") recipe.files = [{ :url => "https://www.gnupg.org/ftp/gcrypt/#{recipe.name}/#{recipe.name}-#{recipe.version}.tar.bz2", :sha256 => '95b178148863f07d45df0cea67e880a79b9ef71f5d230baddc0071128516ef78' }] recipe.configure_options = [ '--enable-install-gpg-error-config', '--disable-shared', '--enable-static', '--disable-nls', "CFLAGS=-fPIC #{ENV["CFLAGS"]}", ] checkpoint = "#{recipe.target}/#{recipe.name}-#{recipe.version}-#{recipe.host}.installed" unless File.exist?(checkpoint) recipe.cook FileUtils.touch checkpoint end recipe.activate end libassuan_recipe = MiniPortile.new('libassuan', '3.0.2').tap do |recipe| recipe.target = File.join(ROOT, "ports") recipe.files = [{ :url => "https://www.gnupg.org/ftp/gcrypt/#{recipe.name}/#{recipe.name}-#{recipe.version}.tar.bz2", :sha256 => 'd2931cdad266e633510f9970e1a2f346055e351bb19f9b78912475b8074c36f6' }] recipe.configure_options = [ '--disable-shared', '--enable-static', "--with-gpg-error-prefix=#{libgpg_error_recipe.path}", "CFLAGS=-fPIC #{ENV["CFLAGS"]}", ] checkpoint = "#{recipe.target}/#{recipe.name}-#{recipe.version}-#{recipe.host}.installed" unless File.exist?(checkpoint) recipe.cook FileUtils.touch checkpoint end recipe.activate end pkg_config_paths = [ File.join(libgpg_error_recipe.lib_path, 'pkgconfig'), File.join(libassuan_recipe.lib_path, 'pkgconfig'), ] # Ensure that the locally-built libraries take precedence. gpgme runs # `gpgrt-config libassuan` and could pull in the system libassuan # if PKG_CONFIG_PATH is not set properly. ENV["PKG_CONFIG_PATH"] = [*pkg_config_paths, ENV["PKG_CONFIG_PATH"]].compact.join(File::PATH_SEPARATOR) gpgme_recipe = MiniPortile.new('gpgme', '2.0.0').tap do |recipe| recipe.target = File.join(ROOT, "ports") recipe.files = [{ :url => "https://www.gnupg.org/ftp/gcrypt/#{recipe.name}/#{recipe.name}-#{recipe.version}.tar.bz2", :sha256 => 'ddf161d3c41ff6a3fcbaf4be6c6e305ca4ef1cc3f1ecdfce0c8c2a167c0cc36d' }] recipe.configure_options = [ '--disable-shared', '--enable-static', "--with-gpg-error-prefix=#{libgpg_error_recipe.path}", "--with-libassuan-prefix=#{libassuan_recipe.path}", # GPGME 1.5.0 assumes gpgsm is present if gpgconf is found. # However, on some systems (e.g. Debian), they are splitted into # separate packages. '--disable-gpgconf-test', '--disable-gpg-test', '--disable-gpgsm-test', '--disable-g13-test', # We only need the C API. '--disable-languages', "CFLAGS=-D_LARGEFILE64_SOURCE -fPIC #{ENV["CFLAGS"]}", ] checkpoint = "#{recipe.target}/#{recipe.name}-#{recipe.version}-#{recipe.host}.installed" unless File.exist?(checkpoint) recipe.cook FileUtils.touch checkpoint end recipe.activate end # special treatment to link with static libraries $libs = $libs.shellsplit.tap {|libs| File.join(gpgme_recipe.path, "bin", "gpgme-config").tap {|config| # call config scripts explicit with 'sh' for compat with Windows $CPPFLAGS = `sh #{config} --cflags`.strip << ' ' << $CPPFLAGS `sh #{config} --libs`.strip.shellsplit.each {|arg| case arg when /\A-L(.+)\z/ lpath=$1 # Prioritize ports' directories if lpath.start_with?(ROOT + '/') $LIBPATH = [lpath] | $LIBPATH else $LIBPATH = $LIBPATH | [lpath] end when /\A-l(.+)\z/ # Resolve absolute paths of local static libraries to avoid # linking with system libraries. libname_to_recipe = { 'gpgme' => gpgme_recipe, 'assuan' => libassuan_recipe, 'gpg-error' => libgpg_error_recipe } recipe = libname_to_recipe[$1] if recipe libs.push(File.join(recipe.path, 'lib', "lib#{$1}.#{$LIBEXT}")) else libs.push(arg) end else $LDFLAGS << ' ' << arg.shellescape end } } }.shelljoin message 'checking for linker flags for static linking... ' case when try_link('int main(void) { return 0; }', ['-Wl,-Bstatic', '-lgpgme', '-Wl,-Bdynamic'].shelljoin) message "-Wl,-Bstatic\n" $libs = $libs.shellsplit.map {|arg| case arg when '-lgpgme', '-lassuan', '-lgpg-error' ['-Wl,-Bstatic', arg, '-Wl,-Bdynamic'] else arg end }.flatten.shelljoin else message "NONE\n" end unless have_header 'gpgme.h' abort <<-EOS ************************************************************************ ERROR! Cannot locate 'gpgme.h'. ************************************************************************ EOS end end checking_for('gpgme >= 1.1.3') do if try_run(<<'End') #include #include int main (void) { return gpgme_check_version ("1.1.3") == NULL; } End true else $CFLAGS += ' -DRUBY_GPGME_NEED_WORKAROUND_KEYLIST_NEXT' false end end have_func('gpgme_op_export_keys') create_makefile ('gpgme_n') if enable_config('clean', true) # Do not clean if run in a development work tree. File.open('Makefile', 'a') { |mk| mk.print < /* Define this if you use GPGME 1.1.2 and earlier. https://bugs.g10code.com/gnupg/issue715 */ #ifdef RUBY_GPGME_NEED_WORKAROUND_KEYLIST_NEXT #define CHECK_KEYLIST_IN_PROGRESS(vctx) \ if (rb_iv_get (vctx, "ruby_gpgme_keylist_in_progress") != Qtrue) \ return LONG2NUM(gpgme_error (GPG_ERR_INV_STATE)) #define CHECK_KEYLIST_NOT_IN_PROGRESS(vctx) \ if (rb_iv_get (vctx, "ruby_gpgme_keylist_in_progress") == Qtrue) \ return LONG2NUM(gpgme_error (GPG_ERR_INV_STATE)) #define SET_KEYLIST_IN_PROGRESS(vctx) \ rb_iv_set (vctx, "ruby_gpgme_keylist_in_progress", Qtrue) #define RESET_KEYLIST_IN_PROGRESS(vctx) \ rb_iv_set (vctx, "ruby_gpgme_keylist_in_progress", Qfalse) #else #define CHECK_KEYLIST_IN_PROGRESS(vctx) #define CHECK_KEYLIST_NOT_IN_PROGRESS(vctx) #define SET_KEYLIST_IN_PROGRESS(vctx) #define RESET_KEYLIST_IN_PROGRESS(vctx) #endif /* StringValuePtr is not available in 1.6. */ #ifndef StringValuePtr #define StringValuePtr(str) RSTRING(str)->ptr #endif /* STR2CSTR is obsoleted in 1.8. */ #ifndef StringValueCStr #define StringValueCStr STR2CSTR #endif /* RARRAY_LEN is not available in 1.8. */ #ifndef RARRAY_LEN #define RARRAY_LEN(a) RARRAY(a)->len #endif /* RARRAY_PTR is not available in 1.8. */ #ifndef RARRAY_PTR #define RARRAY_PTR(a) RARRAY(a)->ptr #endif /* RSTRING_LEN is not available in 1.8.5. */ #ifndef RSTRING_LEN #define RSTRING_LEN(a) RSTRING(a)->len #endif #define WRAP_GPGME_DATA(dh) \ Data_Wrap_Struct(cData, 0, gpgme_data_release, dh) /* `gpgme_data_t' is typedef'ed as `struct gpgme_data *'. */ #define UNWRAP_GPGME_DATA(vdh, dh) \ Data_Get_Struct(vdh, struct gpgme_data, dh); #define WRAP_GPGME_CTX(ctx) \ Data_Wrap_Struct(cCtx, 0, gpgme_release, ctx) /* `gpgme_ctx_t' is typedef'ed as `struct gpgme_context *'. */ #define UNWRAP_GPGME_CTX(vctx, ctx) \ Data_Get_Struct(vctx, struct gpgme_context, ctx) #define WRAP_GPGME_KEY(key) \ Data_Wrap_Struct(cKey, 0, gpgme_key_unref, key) /* `gpgme_key_t' is typedef'ed as `struct _gpgme_key *'. */ #define UNWRAP_GPGME_KEY(vkey, key) \ Data_Get_Struct(vkey, struct _gpgme_key, key) #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER < 0x020000 #define WRAP_GPGME_TRUST_ITEM(item) \ Data_Wrap_Struct(cTrustItem, 0, gpgme_trust_item_unref, item) /* `gpgme_trust_item_t' is typedef'ed as `struct _gpgme_trust_item *'. */ #define UNWRAP_GPGME_TRUST_ITEM(vitem, item) \ Data_Get_Struct(vitem, struct _gpgme_trust_item, item) #endif static VALUE cEngineInfo, cCtx, cData, cKey, cSubKey, cUserID, cKeySig, cInvalidKey, cNewSignature, cSignature, cSigNotation, #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER < 0x020000 cTrustItem, #endif cRecipient, cDecryptResult, cVerifyResult, cSignResult, cEncryptResult, cImportStatus, cImportResult; #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER >= 0x010500 static VALUE rb_s_gpgme_get_dirinfo (VALUE dummy, VALUE vwhat) { const char *result = gpgme_get_dirinfo (StringValueCStr(vwhat)); return result ? rb_str_new2 (result) : Qnil; } #endif static VALUE rb_s_gpgme_check_version (VALUE dummy, VALUE vreq) { const char *result = gpgme_check_version (NIL_P(vreq) ? NULL : StringValueCStr(vreq)); return result ? rb_str_new2 (result) : Qnil; } static VALUE rb_s_gpgme_engine_check_version (VALUE dummy, VALUE vproto) { gpgme_error_t err = gpgme_engine_check_version (NUM2INT(vproto)); return LONG2NUM(err); } static VALUE rb_s_gpgme_get_engine_info (VALUE dummy, VALUE rinfo) { gpgme_engine_info_t info; gpgme_error_t err; long idx; err = gpgme_get_engine_info (&info); if (gpgme_err_code(err) == GPG_ERR_NO_ERROR) { for (idx = 0; info; info = info->next, idx++) { VALUE vinfo = rb_class_new_instance (0, NULL, cEngineInfo); rb_iv_set (vinfo, "@protocol", INT2FIX(info->protocol)); if (info->file_name) rb_iv_set (vinfo, "@file_name", rb_str_new2 (info->file_name)); if (info->version) rb_iv_set (vinfo, "@version", rb_str_new2 (info->version)); if (info->req_version) rb_iv_set (vinfo, "@req_version", rb_str_new2 (info->req_version)); if (info->home_dir) rb_iv_set (vinfo, "@home_dir", rb_str_new2 (info->home_dir)); rb_ary_store (rinfo, idx, vinfo); } } return LONG2NUM(err); } static VALUE rb_s_gpgme_set_engine_info (VALUE dummy, VALUE vproto, VALUE vfile_name, VALUE vhome_dir) { gpgme_error_t err = gpgme_set_engine_info (NUM2INT(vproto), NIL_P(vfile_name) ? NULL : StringValueCStr(vfile_name), NIL_P(vhome_dir) ? NULL : StringValueCStr(vhome_dir)); return LONG2NUM(err); } static VALUE rb_s_gpgme_ctx_get_engine_info (VALUE dummy, VALUE vctx, VALUE rinfo) { long idx; gpgme_ctx_t ctx; UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); gpgme_engine_info_t info = gpgme_ctx_get_engine_info (ctx); for (idx = 0; info; info = info->next, idx++) { VALUE vinfo = rb_class_new_instance (0, NULL, cEngineInfo); rb_iv_set (vinfo, "@protocol", INT2FIX(info->protocol)); if (info->file_name) rb_iv_set (vinfo, "@file_name", rb_str_new2 (info->file_name)); if (info->version) rb_iv_set (vinfo, "@version", rb_str_new2 (info->version)); if (info->req_version) rb_iv_set (vinfo, "@req_version", rb_str_new2 (info->req_version)); if (info->home_dir) rb_iv_set (vinfo, "@home_dir", rb_str_new2 (info->home_dir)); rb_ary_store (rinfo, idx, vinfo); } return Qnil; } static VALUE rb_s_gpgme_ctx_set_engine_info (VALUE dummy, VALUE vctx, VALUE vproto, VALUE vfile_name, VALUE vhome_dir) { gpgme_ctx_t ctx; UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); gpgme_error_t err = gpgme_ctx_set_engine_info (ctx, NUM2INT(vproto), NIL_P(vfile_name) ? NULL : StringValueCStr(vfile_name), NIL_P(vhome_dir) ? NULL : StringValueCStr(vhome_dir)); return LONG2NUM(err); } static VALUE rb_s_gpgme_pubkey_algo_name (VALUE dummy, VALUE valgo) { const char *name = gpgme_pubkey_algo_name (NUM2INT(valgo)); if (name) return rb_str_new2 (name); return Qnil; } static VALUE rb_s_gpgme_hash_algo_name (VALUE dummy, VALUE valgo) { const char *name = gpgme_hash_algo_name (NUM2INT(valgo)); if (name) return rb_str_new2 (name); return Qnil; } static VALUE rb_s_gpgme_err_code (VALUE dummy, VALUE verr) { return INT2FIX(gpgme_err_code (NUM2UINT(verr))); } static VALUE rb_s_gpgme_err_source (VALUE dummy, VALUE verr) { return INT2FIX(gpgme_err_source (NUM2UINT(verr))); } static VALUE rb_s_gpgme_strerror (VALUE dummy, VALUE verr) { return rb_str_new2 (gpgme_strerror (NUM2UINT(verr))); } static VALUE rb_s_gpgme_data_new (VALUE dummy, VALUE rdh) { gpgme_data_t dh; gpgme_error_t err = gpgme_data_new (&dh); if (gpgme_err_code(err) == GPG_ERR_NO_ERROR) rb_ary_store (rdh, 0, WRAP_GPGME_DATA(dh)); return LONG2NUM(err); } static VALUE rb_s_gpgme_data_new_from_mem (VALUE dummy, VALUE rdh, VALUE vbuffer, VALUE vsize) { gpgme_data_t dh; VALUE vdh; size_t size = NUM2UINT(vsize); gpgme_error_t err; if ((size_t)RSTRING_LEN(vbuffer) < size) rb_raise (rb_eArgError, "argument out of range"); err = gpgme_data_new_from_mem (&dh, StringValuePtr(vbuffer), size, 1); if (gpgme_err_code(err) == GPG_ERR_NO_ERROR) { vdh = WRAP_GPGME_DATA(dh); rb_ary_store (rdh, 0, vdh); } return LONG2NUM(err); } static VALUE rb_s_gpgme_data_new_from_fd (VALUE dummy, VALUE rdh, VALUE vfd) { gpgme_data_t dh; gpgme_error_t err = gpgme_data_new_from_fd (&dh, NUM2INT(vfd)); if (gpgme_err_code(err) == GPG_ERR_NO_ERROR) rb_ary_store (rdh, 0, WRAP_GPGME_DATA(dh)); return LONG2NUM(err); } static ssize_t read_cb (void *handle, void *buffer, size_t size) { VALUE vcb = (VALUE)handle, vcbs, vhook_value, vbuffer; vcbs = RARRAY_PTR(vcb)[0]; vhook_value = RARRAY_PTR(vcb)[1]; vbuffer = rb_funcall (vcbs, rb_intern ("read"), 2, vhook_value, LONG2NUM(size)); if (NIL_P(vbuffer)) return 0; memcpy (buffer, StringValuePtr(vbuffer), RSTRING_LEN(vbuffer)); return RSTRING_LEN(vbuffer); } static ssize_t write_cb (void *handle, const void *buffer, size_t size) { VALUE vcb = (VALUE)handle, vcbs, vhook_value, vbuffer, vnwrite; vcbs = RARRAY_PTR(vcb)[0]; vhook_value = RARRAY_PTR(vcb)[1]; vbuffer = rb_str_new (buffer, size); vnwrite = rb_funcall (vcbs, rb_intern ("write"), 3, vhook_value, vbuffer, LONG2NUM(size)); return NUM2LONG(vnwrite); } static off_t seek_cb (void *handle, off_t offset, int whence) { VALUE vcb = (VALUE)handle, vcbs, vhook_value, vpos; ID id_seek = rb_intern ("seek"); vcbs = RARRAY_PTR(vcb)[0]; vhook_value = RARRAY_PTR(vcb)[1]; if (rb_respond_to (vcbs, id_seek)) { vpos = rb_funcall (vcbs, id_seek, 3, vhook_value, LONG2NUM(offset), INT2FIX(whence)); return NUM2LONG(vpos); } errno = ENOSYS; return -1; } static struct gpgme_data_cbs cbs = { .read = read_cb, .write = write_cb, .seek = seek_cb, .release = NULL }; static VALUE rb_s_gpgme_data_new_from_cbs (VALUE dummy, VALUE rdh, VALUE vcbs, VALUE vhandle) { gpgme_data_t dh; gpgme_error_t err; VALUE vcbs_handle = rb_ary_new (); rb_ary_push (vcbs_handle, vcbs); rb_ary_push (vcbs_handle, vhandle); err = gpgme_data_new_from_cbs (&dh, &cbs, (void*)vcbs_handle); if (gpgme_err_code(err) == GPG_ERR_NO_ERROR) { VALUE vdh = WRAP_GPGME_DATA(dh); /* Keep a reference to avoid GC. */ rb_iv_set (vdh, "@cbs_handle", vcbs_handle); rb_ary_store (rdh, 0, vdh); } return LONG2NUM(err); } static VALUE rb_s_gpgme_data_read (VALUE dummy, VALUE vdh, VALUE vlength) { gpgme_data_t dh; ssize_t length = NUM2LONG(vlength), nread; void *buffer; VALUE vbuffer = Qnil; UNWRAP_GPGME_DATA(vdh, dh); buffer = ALLOC_N (char, length); nread = gpgme_data_read (dh, buffer, length); if (nread > 0) vbuffer = rb_str_new (buffer, nread); xfree (buffer); if (nread < 0) rb_sys_fail ("rb_s_gpgme_data_read"); return vbuffer; } static VALUE rb_s_gpgme_data_seek (VALUE dummy, VALUE vdh, VALUE voffset, VALUE vwhence) { gpgme_data_t dh; off_t pos; UNWRAP_GPGME_DATA(vdh, dh); pos = gpgme_data_seek (dh, NUM2LONG(voffset), NUM2INT(vwhence)); if (pos < 0) rb_sys_fail ("rb_s_gpgme_data_seek"); return LONG2NUM(pos); } static VALUE rb_s_gpgme_data_write (VALUE dummy, VALUE vdh, VALUE vbuf, VALUE vlen) { gpgme_data_t dh; ssize_t nwrite; UNWRAP_GPGME_DATA(vdh, dh); nwrite = gpgme_data_write (dh, StringValuePtr(vbuf), NUM2UINT(vlen)); if (nwrite < 0) rb_sys_fail ("rb_s_gpgme_data_write"); return LONG2NUM(nwrite); } static VALUE rb_s_gpgme_data_get_encoding (VALUE dummy, VALUE vdh) { gpgme_data_t dh; gpgme_error_t err; UNWRAP_GPGME_DATA(vdh, dh); err = gpgme_data_get_encoding (dh); return LONG2NUM(err); } static VALUE rb_s_gpgme_data_set_encoding (VALUE dummy, VALUE vdh, VALUE venc) { gpgme_data_t dh; gpgme_error_t err; UNWRAP_GPGME_DATA(vdh, dh); err = gpgme_data_set_encoding (dh, NUM2INT(venc)); return LONG2NUM(err); } static VALUE rb_s_gpgme_data_get_file_name (VALUE dummy, VALUE vdh) { gpgme_data_t dh; UNWRAP_GPGME_DATA(vdh, dh); const char *result = gpgme_data_get_file_name (dh); return result ? rb_str_new2 (result) : Qnil; } static VALUE rb_s_gpgme_data_set_file_name (VALUE dummy, VALUE vdh, VALUE vfile_name) { gpgme_data_t dh; gpgme_error_t err; UNWRAP_GPGME_DATA(vdh, dh); err = gpgme_data_set_file_name (dh, NIL_P(vfile_name) ? NULL : StringValueCStr(vfile_name)); return LONG2NUM(err); } static VALUE rb_s_gpgme_new (VALUE dummy, VALUE rctx) { gpgme_ctx_t ctx; gpgme_error_t err = gpgme_new (&ctx); if (gpgme_err_code(err) == GPG_ERR_NO_ERROR) rb_ary_store (rctx, 0, WRAP_GPGME_CTX(ctx)); return LONG2NUM(err); } static VALUE rb_s_gpgme_release (VALUE dummy, VALUE vctx) { gpgme_ctx_t ctx; UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); gpgme_release (ctx); DATA_PTR(vctx) = NULL; return Qnil; } static VALUE rb_s_gpgme_set_ctx_flag (VALUE dummy, VALUE vctx, VALUE vname, VALUE vstr) { gpgme_ctx_t ctx; gpgme_error_t err; char* name; char* str; name = StringValueCStr(vname); str = StringValueCStr(vstr); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); err = gpgme_set_ctx_flag(ctx, name, str); return LONG2NUM(err); } static VALUE rb_s_gpgme_get_ctx_flag (VALUE dummy, VALUE vctx, VALUE vname) { gpgme_ctx_t ctx; const char* name; name = StringValueCStr(vname); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); const char* result; result = gpgme_get_ctx_flag(ctx, name); if (result == NULL) rb_raise (rb_eArgError, "incorrect ctx flag name"); return rb_str_new_cstr(result); } static VALUE rb_s_gpgme_set_protocol (VALUE dummy, VALUE vctx, VALUE vproto) { gpgme_ctx_t ctx; gpgme_error_t err; UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); err = gpgme_set_protocol (ctx, NUM2INT(vproto)); return LONG2NUM(err); } static VALUE rb_s_gpgme_get_protocol (VALUE dummy, VALUE vctx) { gpgme_ctx_t ctx; gpgme_protocol_t proto; UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); proto = gpgme_get_protocol (ctx); return INT2FIX(proto); } static VALUE rb_s_gpgme_set_armor (VALUE dummy, VALUE vctx, VALUE vyes) { gpgme_ctx_t ctx; UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); gpgme_set_armor (ctx, NUM2INT(vyes)); return Qnil; } static VALUE rb_s_gpgme_get_armor (VALUE dummy, VALUE vctx) { gpgme_ctx_t ctx; int yes; UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); yes = gpgme_get_armor (ctx); return INT2FIX(yes); } static VALUE rb_s_gpgme_set_ignore_mdc_error (VALUE dummy, VALUE vctx, VALUE vyes) { gpgme_ctx_t ctx; gpgme_error_t err; int yes; yes = NUM2INT(vyes); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); err = gpgme_set_ctx_flag(ctx, "ignore-mdc-error", yes ? "1" : ""); return LONG2NUM(err); } static VALUE rb_s_gpgme_get_ignore_mdc_error (VALUE dummy, VALUE vctx) { gpgme_ctx_t ctx; int yes; UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); const char* result; result = gpgme_get_ctx_flag(ctx, "ignore-mdc-error"); if (result == NULL) rb_raise (rb_eArgError, "incorrect ctx flag name"); yes = (result && *result)? !!atoi (result) : 0; return INT2FIX(yes); } static VALUE rb_s_gpgme_set_textmode (VALUE dummy, VALUE vctx, VALUE vyes) { gpgme_ctx_t ctx; UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); gpgme_set_textmode (ctx, NUM2INT(vyes)); return Qnil; } static VALUE rb_s_gpgme_get_textmode (VALUE dummy, VALUE vctx) { gpgme_ctx_t ctx; int yes; UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); yes = gpgme_get_textmode (ctx); return INT2FIX(yes); } static VALUE rb_s_gpgme_set_include_certs (VALUE dummy, VALUE vctx, VALUE vnr_of_certs) { gpgme_ctx_t ctx; UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); gpgme_set_include_certs (ctx, NUM2INT(vnr_of_certs)); return Qnil; } static VALUE rb_s_gpgme_get_include_certs (VALUE dummy, VALUE vctx) { gpgme_ctx_t ctx; gpgme_error_t err; UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); err = gpgme_get_include_certs (ctx); return LONG2NUM(err); } static VALUE rb_s_gpgme_set_keylist_mode (VALUE dummy, VALUE vctx, VALUE vmode) { gpgme_ctx_t ctx; gpgme_error_t err; UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); err = gpgme_set_keylist_mode (ctx, NUM2INT(vmode)); return LONG2NUM(err); } static VALUE rb_s_gpgme_get_keylist_mode (VALUE dummy, VALUE vctx) { gpgme_ctx_t ctx; int mode; UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); mode = gpgme_get_keylist_mode (ctx); return INT2FIX(mode); } static gpgme_error_t passphrase_cb (void *hook, const char *uid_hint, const char *passphrase_info, int prev_was_bad, int fd) { VALUE vcb = (VALUE)hook, vpassfunc, vhook_value; vpassfunc = RARRAY_PTR(vcb)[0]; vhook_value = RARRAY_PTR(vcb)[1]; rb_funcall (vpassfunc, rb_intern ("call"), 5, vhook_value, uid_hint ? rb_str_new2 (uid_hint) : Qnil, passphrase_info ? rb_str_new2 (passphrase_info) : Qnil, INT2FIX(prev_was_bad), INT2NUM(fd)); return gpgme_err_make (GPG_ERR_SOURCE_USER_1, GPG_ERR_NO_ERROR); } static VALUE rb_s_gpgme_set_passphrase_cb (VALUE dummy, VALUE vctx, VALUE vpassfunc, VALUE vhook_value) { gpgme_ctx_t ctx; VALUE vcb = rb_ary_new (); rb_ary_push (vcb, vpassfunc); rb_ary_push (vcb, vhook_value); /* Keep a reference to avoid GC. */ rb_iv_set (vctx, "@passphrase_cb", vcb); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); gpgme_set_passphrase_cb (ctx, passphrase_cb, (void*)vcb); return Qnil; } static VALUE rb_s_gpgme_get_passphrase_cb (VALUE dummy, VALUE vctx, VALUE rpassfunc, VALUE rhook_value) { VALUE vcb = rb_iv_get (vctx, "@passphrase_cb"); /* No need to call gpgme_get_passphrase_cb. */ rb_ary_store (rpassfunc, 0, RARRAY_PTR(vcb)[0]); rb_ary_store (rhook_value, 0, RARRAY_PTR(vcb)[1]); return Qnil; } #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER >= 0x010600 static gpgme_error_t status_cb (void *hook, const char *keyword, const char *args) { VALUE vcb = (VALUE)hook, vstatusfunc, vhook_value; vstatusfunc = RARRAY_PTR(vcb)[0]; vhook_value = RARRAY_PTR(vcb)[1]; rb_funcall (vstatusfunc, rb_intern ("call"), 3, vhook_value, keyword ? rb_str_new2 (keyword) : Qnil, args ? rb_str_new2 (args) : Qnil); return gpgme_err_make (GPG_ERR_SOURCE_USER_1, GPG_ERR_NO_ERROR); } static VALUE rb_s_gpgme_set_status_cb (VALUE dummy, VALUE vctx, VALUE vstatusfunc, VALUE vhook_value) { gpgme_ctx_t ctx; VALUE vcb = rb_ary_new (); rb_ary_push (vcb, vstatusfunc); rb_ary_push (vcb, vhook_value); /* Keep a reference to avoid GC. */ rb_iv_set (vctx, "@status_cb", vcb); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); gpgme_set_status_cb (ctx, status_cb, (void*)vcb); return Qnil; } static VALUE rb_s_gpgme_get_status_cb (VALUE dummy, VALUE vctx, VALUE rstatusfunc, VALUE rhook_value) { VALUE vcb = rb_iv_get (vctx, "@status_cb"); /* No need to call gpgme_get_status_cb. */ rb_ary_store (rstatusfunc, 0, RARRAY_PTR(vcb)[0]); rb_ary_store (rhook_value, 0, RARRAY_PTR(vcb)[1]); return Qnil; } #endif static void progress_cb (void *hook, const char *what, int type, int current, int total) { VALUE vcb = (VALUE)hook, vprogfunc, vhook_value; vprogfunc = RARRAY_PTR(vcb)[0]; vhook_value = RARRAY_PTR(vcb)[1]; rb_funcall (vprogfunc, rb_intern ("call"), 5, vhook_value, rb_str_new2 (what), INT2NUM(type), INT2NUM(current), INT2NUM(total)); } static VALUE rb_s_gpgme_set_progress_cb (VALUE dummy, VALUE vctx, VALUE vprogfunc, VALUE vhook_value) { gpgme_ctx_t ctx; VALUE vcb = rb_ary_new (); rb_ary_push (vcb, vprogfunc); rb_ary_push (vcb, vhook_value); /* Keep a reference to avoid GC. */ rb_iv_set (vctx, "@progress_cb", vcb); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); gpgme_set_progress_cb (ctx, progress_cb, (void*)vcb); return Qnil; } static VALUE rb_s_gpgme_get_progress_cb (VALUE dummy, VALUE vctx, VALUE rprogfunc, VALUE rhook_value) { VALUE vcb = rb_iv_get (vctx, "@progress_cb"); rb_ary_store (rprogfunc, 0, RARRAY_PTR(vcb)[0]); rb_ary_store (rhook_value, 0, RARRAY_PTR(vcb)[1]); return Qnil; } static VALUE rb_s_gpgme_set_locale (VALUE dummy, VALUE vctx, VALUE vcategory, VALUE vvalue) { gpgme_ctx_t ctx; gpgme_error_t err; UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); err = gpgme_set_locale (ctx, NUM2INT(vcategory), StringValueCStr(vvalue)); return LONG2NUM(err); } #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER >= 0x010400 static VALUE rb_s_gpgme_set_pinentry_mode (VALUE dummy, VALUE vctx, VALUE vmode) { gpgme_ctx_t ctx; gpgme_error_t err; UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); err = gpgme_set_pinentry_mode (ctx, NUM2INT(vmode)); return LONG2NUM(err); } static VALUE rb_s_gpgme_get_pinentry_mode (VALUE dummy, VALUE vctx) { gpgme_ctx_t ctx; gpgme_pinentry_mode_t mode; UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); mode = gpgme_get_pinentry_mode (ctx); return INT2FIX(mode); } #endif #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER >= 0x010600 static VALUE rb_s_gpgme_set_offline (VALUE dummy, VALUE vctx, VALUE vyes) { gpgme_ctx_t ctx; UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); gpgme_set_offline (ctx, vyes == Qtrue); return Qnil; } static VALUE rb_s_gpgme_get_offline (VALUE dummy, VALUE vctx) { gpgme_ctx_t ctx; int yes; UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); yes = gpgme_get_offline (ctx); return yes ? Qtrue : Qfalse; } #endif static VALUE rb_s_gpgme_op_keylist_start (VALUE dummy, VALUE vctx, VALUE vpattern, VALUE vsecret_only) { gpgme_ctx_t ctx; gpgme_error_t err; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); err = gpgme_op_keylist_start (ctx, NIL_P(vpattern) ? NULL : StringValueCStr(vpattern), NUM2INT(vsecret_only)); if (gpgme_err_code (err) == GPG_ERR_NO_ERROR) SET_KEYLIST_IN_PROGRESS(vctx); return LONG2NUM(err); } // https://github.com/rwinlib/gpgme/blob/v1.16.0/include/gpgme.h#L2013-L2015 static VALUE rb_s_gpgme_op_keylist_ext_start (VALUE dummy, VALUE vctx, VALUE vpattern, VALUE vsecret_only) { gpgme_ctx_t ctx; const char **pattern = NULL; int i, err; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); if (!NIL_P(vpattern)) { /* Convert RARRAY into `const char *' array. */ pattern = ALLOC_N(const char *, RARRAY_LEN(vpattern) + 1); for (i = 0; ikeylist_mode)); rb_iv_set (vkey, "@revoked", INT2FIX(key->revoked)); rb_iv_set (vkey, "@expired", INT2FIX(key->expired)); rb_iv_set (vkey, "@disabled", INT2FIX(key->disabled)); rb_iv_set (vkey, "@invalid", INT2FIX(key->invalid)); rb_iv_set (vkey, "@can_encrypt", INT2FIX(key->can_encrypt)); rb_iv_set (vkey, "@can_sign", INT2FIX(key->can_sign)); rb_iv_set (vkey, "@can_certify", INT2FIX(key->can_certify)); rb_iv_set (vkey, "@can_authenticate", INT2FIX(key->can_authenticate)); rb_iv_set (vkey, "@secret", INT2FIX(key->secret)); rb_iv_set (vkey, "@protocol", INT2FIX(key->protocol)); if (key->issuer_serial) rb_iv_set (vkey, "@issuer_serial", rb_str_new2 (key->issuer_serial)); if (key->issuer_name) rb_iv_set (vkey, "@issuer_name", utf8_str_new (key->issuer_name)); if (key->chain_id) rb_iv_set (vkey, "@chain_id", rb_str_new2 (key->chain_id)); rb_iv_set (vkey, "@owner_trust", INT2FIX(key->owner_trust)); vsubkeys = rb_ary_new (); rb_iv_set (vkey, "@subkeys", vsubkeys); for (subkey = key->subkeys; subkey; subkey = subkey->next) { VALUE vsubkey = rb_class_new_instance(0, NULL, cSubKey); rb_iv_set (vsubkey, "@revoked", INT2FIX(subkey->revoked)); rb_iv_set (vsubkey, "@expired", INT2FIX(subkey->expired)); rb_iv_set (vsubkey, "@disabled", INT2FIX(subkey->disabled)); rb_iv_set (vsubkey, "@invalid", INT2FIX(subkey->invalid)); rb_iv_set (vsubkey, "@can_encrypt", INT2FIX(subkey->can_encrypt)); rb_iv_set (vsubkey, "@can_sign", INT2FIX(subkey->can_sign)); rb_iv_set (vsubkey, "@can_certify", INT2FIX(subkey->can_certify)); rb_iv_set (vsubkey, "@can_authenticate", INT2FIX(subkey->can_authenticate)); rb_iv_set (vsubkey, "@secret", INT2FIX(subkey->secret)); rb_iv_set (vsubkey, "@pubkey_algo", INT2FIX(subkey->pubkey_algo)); rb_iv_set (vsubkey, "@length", UINT2NUM(subkey->length)); rb_iv_set (vsubkey, "@keyid", rb_str_new2 (subkey->keyid)); if (subkey->fpr) rb_iv_set (vsubkey, "@fpr", rb_str_new2 (subkey->fpr)); #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER >= 0x020000 rb_iv_set (vsubkey, "@timestamp", ULONG2NUM(subkey->timestamp)); rb_iv_set (vsubkey, "@expires", ULONG2NUM(subkey->expires)); #else rb_iv_set (vsubkey, "@timestamp", LONG2NUM(subkey->timestamp)); rb_iv_set (vsubkey, "@expires", LONG2NUM(subkey->expires)); #endif #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER >= 0x010500 if (subkey->curve) rb_iv_set (vsubkey, "@curve", rb_str_new2 (subkey->curve)); #endif #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER >= 0x020000 rb_iv_set (vsubkey, "@subkey_match", INT2FIX(subkey->subkey_match)); #endif rb_ary_push (vsubkeys, vsubkey); } vuids = rb_ary_new (); rb_iv_set (vkey, "@uids", vuids); for (user_id = key->uids; user_id; user_id = user_id->next) { VALUE vuser_id, vsignatures; gpgme_key_sig_t key_sig; vuser_id = rb_class_new_instance(0, NULL, cUserID); rb_iv_set (vuser_id, "@revoked", INT2FIX(user_id->revoked)); rb_iv_set (vuser_id, "@invalid", INT2FIX(user_id->invalid)); rb_iv_set (vuser_id, "@validity", INT2FIX(user_id->validity)); rb_iv_set (vuser_id, "@name", utf8_str_new (user_id->name)); rb_iv_set (vuser_id, "@uid", utf8_str_new (user_id->uid)); rb_iv_set (vuser_id, "@comment", utf8_str_new (user_id->comment)); rb_iv_set (vuser_id, "@email", utf8_str_new (user_id->email)); vsignatures = rb_ary_new (); rb_iv_set (vuser_id, "@signatures", vsignatures); for (key_sig = user_id->signatures; key_sig; key_sig = key_sig->next) { VALUE vkey_sig = rb_class_new_instance(0, NULL, cKeySig); rb_iv_set (vkey_sig, "@revoked", INT2FIX(key_sig->revoked)); rb_iv_set (vkey_sig, "@expired", INT2FIX(key_sig->expired)); rb_iv_set (vkey_sig, "@invalid", INT2FIX(key_sig->invalid)); rb_iv_set (vkey_sig, "@exportable", INT2FIX(key_sig->exportable)); rb_iv_set (vkey_sig, "@pubkey_algo", INT2FIX(key_sig->pubkey_algo)); rb_iv_set (vkey_sig, "@keyid", rb_str_new2 (key_sig->keyid)); #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER >= 0x020000 rb_iv_set (vkey_sig, "@timestamp", ULONG2NUM(key_sig->timestamp)); rb_iv_set (vkey_sig, "@expires", ULONG2NUM(key_sig->expires)); #else rb_iv_set (vkey_sig, "@timestamp", LONG2NUM(key_sig->timestamp)); rb_iv_set (vkey_sig, "@expires", LONG2NUM(key_sig->expires)); #endif rb_ary_push (vsignatures, vkey_sig); } rb_ary_push (vuids, vuser_id); } return vkey; } static VALUE rb_s_gpgme_op_keylist_next (VALUE dummy, VALUE vctx, VALUE rkey) { gpgme_ctx_t ctx; gpgme_key_t key; gpgme_error_t err; CHECK_KEYLIST_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); err = gpgme_op_keylist_next (ctx, &key); if (gpgme_err_code(err) == GPG_ERR_NO_ERROR) { VALUE vkey = WRAP_GPGME_KEY(key); save_gpgme_key_attrs (vkey, key); rb_ary_store (rkey, 0, vkey); } return LONG2NUM(err); } static VALUE rb_s_gpgme_op_keylist_end (VALUE dummy, VALUE vctx) { gpgme_ctx_t ctx; gpgme_error_t err; CHECK_KEYLIST_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); err = gpgme_op_keylist_end (ctx); RESET_KEYLIST_IN_PROGRESS(vctx); return LONG2NUM(err); } static VALUE rb_s_gpgme_get_key (VALUE dummy, VALUE vctx, VALUE vfpr, VALUE rkey, VALUE vsecret) { gpgme_ctx_t ctx; gpgme_error_t err; gpgme_key_t key; UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); err = gpgme_get_key (ctx, StringValueCStr(vfpr), &key, NUM2INT(vsecret)); if (gpgme_err_code(err) == GPG_ERR_NO_ERROR) { VALUE vkey = WRAP_GPGME_KEY(key); save_gpgme_key_attrs (vkey, key); rb_ary_store (rkey, 0, vkey); } return LONG2NUM(err); } static VALUE rb_s_gpgme_op_genkey (VALUE dummy, VALUE vctx, VALUE vparms, VALUE vpubkey, VALUE vseckey) { gpgme_ctx_t ctx; gpgme_data_t pubkey = NULL, seckey = NULL; gpgme_error_t err; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); if (!NIL_P(vpubkey)) UNWRAP_GPGME_DATA(vpubkey, pubkey); if (!NIL_P(vseckey)) UNWRAP_GPGME_DATA(vseckey, seckey); err = gpgme_op_genkey (ctx, StringValueCStr(vparms), pubkey, seckey); return LONG2NUM(err); } static VALUE rb_s_gpgme_op_genkey_start (VALUE dummy, VALUE vctx, VALUE vparms, VALUE vpubkey, VALUE vseckey) { gpgme_ctx_t ctx; gpgme_data_t pubkey = NULL, seckey = NULL; gpgme_error_t err; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); if (!NIL_P(vpubkey)) UNWRAP_GPGME_DATA(vpubkey, pubkey); if (!NIL_P(vseckey)) UNWRAP_GPGME_DATA(vseckey, seckey); err = gpgme_op_genkey_start (ctx, StringValueCStr(vparms), pubkey, seckey); return LONG2NUM(err); } static VALUE rb_s_gpgme_op_export (VALUE dummy, VALUE vctx, VALUE vpattern, VALUE vmode, VALUE vkeydata) { gpgme_ctx_t ctx; gpgme_data_t keydata; gpgme_error_t err; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); UNWRAP_GPGME_DATA(vkeydata, keydata); err = gpgme_op_export (ctx, StringValueCStr(vpattern), NUM2UINT(vmode), keydata); return LONG2NUM(err); } static VALUE rb_s_gpgme_op_export_start (VALUE dummy, VALUE vctx, VALUE vpattern, VALUE vmode, VALUE vkeydata) { gpgme_ctx_t ctx; gpgme_data_t keydata; gpgme_error_t err; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); UNWRAP_GPGME_DATA(vkeydata, keydata); err = gpgme_op_export_start (ctx, StringValueCStr(vpattern), NUM2UINT(vmode), keydata); return LONG2NUM(err); } static VALUE rb_s_gpgme_op_export_ext (VALUE dummy, VALUE vctx, VALUE vpattern, VALUE vmode, VALUE vkeydata) { gpgme_ctx_t ctx; gpgme_data_t keydata; gpgme_error_t err; const char **pattern; int i; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); pattern = ALLOC_N(const char *, RARRAY_LEN(vpattern)); for (i = 0; i < RARRAY_LEN(vpattern); i++) pattern[i] = StringValueCStr(RARRAY_PTR(vpattern)[i]); UNWRAP_GPGME_DATA(vkeydata, keydata); err = gpgme_op_export_ext (ctx, pattern, NUM2UINT(vmode), keydata); return LONG2NUM(err); } static VALUE rb_s_gpgme_op_export_ext_start (VALUE dummy, VALUE vctx, VALUE vpattern, VALUE vmode, VALUE vkeydata) { gpgme_ctx_t ctx; gpgme_data_t keydata; gpgme_error_t err; const char **pattern; int i; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); pattern = ALLOC_N(const char *, RARRAY_LEN(vpattern)); for (i = 0; i < RARRAY_LEN(vpattern); i++) pattern[i] = StringValueCStr(RARRAY_PTR(vpattern)[i]); UNWRAP_GPGME_DATA(vkeydata, keydata); err = gpgme_op_export_ext_start (ctx, pattern, NUM2UINT(vmode), keydata); return LONG2NUM(err); } #ifdef HAVE_GPGME_OP_EXPORT_KEYS static VALUE rb_s_gpgme_op_export_keys (VALUE dummy, VALUE vctx, VALUE vkeys, VALUE vmode, VALUE vkeydata) { gpgme_ctx_t ctx; gpgme_key_t *keys; gpgme_data_t keydata; gpgme_error_t err; int i; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); keys = ALLOC_N(gpgme_key_t, RARRAY_LEN(vkeys) + 1); for (i = 0; i < RARRAY_LEN(vkeys); i++) UNWRAP_GPGME_KEY(RARRAY_PTR(vkeys)[i], keys[i]); UNWRAP_GPGME_DATA(vkeydata, keydata); err = gpgme_op_export_keys (ctx, keys, NUM2UINT(vmode), keydata); return LONG2NUM(err); } static VALUE rb_s_gpgme_op_export_keys_start (VALUE dummy, VALUE vctx, VALUE vkeys, VALUE vmode, VALUE vkeydata) { gpgme_ctx_t ctx; gpgme_key_t *keys; gpgme_data_t keydata; gpgme_error_t err; int i; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); keys = ALLOC_N(gpgme_key_t, RARRAY_LEN(vkeys) + 1); for (i = 0; i < RARRAY_LEN(vkeys); i++) UNWRAP_GPGME_KEY(RARRAY_PTR(vkeys)[i], keys[i]); UNWRAP_GPGME_DATA(vkeydata, keydata); err = gpgme_op_export_keys_start (ctx, keys, NUM2UINT(vmode), keydata); return LONG2NUM(err); } #endif /*HAVE_GPGME_OP_EXPORT_KEYS*/ static VALUE rb_s_gpgme_op_import (VALUE dummy, VALUE vctx, VALUE vkeydata) { gpgme_ctx_t ctx; gpgme_data_t keydata; gpgme_error_t err; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); UNWRAP_GPGME_DATA(vkeydata, keydata); err = gpgme_op_import (ctx, keydata); return LONG2NUM(err); } static VALUE rb_s_gpgme_op_import_start (VALUE dummy, VALUE vctx, VALUE vkeydata) { gpgme_ctx_t ctx; gpgme_data_t keydata; gpgme_error_t err; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); UNWRAP_GPGME_DATA(vkeydata, keydata); err = gpgme_op_import_start (ctx, keydata); return LONG2NUM(err); } #ifdef HAVE_GPGME_OP_EXPORT_KEYS static VALUE rb_s_gpgme_op_import_keys (VALUE dummy, VALUE vctx, VALUE vkeys) { gpgme_ctx_t ctx; gpgme_key_t *keys; gpgme_error_t err; int i; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); keys = ALLOC_N(gpgme_key_t, RARRAY_LEN(vkeys) + 1); for (i = 0; i < RARRAY_LEN(vkeys); i++) UNWRAP_GPGME_KEY(RARRAY_PTR(vkeys)[i], keys[i]); keys[i] = NULL; err = gpgme_op_import_keys (ctx, keys); return LONG2NUM(err); } static VALUE rb_s_gpgme_op_import_keys_start (VALUE dummy, VALUE vctx, VALUE vkeys) { gpgme_ctx_t ctx; gpgme_key_t *keys; gpgme_error_t err; int i; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); keys = ALLOC_N(gpgme_key_t, RARRAY_LEN(vkeys) + 1); for (i = 0; i < RARRAY_LEN(vkeys); i++) UNWRAP_GPGME_KEY(RARRAY_PTR(vkeys)[i], keys[i]); keys[i] = NULL; err = gpgme_op_import_keys_start (ctx, keys); return LONG2NUM(err); } #endif /*HAVE_GPGME_OP_EXPORT_KEYS*/ static VALUE rb_s_gpgme_op_import_result (VALUE dummy, VALUE vctx) { gpgme_ctx_t ctx; gpgme_import_result_t result; gpgme_import_status_t status; VALUE vresult, vimports; UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); result = gpgme_op_import_result (ctx); if (!result) rb_raise (rb_eArgError, "no result"); vresult = rb_class_new_instance (0, NULL, cImportResult); rb_iv_set (vresult, "@considered", INT2NUM(result->considered)); rb_iv_set (vresult, "@no_user_id", INT2NUM(result->no_user_id)); rb_iv_set (vresult, "@imported", INT2NUM(result->imported)); rb_iv_set (vresult, "@imported_rsa", INT2NUM(result->imported_rsa)); rb_iv_set (vresult, "@unchanged", INT2NUM(result->unchanged)); rb_iv_set (vresult, "@new_user_ids", INT2NUM(result->new_user_ids)); rb_iv_set (vresult, "@new_sub_keys", INT2NUM(result->new_sub_keys)); rb_iv_set (vresult, "@new_signatures", INT2NUM(result->new_signatures)); rb_iv_set (vresult, "@new_revocations", INT2NUM(result->new_revocations)); rb_iv_set (vresult, "@secret_read", INT2NUM(result->secret_read)); rb_iv_set (vresult, "@secret_imported", INT2NUM(result->secret_imported)); rb_iv_set (vresult, "@secret_unchanged", INT2NUM(result->secret_unchanged)); rb_iv_set (vresult, "@not_imported", INT2NUM(result->not_imported)); vimports = rb_ary_new (); rb_iv_set (vresult, "@imports", vimports); for (status = result->imports; status; status = status->next) { VALUE vstatus = rb_class_new_instance (0, NULL, cImportStatus); rb_iv_set (vstatus, "@fpr", rb_str_new2 (status->fpr)); rb_iv_set (vstatus, "@result", LONG2NUM(status->result)); rb_iv_set (vstatus, "@status", UINT2NUM(status->status)); rb_ary_push (vimports, vstatus); } return vresult; } static VALUE rb_s_gpgme_op_delete (VALUE dummy, VALUE vctx, VALUE vkey, VALUE vallow_secret) { gpgme_ctx_t ctx; gpgme_key_t key; gpgme_error_t err; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); UNWRAP_GPGME_KEY(vkey, key); err = gpgme_op_delete (ctx, key, NUM2INT(vallow_secret)); return LONG2NUM(err); } /* This method was added in 1.9.1. */ #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER >= 0x010901 static VALUE rb_s_gpgme_op_delete_ext (VALUE dummy, VALUE vctx, VALUE vkey, VALUE vflags) { gpgme_ctx_t ctx; gpgme_key_t key; gpgme_error_t err; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); UNWRAP_GPGME_KEY(vkey, key); err = gpgme_op_delete_ext (ctx, key, NUM2INT(vflags)); return LONG2NUM(err); } #endif static VALUE rb_s_gpgme_op_delete_start (VALUE dummy, VALUE vctx, VALUE vkey, VALUE vallow_secret) { gpgme_ctx_t ctx; gpgme_key_t key; gpgme_error_t err; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); UNWRAP_GPGME_KEY(vkey, key); err = gpgme_op_delete_start (ctx, key, NUM2INT(vallow_secret)); return LONG2NUM(err); } static gpgme_error_t edit_cb (void *hook, gpgme_status_code_t status, const char *args, int fd) { VALUE vcb = (VALUE)hook, veditfunc, vhook_value; veditfunc = RARRAY_PTR(vcb)[0]; vhook_value = RARRAY_PTR(vcb)[1]; rb_funcall (veditfunc, rb_intern ("call"), 4, vhook_value, INT2FIX(status), rb_str_new2 (args), INT2NUM(fd)); return gpgme_err_make (GPG_ERR_SOURCE_USER_1, GPG_ERR_NO_ERROR); } static VALUE rb_s_gpgme_op_edit (VALUE dummy, VALUE vctx, VALUE vkey, VALUE veditfunc, VALUE vhook_value, VALUE vout) { gpgme_ctx_t ctx; gpgme_key_t key; gpgme_data_t out = NULL; VALUE vcb; gpgme_error_t err; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); UNWRAP_GPGME_KEY(vkey, key); if (!NIL_P(vout)) UNWRAP_GPGME_DATA(vout, out); vcb = rb_ary_new (); rb_ary_push (vcb, veditfunc); rb_ary_push (vcb, vhook_value); /* Keep a reference to avoid GC. */ rb_iv_set (vctx, "@edit_cb", vcb); err = gpgme_op_edit (ctx, key, edit_cb, (void *)vcb, out); return LONG2NUM(err); } static VALUE rb_s_gpgme_op_edit_start (VALUE dummy, VALUE vctx, VALUE vkey, VALUE veditfunc, VALUE vhook_value, VALUE vout) { gpgme_ctx_t ctx; gpgme_key_t key; gpgme_data_t out = NULL; VALUE vcb; gpgme_error_t err; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); UNWRAP_GPGME_KEY(vkey, key); if (!NIL_P(vout)) UNWRAP_GPGME_DATA(vout, out); vcb = rb_ary_new (); rb_ary_push (vcb, veditfunc); rb_ary_push (vcb, vhook_value); /* Keep a reference to avoid GC. */ rb_iv_set (vctx, "@edit_cb", vcb); err = gpgme_op_edit_start (ctx, key, edit_cb, (void *)vcb, out); return LONG2NUM(err); } static VALUE rb_s_gpgme_op_card_edit (VALUE dummy, VALUE vctx, VALUE vkey, VALUE veditfunc, VALUE vhook_value, VALUE vout) { gpgme_ctx_t ctx; gpgme_key_t key; gpgme_data_t out = NULL; VALUE vcb; gpgme_error_t err; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); UNWRAP_GPGME_KEY(vkey, key); if (!NIL_P(vout)) UNWRAP_GPGME_DATA(vout, out); vcb = rb_ary_new (); rb_ary_push (vcb, veditfunc); rb_ary_push (vcb, vhook_value); /* Keep a reference to avoid GC. */ rb_iv_set (vctx, "@card_edit_cb", vcb); err = gpgme_op_card_edit (ctx, key, edit_cb, (void *)vcb, out); return LONG2NUM(err); } static VALUE rb_s_gpgme_op_card_edit_start (VALUE dummy, VALUE vctx, VALUE vkey, VALUE veditfunc, VALUE vhook_value, VALUE vout) { gpgme_ctx_t ctx; gpgme_key_t key; gpgme_data_t out = NULL; VALUE vcb; gpgme_error_t err; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); UNWRAP_GPGME_KEY(vkey, key); if (!NIL_P(vout)) UNWRAP_GPGME_DATA(vout, out); vcb = rb_ary_new (); rb_ary_push (vcb, veditfunc); rb_ary_push (vcb, vhook_value); /* Keep a reference to avoid GC. */ rb_iv_set (vctx, "@card_edit_cb", vcb); err = gpgme_op_card_edit_start (ctx, key, edit_cb, (void *)vcb, out); return LONG2NUM(err); } #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER < 0x020000 static VALUE rb_s_gpgme_op_trustlist_start (VALUE dummy, VALUE vctx, VALUE vpattern, VALUE vmax_level) { gpgme_ctx_t ctx; gpgme_error_t err; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); err = gpgme_op_trustlist_start (ctx, StringValueCStr(vpattern), NUM2INT(vmax_level)); return LONG2NUM(err); } static VALUE rb_s_gpgme_op_trustlist_next (VALUE dummy, VALUE vctx, VALUE ritem) { gpgme_ctx_t ctx; gpgme_trust_item_t item; gpgme_error_t err; VALUE vitem; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); err = gpgme_op_trustlist_next (ctx, &item); if (gpgme_err_code(err) == GPG_ERR_NO_ERROR) { vitem = WRAP_GPGME_TRUST_ITEM(item); rb_iv_set (vitem, "@keyid", rb_str_new2 (item->keyid)); rb_iv_set (vitem, "@type", INT2FIX(item->type)); rb_iv_set (vitem, "@level", INT2FIX(item->level)); if (item->owner_trust) rb_iv_set (vitem, "@owner_trust", rb_str_new2 (item->owner_trust)); rb_iv_set (vitem, "@validity", rb_str_new2 (item->validity)); if (item->name) rb_iv_set (vitem, "@name", rb_str_new2 (item->name)); rb_ary_store (ritem, 0, vitem); } return LONG2NUM(err); } static VALUE rb_s_gpgme_op_trustlist_end (VALUE dummy, VALUE vctx) { gpgme_ctx_t ctx; gpgme_error_t err; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); err = gpgme_op_trustlist_end (ctx); return LONG2NUM(err); } #endif static VALUE rb_s_gpgme_op_decrypt (VALUE dummy, VALUE vctx, VALUE vcipher, VALUE vplain) { gpgme_ctx_t ctx; gpgme_data_t cipher, plain; gpgme_error_t err; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); UNWRAP_GPGME_DATA(vcipher, cipher); UNWRAP_GPGME_DATA(vplain, plain); err = gpgme_op_decrypt (ctx, cipher, plain); return LONG2NUM(err); } static VALUE rb_s_gpgme_op_decrypt_start (VALUE dummy, VALUE vctx, VALUE vcipher, VALUE vplain) { gpgme_ctx_t ctx; gpgme_data_t cipher, plain; gpgme_error_t err; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); UNWRAP_GPGME_DATA(vcipher, cipher); UNWRAP_GPGME_DATA(vplain, plain); err = gpgme_op_decrypt_start (ctx, cipher, plain); return LONG2NUM(err); } static VALUE rb_s_gpgme_op_decrypt_result (VALUE dummy, VALUE vctx) { gpgme_ctx_t ctx; gpgme_decrypt_result_t result; gpgme_recipient_t recipient; VALUE vresult, vrecipients; UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); result = gpgme_op_decrypt_result (ctx); if (!result) rb_raise (rb_eArgError, "no result"); vresult = rb_class_new_instance (0, NULL, cDecryptResult); if (result->unsupported_algorithm) rb_iv_set (vresult, "@unsupported_algorithm", rb_str_new2 (result->unsupported_algorithm)); rb_iv_set (vresult, "@wrong_key_usage", INT2FIX(result->wrong_key_usage)); vrecipients = rb_ary_new (); rb_iv_set (vresult, "@recipients", vrecipients); for (recipient = result->recipients; recipient; recipient = recipient->next) { VALUE vrecipient = rb_class_new_instance (0, NULL, cRecipient); rb_iv_set (vrecipient, "@pubkey_algo", INT2FIX(recipient->pubkey_algo)); rb_iv_set (vrecipient, "@keyid", rb_str_new2 (recipient->keyid)); rb_iv_set (vrecipient, "@status", UINT2NUM(recipient->status)); rb_ary_push (vrecipients, vrecipient); } if (result->file_name) rb_iv_set (vresult, "@file_name", rb_str_new2 (result->file_name)); return vresult; } static VALUE rb_s_gpgme_op_verify (VALUE dummy, VALUE vctx, VALUE vsig, VALUE vsigned_text, VALUE vplain) { gpgme_ctx_t ctx; gpgme_data_t sig, signed_text = NULL, plain = NULL; gpgme_error_t err; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); UNWRAP_GPGME_DATA(vsig, sig); if (!NIL_P(vsigned_text)) UNWRAP_GPGME_DATA(vsigned_text, signed_text); if (!NIL_P(vplain)) UNWRAP_GPGME_DATA(vplain, plain); err = gpgme_op_verify (ctx, sig, signed_text, plain); return LONG2NUM(err); } static VALUE rb_s_gpgme_op_verify_start (VALUE dummy, VALUE vctx, VALUE vsig, VALUE vsigned_text, VALUE vplain) { gpgme_ctx_t ctx; gpgme_data_t sig, signed_text = NULL, plain = NULL; gpgme_error_t err; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); UNWRAP_GPGME_DATA(vsig, sig); if (!NIL_P(vsigned_text)) UNWRAP_GPGME_DATA(vsigned_text, signed_text); if (!NIL_P(vplain)) UNWRAP_GPGME_DATA(vplain, plain); err = gpgme_op_verify_start (ctx, sig, signed_text, plain); return LONG2NUM(err); } static VALUE rb_s_gpgme_op_verify_result (VALUE dummy, VALUE vctx) { gpgme_ctx_t ctx; gpgme_verify_result_t verify_result; gpgme_signature_t signature; VALUE vverify_result, vsignatures = rb_ary_new (); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); verify_result = gpgme_op_verify_result (ctx); if (!verify_result) rb_raise (rb_eArgError, "no result"); vverify_result = rb_class_new_instance(0, NULL, cVerifyResult); rb_iv_set (vverify_result, "@signatures", vsignatures); for (signature = verify_result->signatures; signature; signature = signature->next) { VALUE vsignature = rb_class_new_instance(0, NULL, cSignature), vnotations = rb_ary_new (); gpgme_sig_notation_t notation; rb_iv_set (vsignature, "@summary", INT2FIX(signature->summary)); rb_iv_set (vsignature, "@fpr", rb_str_new2 (signature->fpr)); rb_iv_set (vsignature, "@status", LONG2NUM(signature->status)); rb_iv_set (vsignature, "@notations", vnotations); for (notation = signature->notations; notation; notation = notation->next) { VALUE vnotation = rb_class_new_instance(0, NULL, cSigNotation); /* The docs say: * The name of the notation field. If this is NULL, then the member * value will contain a policy URL. */ if (notation->name == NULL) rb_iv_set (vnotation, "@name", Qnil); else rb_iv_set (vnotation, "@name", rb_str_new2 (notation->name)); rb_iv_set (vnotation, "@value", rb_str_new2 (notation->value)); rb_ary_push (vnotations, vnotation); } rb_iv_set (vsignature, "@timestamp", ULONG2NUM(signature->timestamp)); rb_iv_set (vsignature, "@exp_timestamp", ULONG2NUM(signature->exp_timestamp)); rb_iv_set (vsignature, "@wrong_key_usage", INT2FIX(signature->wrong_key_usage)); rb_iv_set (vsignature, "@validity", INT2FIX(signature->validity)); rb_iv_set (vsignature, "@validity_reason", LONG2NUM(signature->validity_reason)); /* PKA related fields were added in 1.1.1. */ #ifdef GPGME_STATUS_PKA_TRUST_BAD rb_iv_set (vsignature, "@pka_trust", INT2FIX(signature->pka_trust)); rb_iv_set (vsignature, "@pka_address", rb_str_new2 (signature->pka_address)); #endif rb_ary_push (vsignatures, vsignature); } return vverify_result; } static VALUE rb_s_gpgme_op_decrypt_verify (VALUE dummy, VALUE vctx, VALUE vcipher, VALUE vplain) { gpgme_ctx_t ctx; gpgme_data_t cipher, plain; gpgme_error_t err; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); UNWRAP_GPGME_DATA(vcipher, cipher); UNWRAP_GPGME_DATA(vplain, plain); err = gpgme_op_decrypt_verify (ctx, cipher, plain); return LONG2NUM(err); } static VALUE rb_s_gpgme_op_decrypt_verify_start (VALUE dummy, VALUE vctx, VALUE vcipher, VALUE vplain) { gpgme_ctx_t ctx; gpgme_data_t cipher, plain; gpgme_error_t err; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); UNWRAP_GPGME_DATA(vcipher, cipher); UNWRAP_GPGME_DATA(vplain, plain); err = gpgme_op_decrypt_verify_start (ctx, cipher, plain); return LONG2NUM(err); } static VALUE rb_s_gpgme_signers_clear (VALUE dummy, VALUE vctx) { gpgme_ctx_t ctx; UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); gpgme_signers_clear (ctx); return Qnil; } static VALUE rb_s_gpgme_signers_add (VALUE dummy, VALUE vctx, VALUE vkey) { gpgme_ctx_t ctx; gpgme_key_t key; gpgme_error_t err; UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); UNWRAP_GPGME_KEY(vkey, key); err = gpgme_signers_add (ctx, key); return LONG2NUM(err); } static VALUE rb_s_gpgme_signers_enum (VALUE dummy, VALUE vctx, VALUE vseq) { gpgme_ctx_t ctx; gpgme_key_t key; UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); key = gpgme_signers_enum (ctx, NUM2INT(vseq)); if (!key) return Qnil; return WRAP_GPGME_KEY(key); } static VALUE rb_s_gpgme_op_sign (VALUE dummy, VALUE vctx, VALUE vplain, VALUE vsig, VALUE vmode) { gpgme_ctx_t ctx; gpgme_data_t plain, sig; gpgme_error_t err; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); UNWRAP_GPGME_DATA(vplain, plain); UNWRAP_GPGME_DATA(vsig, sig); err = gpgme_op_sign (ctx, plain, sig, NUM2INT(vmode)); return LONG2NUM(err); } static VALUE rb_s_gpgme_op_sign_start (VALUE dummy, VALUE vctx, VALUE vplain, VALUE vsig, VALUE vmode) { gpgme_ctx_t ctx; gpgme_data_t plain, sig; gpgme_error_t err; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); UNWRAP_GPGME_DATA(vplain, plain); UNWRAP_GPGME_DATA(vsig, sig); err = gpgme_op_sign_start (ctx, plain, sig, NUM2INT(vmode)); return LONG2NUM(err); } static VALUE rb_s_gpgme_op_sign_result (VALUE dummy, VALUE vctx) { gpgme_ctx_t ctx; gpgme_sign_result_t result; gpgme_invalid_key_t invalid_key; gpgme_new_signature_t new_signature; VALUE vresult, vinvalid_signers, vsignatures; UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); result = gpgme_op_sign_result (ctx); if (!result) rb_raise (rb_eArgError, "no result"); vresult = rb_class_new_instance (0, NULL, cSignResult); vinvalid_signers = rb_ary_new (); rb_iv_set (vresult, "@invalid_signers", vinvalid_signers); for (invalid_key = result->invalid_signers; invalid_key; invalid_key = invalid_key->next) { VALUE vinvalid_key = rb_class_new_instance (0, NULL, cInvalidKey); rb_iv_set (vinvalid_key, "@fpr", rb_str_new2 (invalid_key->fpr)); rb_iv_set (vinvalid_key, "@reason", LONG2NUM(invalid_key->reason)); rb_ary_push (vinvalid_signers, vinvalid_key); } vsignatures = rb_ary_new (); rb_iv_set (vresult, "@signatures", vsignatures); for (new_signature = result->signatures; new_signature; new_signature = new_signature->next) { VALUE vnew_signature = rb_class_new_instance (0, NULL, cNewSignature); rb_iv_set (vnew_signature, "@type", INT2FIX(new_signature->type)); rb_iv_set (vnew_signature, "@pubkey_algo", INT2FIX(new_signature->pubkey_algo)); rb_iv_set (vnew_signature, "@hash_algo", INT2FIX(new_signature->hash_algo)); rb_iv_set (vnew_signature, "@sig_class", UINT2NUM(new_signature->sig_class)); #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER >= 0x020000 rb_iv_set (vnew_signature, "@timestamp", ULONG2NUM(new_signature->timestamp)); #else rb_iv_set (vnew_signature, "@timestamp", LONG2NUM(new_signature->timestamp)); #endif rb_iv_set (vnew_signature, "@fpr", rb_str_new2 (new_signature->fpr)); rb_ary_push (vsignatures, vnew_signature); } return vresult; } static VALUE rb_s_gpgme_op_encrypt (VALUE dummy, VALUE vctx, VALUE vrecp, VALUE vflags, VALUE vplain, VALUE vcipher) { gpgme_ctx_t ctx; gpgme_key_t *recp = NULL; gpgme_data_t plain, cipher; gpgme_error_t err; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); /* If RECP is `NULL', symmetric rather than public key encryption is performed. */ if (!NIL_P(vrecp)) { int i; recp = ALLOC_N(gpgme_key_t, RARRAY_LEN(vrecp) + 1); for (i = 0; i < RARRAY_LEN(vrecp); i++) UNWRAP_GPGME_KEY(RARRAY_PTR(vrecp)[i], recp[i]); recp[i] = NULL; } UNWRAP_GPGME_DATA(vplain, plain); UNWRAP_GPGME_DATA(vcipher, cipher); err = gpgme_op_encrypt (ctx, recp, NUM2INT(vflags), plain, cipher); if (recp) xfree (recp); return LONG2NUM(err); } static VALUE rb_s_gpgme_op_encrypt_start (VALUE dummy, VALUE vctx, VALUE vrecp, VALUE vflags, VALUE vplain, VALUE vcipher) { gpgme_ctx_t ctx; gpgme_key_t *recp = NULL; gpgme_data_t plain, cipher; gpgme_error_t err; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); /* If RECP is `NULL', symmetric rather than public key encryption is performed. */ if (!NIL_P(vrecp)) { int i; recp = ALLOC_N(gpgme_key_t, RARRAY_LEN(vrecp) + 1); for (i = 0; i < RARRAY_LEN(vrecp); i++) UNWRAP_GPGME_KEY(RARRAY_PTR(vrecp)[i], recp[i]); recp[i] = NULL; } UNWRAP_GPGME_DATA(vplain, plain); UNWRAP_GPGME_DATA(vcipher, cipher); err = gpgme_op_encrypt_start (ctx, recp, NUM2INT(vflags), plain, cipher); if (recp) xfree (recp); return LONG2NUM(err); } static VALUE rb_s_gpgme_op_encrypt_result (VALUE dummy, VALUE vctx) { gpgme_ctx_t ctx; gpgme_encrypt_result_t result; gpgme_invalid_key_t invalid_key; VALUE vresult, vinvalid_recipients; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); result = gpgme_op_encrypt_result (ctx); if (!result) rb_raise (rb_eArgError, "no result"); vresult = rb_class_new_instance (0, NULL, cEncryptResult); vinvalid_recipients = rb_ary_new (); rb_iv_set (vresult, "@invalid_recipients", vinvalid_recipients); for (invalid_key = result->invalid_recipients; invalid_key; invalid_key = invalid_key->next) { VALUE vinvalid_key = rb_class_new_instance (0, NULL, cInvalidKey); rb_iv_set (vinvalid_key, "@fpr", rb_str_new2 (invalid_key->fpr)); rb_iv_set (vinvalid_key, "@reason", LONG2NUM(invalid_key->reason)); rb_ary_push (vinvalid_recipients, vinvalid_key); } return vresult; } static VALUE rb_s_gpgme_op_encrypt_sign (VALUE dummy, VALUE vctx, VALUE vrecp, VALUE vflags, VALUE vplain, VALUE vcipher) { gpgme_ctx_t ctx; gpgme_key_t *recp = NULL; gpgme_data_t plain, cipher; gpgme_error_t err; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); /* If RECP is `NULL', symmetric rather than public key encryption is performed. */ if (!NIL_P(vrecp)) { int i; recp = ALLOC_N(gpgme_key_t, RARRAY_LEN(vrecp) + 1); for (i = 0; i < RARRAY_LEN(vrecp); i++) UNWRAP_GPGME_KEY(RARRAY_PTR(vrecp)[i], recp[i]); recp[i] = NULL; } UNWRAP_GPGME_DATA(vplain, plain); UNWRAP_GPGME_DATA(vcipher, cipher); err = gpgme_op_encrypt_sign (ctx, recp, NUM2INT(vflags), plain, cipher); if (recp) xfree (recp); return LONG2NUM(err); } static VALUE rb_s_gpgme_op_encrypt_sign_start (VALUE dummy, VALUE vctx, VALUE vrecp, VALUE vflags, VALUE vplain, VALUE vcipher) { gpgme_ctx_t ctx; gpgme_key_t *recp = NULL; gpgme_data_t plain, cipher; gpgme_error_t err; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); /* If RECP is `NULL', symmetric rather than public key encryption is performed. */ if (!NIL_P(vrecp)) { int i; recp = ALLOC_N(gpgme_key_t, RARRAY_LEN(vrecp) + 1); for (i = 0; i < RARRAY_LEN(vrecp); i++) UNWRAP_GPGME_KEY(RARRAY_PTR(vrecp)[i], recp[i]); recp[i] = NULL; } UNWRAP_GPGME_DATA(vplain, plain); UNWRAP_GPGME_DATA(vcipher, cipher); err = gpgme_op_encrypt_sign_start (ctx, recp, NUM2INT(vflags), plain, cipher); if (recp) xfree (recp); return LONG2NUM(err); } static VALUE rb_s_gpgme_wait (VALUE dummy, VALUE vctx, VALUE rstatus, VALUE vhang) { gpgme_ctx_t ctx = NULL, ret; gpgme_error_t status; /* The CTX argument can be `NULL'. In that case, `gpgme_wait' waits for any context to complete its operation. */ if (!NIL_P(vctx)) { UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); } ret = gpgme_wait (ctx, &status, NUM2INT(vhang)); if (ret) { rb_ary_store (rstatus, 0, INT2NUM(status)); if (ret != ctx) vctx = WRAP_GPGME_CTX(ret); return vctx; } return Qnil; } #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER >= 0x010500 static VALUE rb_s_gpgme_op_spawn_start (VALUE dummy, VALUE vctx, VALUE vfile, VALUE vargv, VALUE vdatain, VALUE vdataout, VALUE vdataerr, VALUE vflags) { gpgme_ctx_t ctx; const char *file; const char **argv; gpgme_data_t datain = NULL; gpgme_data_t dataout = NULL; gpgme_data_t dataerr = NULL; gpgme_error_t err; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); file = StringValueCStr(vfile); if (NIL_P(vargv)) argv = NULL; else { int i; argv = ALLOC_N(const char *, RARRAY_LEN(vargv) + 1); for (i = 0; i < RARRAY_LEN(vargv); i++) argv[i] = StringValueCStr(RARRAY_PTR(vargv)[i]); argv[i] = NULL; } UNWRAP_GPGME_DATA(vdatain, datain); UNWRAP_GPGME_DATA(vdataout, dataout); UNWRAP_GPGME_DATA(vdataerr, dataerr); err = gpgme_op_spawn_start (ctx, file, argv, datain, dataout, dataerr, NUM2INT(vflags)); if (argv) xfree (argv); return LONG2NUM(err); } static VALUE rb_s_gpgme_op_spawn (VALUE dummy, VALUE vctx, VALUE vfile, VALUE vargv, VALUE vdatain, VALUE vdataout, VALUE vdataerr, VALUE vflags) { gpgme_ctx_t ctx; const char *file; const char **argv; gpgme_data_t datain = NULL; gpgme_data_t dataout = NULL; gpgme_data_t dataerr = NULL; gpgme_error_t err; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); file = StringValueCStr(vfile); if (NIL_P(vargv)) argv = NULL; else { int i; argv = ALLOC_N(const char *, RARRAY_LEN(vargv) + 1); for (i = 0; i < RARRAY_LEN(vargv); i++) argv[i] = StringValueCStr(RARRAY_PTR(vargv)[i]); argv[i] = NULL; } UNWRAP_GPGME_DATA(vdatain, datain); UNWRAP_GPGME_DATA(vdataout, dataout); UNWRAP_GPGME_DATA(vdataerr, dataerr); err = gpgme_op_spawn (ctx, file, argv, datain, dataout, dataerr, NUM2INT(vflags)); if (argv) xfree (argv); return LONG2NUM(err); } #endif #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER >= 0x020000 static VALUE rb_s_gpgme_op_random_bytes (VALUE dummy, VALUE vctx, VALUE vsize, VALUE vmode) { gpgme_ctx_t ctx; gpgme_error_t err; size_t size; char *buffer; VALUE result; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); size = NUM2SIZET(vsize); buffer = ALLOC_N(char, size); err = gpgme_op_random_bytes (ctx, NUM2INT(vmode), buffer, size); if (err) { xfree(buffer); return LONG2NUM(err); } result = rb_str_new(buffer, size); xfree(buffer); return result; } static VALUE rb_s_gpgme_op_random_value (VALUE dummy, VALUE vctx, VALUE vlimit) { gpgme_ctx_t ctx; size_t limit, result; gpgme_error_t err; CHECK_KEYLIST_NOT_IN_PROGRESS(vctx); UNWRAP_GPGME_CTX(vctx, ctx); if (!ctx) rb_raise (rb_eArgError, "released ctx"); limit = NUM2SIZET(vlimit); err = gpgme_op_random_value (ctx, limit, &result); if (gpgme_err_code(err) == GPG_ERR_NO_ERROR) return SIZET2NUM(result); return LONG2NUM(err); } #endif void Init_gpgme_n (void) { VALUE mGPGME; mGPGME = rb_define_module ("GPGME"); #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER >= 0x010500 rb_define_module_function (mGPGME, "gpgme_get_dirinfo", rb_s_gpgme_get_dirinfo, 1); #endif rb_define_module_function (mGPGME, "gpgme_check_version", rb_s_gpgme_check_version, 1); rb_define_module_function (mGPGME, "gpgme_engine_check_version", rb_s_gpgme_engine_check_version, 1); rb_define_module_function (mGPGME, "gpgme_get_engine_info", rb_s_gpgme_get_engine_info, 1); rb_define_module_function (mGPGME, "gpgme_set_engine_info", rb_s_gpgme_set_engine_info, 3); rb_define_module_function (mGPGME, "gpgme_ctx_get_engine_info", rb_s_gpgme_ctx_get_engine_info, 2); rb_define_module_function (mGPGME, "gpgme_ctx_set_engine_info", rb_s_gpgme_ctx_set_engine_info, 4); rb_define_module_function (mGPGME, "gpgme_pubkey_algo_name", rb_s_gpgme_pubkey_algo_name, 1); rb_define_module_function (mGPGME, "gpgme_hash_algo_name", rb_s_gpgme_hash_algo_name, 1); rb_define_module_function (mGPGME, "gpgme_err_code", rb_s_gpgme_err_code, 1); rb_define_module_function (mGPGME, "gpgme_err_source", rb_s_gpgme_err_source, 1); rb_define_module_function (mGPGME, "gpgme_strerror", rb_s_gpgme_strerror, 1); cEngineInfo = rb_define_class_under (mGPGME, "EngineInfo", rb_cObject); cCtx = rb_define_class_under (mGPGME, "Ctx", rb_cObject); rb_undef_alloc_func(cCtx); cData = rb_define_class_under (mGPGME, "Data", rb_cObject); rb_undef_alloc_func(cData); cKey = rb_define_class_under (mGPGME, "Key", rb_cObject); rb_undef_alloc_func(cKey); cSubKey = rb_define_class_under (mGPGME, "SubKey", rb_cObject); cUserID = rb_define_class_under (mGPGME, "UserID", rb_cObject); cKeySig = rb_define_class_under (mGPGME, "KeySig", rb_cObject); cRecipient = rb_define_class_under (mGPGME, "Recipient", rb_cObject); cDecryptResult = rb_define_class_under (mGPGME, "DecryptResult", rb_cObject); cVerifyResult = rb_define_class_under (mGPGME, "VerifyResult", rb_cObject); cSignResult = rb_define_class_under (mGPGME, "SignResult", rb_cObject); cEncryptResult = rb_define_class_under (mGPGME, "EncryptResult", rb_cObject); cSignature = rb_define_class_under (mGPGME, "Signature", rb_cObject); cSigNotation = rb_define_class_under (mGPGME, "SigNotation", rb_cObject); #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER < 0x020000 cTrustItem = rb_define_class_under (mGPGME, "TrustItem", rb_cObject); #endif cInvalidKey = rb_define_class_under (mGPGME, "InvalidKey", rb_cObject); cNewSignature = rb_define_class_under (mGPGME, "NewSignature", rb_cObject); cImportResult = rb_define_class_under (mGPGME, "ImportResult", rb_cObject); cImportStatus = rb_define_class_under (mGPGME, "ImportStatus", rb_cObject); /* Creating Data Buffers * * gpgme_data_new_from_filepart is not currently supported. */ rb_define_module_function (mGPGME, "gpgme_data_new", rb_s_gpgme_data_new, 1); rb_define_module_function (mGPGME, "gpgme_data_new_from_mem", rb_s_gpgme_data_new_from_mem, 3); rb_define_module_function (mGPGME, "gpgme_data_new_from_fd", rb_s_gpgme_data_new_from_fd, 2); rb_define_module_function (mGPGME, "gpgme_data_new_from_cbs", rb_s_gpgme_data_new_from_cbs, 3); /* Manipulating Data Buffers */ rb_define_module_function (mGPGME, "gpgme_data_read", rb_s_gpgme_data_read, 2); rb_define_module_function (mGPGME, "gpgme_data_seek", rb_s_gpgme_data_seek, 3); rb_define_module_function (mGPGME, "gpgme_data_write", rb_s_gpgme_data_write, 3); rb_define_module_function (mGPGME, "gpgme_data_get_encoding", rb_s_gpgme_data_get_encoding, 1); rb_define_module_function (mGPGME, "gpgme_data_set_encoding", rb_s_gpgme_data_set_encoding, 2); rb_define_module_function (mGPGME, "gpgme_data_get_file_name", rb_s_gpgme_data_get_file_name, 1); rb_define_module_function (mGPGME, "gpgme_data_set_file_name", rb_s_gpgme_data_set_file_name, 2); /* Creating Contexts */ rb_define_module_function (mGPGME, "gpgme_new", rb_s_gpgme_new, 1); rb_define_module_function (mGPGME, "gpgme_release", rb_s_gpgme_release, 1); /* Context Attributes */ rb_define_module_function (mGPGME, "gpgme_set_ctx_flag", rb_s_gpgme_set_ctx_flag, 3); rb_define_module_function (mGPGME, "gpgme_get_ctx_flag", rb_s_gpgme_get_ctx_flag, 2); rb_define_module_function (mGPGME, "gpgme_set_protocol", rb_s_gpgme_set_protocol, 2); rb_define_module_function (mGPGME, "gpgme_get_protocol", rb_s_gpgme_get_protocol, 1); rb_define_module_function (mGPGME, "gpgme_set_armor", rb_s_gpgme_set_armor, 2); rb_define_module_function (mGPGME, "gpgme_get_armor", rb_s_gpgme_get_armor, 1); rb_define_module_function (mGPGME, "gpgme_set_ignore_mdc_error", rb_s_gpgme_set_ignore_mdc_error, 2); rb_define_module_function (mGPGME, "gpgme_get_ignore_mdc_error", rb_s_gpgme_get_ignore_mdc_error, 1); rb_define_module_function (mGPGME, "gpgme_set_textmode", rb_s_gpgme_set_textmode, 2); rb_define_module_function (mGPGME, "gpgme_get_textmode", rb_s_gpgme_get_textmode, 1); rb_define_module_function (mGPGME, "gpgme_set_include_certs", rb_s_gpgme_set_include_certs, 2); rb_define_module_function (mGPGME, "gpgme_get_include_certs", rb_s_gpgme_get_include_certs, 1); rb_define_module_function (mGPGME, "gpgme_set_keylist_mode", rb_s_gpgme_set_keylist_mode, 2); rb_define_module_function (mGPGME, "gpgme_get_keylist_mode", rb_s_gpgme_get_keylist_mode, 1); #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER >= 0x010400 rb_define_module_function (mGPGME, "gpgme_set_pinentry_mode", rb_s_gpgme_set_pinentry_mode, 2); rb_define_module_function (mGPGME, "gpgme_get_pinentry_mode", rb_s_gpgme_get_pinentry_mode, 1); #endif rb_define_module_function (mGPGME, "gpgme_set_passphrase_cb", rb_s_gpgme_set_passphrase_cb, 3); rb_define_module_function (mGPGME, "gpgme_get_passphrase_cb", rb_s_gpgme_get_passphrase_cb, 3); rb_define_module_function (mGPGME, "gpgme_set_progress_cb", rb_s_gpgme_set_progress_cb, 3); rb_define_module_function (mGPGME, "gpgme_get_progress_cb", rb_s_gpgme_get_progress_cb, 3); rb_define_module_function (mGPGME, "gpgme_set_locale", rb_s_gpgme_set_locale, 3); #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER >= 0x010600 rb_define_module_function (mGPGME, "gpgme_set_offline", rb_s_gpgme_set_offline, 2); rb_define_module_function (mGPGME, "gpgme_get_offline", rb_s_gpgme_get_offline, 1); rb_define_module_function (mGPGME, "gpgme_set_status_cb", rb_s_gpgme_set_status_cb, 3); rb_define_module_function (mGPGME, "gpgme_get_status_cb", rb_s_gpgme_get_status_cb, 3); #endif /* Key Management */ rb_define_module_function (mGPGME, "gpgme_op_keylist_start", rb_s_gpgme_op_keylist_start, 3); rb_define_module_function (mGPGME, "gpgme_op_keylist_ext_start", rb_s_gpgme_op_keylist_ext_start, 3); rb_define_module_function (mGPGME, "gpgme_op_keylist_next", rb_s_gpgme_op_keylist_next, 2); rb_define_module_function (mGPGME, "gpgme_op_keylist_end", rb_s_gpgme_op_keylist_end, 1); rb_define_module_function (mGPGME, "gpgme_get_key", rb_s_gpgme_get_key, 4); rb_define_module_function (mGPGME, "gpgme_op_genkey", rb_s_gpgme_op_genkey, 4); rb_define_module_function (mGPGME, "gpgme_op_genkey_start", rb_s_gpgme_op_genkey_start, 4); rb_define_module_function (mGPGME, "gpgme_op_export", rb_s_gpgme_op_export, 4); rb_define_module_function (mGPGME, "gpgme_op_export_start", rb_s_gpgme_op_export_start, 4); rb_define_module_function (mGPGME, "gpgme_op_export_ext", rb_s_gpgme_op_export_ext, 4); rb_define_module_function (mGPGME, "gpgme_op_export_ext_start", rb_s_gpgme_op_export_ext_start, 4); #ifdef HAVE_GPGME_OP_EXPORT_KEYS rb_define_module_function (mGPGME, "gpgme_op_export_keys", rb_s_gpgme_op_export_keys, 4); rb_define_module_function (mGPGME, "gpgme_op_export_keys_start", rb_s_gpgme_op_export_keys_start, 4); #endif rb_define_module_function (mGPGME, "gpgme_op_import", rb_s_gpgme_op_import, 2); rb_define_module_function (mGPGME, "gpgme_op_import_start", rb_s_gpgme_op_import_start, 2); #ifdef HAVE_GPGME_OP_EXPORT_KEYS rb_define_module_function (mGPGME, "gpgme_op_import_keys", rb_s_gpgme_op_import_keys, 2); rb_define_module_function (mGPGME, "gpgme_op_import_keys_start", rb_s_gpgme_op_import_keys_start, 2); #endif rb_define_module_function (mGPGME, "gpgme_op_import_result", rb_s_gpgme_op_import_result, 1); rb_define_module_function (mGPGME, "gpgme_op_delete", rb_s_gpgme_op_delete, 3); rb_define_module_function (mGPGME, "gpgme_op_delete_ext", rb_s_gpgme_op_delete_ext, 3); rb_define_module_function (mGPGME, "gpgme_op_delete_start", rb_s_gpgme_op_delete_start, 3); rb_define_module_function (mGPGME, "gpgme_op_edit", rb_s_gpgme_op_edit, 5); rb_define_module_function (mGPGME, "gpgme_op_edit_start", rb_s_gpgme_op_edit_start, 5); rb_define_module_function (mGPGME, "gpgme_op_card_edit", rb_s_gpgme_op_card_edit, 5); rb_define_module_function (mGPGME, "gpgme_op_card_edit_start", rb_s_gpgme_op_card_edit_start, 5); /* Trust Item Management */ #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER < 0x020000 rb_define_module_function (mGPGME, "gpgme_op_trustlist_start", rb_s_gpgme_op_trustlist_start, 3); rb_define_module_function (mGPGME, "gpgme_op_trustlist_next", rb_s_gpgme_op_trustlist_next, 2); rb_define_module_function (mGPGME, "gpgme_op_trustlist_end", rb_s_gpgme_op_trustlist_end, 1); #endif /* Decrypt */ rb_define_module_function (mGPGME, "gpgme_op_decrypt", rb_s_gpgme_op_decrypt, 3); rb_define_module_function (mGPGME, "gpgme_op_decrypt_start", rb_s_gpgme_op_decrypt_start, 3); rb_define_module_function (mGPGME, "gpgme_op_decrypt_result", rb_s_gpgme_op_decrypt_result, 1); /* Verify */ rb_define_module_function (mGPGME, "gpgme_op_verify", rb_s_gpgme_op_verify, 4); rb_define_module_function (mGPGME, "gpgme_op_verify_start", rb_s_gpgme_op_verify_start, 4); rb_define_module_function (mGPGME, "gpgme_op_verify_result", rb_s_gpgme_op_verify_result, 1); /* Decrypt and Verify */ rb_define_module_function (mGPGME, "gpgme_op_decrypt_verify", rb_s_gpgme_op_decrypt_verify, 3); rb_define_module_function (mGPGME, "gpgme_op_decrypt_verify_start", rb_s_gpgme_op_decrypt_verify_start, 3); /* Sign */ rb_define_module_function (mGPGME, "gpgme_signers_clear", rb_s_gpgme_signers_clear, 1); rb_define_module_function (mGPGME, "gpgme_signers_add", rb_s_gpgme_signers_add, 2); rb_define_module_function (mGPGME, "gpgme_signers_enum", rb_s_gpgme_signers_enum, 2); rb_define_module_function (mGPGME, "gpgme_op_sign", rb_s_gpgme_op_sign, 4); rb_define_module_function (mGPGME, "gpgme_op_sign_start", rb_s_gpgme_op_sign_start, 4); rb_define_module_function (mGPGME, "gpgme_op_sign_result", rb_s_gpgme_op_sign_result, 1); /* Encrypt */ rb_define_module_function (mGPGME, "gpgme_op_encrypt", rb_s_gpgme_op_encrypt, 5); rb_define_module_function (mGPGME, "gpgme_op_encrypt_start", rb_s_gpgme_op_encrypt_start, 5); rb_define_module_function (mGPGME, "gpgme_op_encrypt_result", rb_s_gpgme_op_encrypt_result, 1); rb_define_module_function (mGPGME, "gpgme_op_encrypt_sign", rb_s_gpgme_op_encrypt_sign, 5); rb_define_module_function (mGPGME, "gpgme_op_encrypt_sign_start", rb_s_gpgme_op_encrypt_sign_start, 5); /* Run Control */ rb_define_module_function (mGPGME, "gpgme_wait", rb_s_gpgme_wait, 3); /* Running other Programs */ #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER >= 0x010500 rb_define_module_function (mGPGME, "gpgme_op_spawn", rb_s_gpgme_op_spawn, 7); rb_define_module_function (mGPGME, "gpgme_op_spawn_start", rb_s_gpgme_op_spawn_start, 7); #endif /* Random Number Generation */ #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER >= 0x020000 rb_define_module_function (mGPGME, "gpgme_op_random_bytes", rb_s_gpgme_op_random_bytes, 3); rb_define_module_function (mGPGME, "gpgme_op_random_value", rb_s_gpgme_op_random_value, 2); #endif /* gpgme_pubkey_algo_t */ rb_define_const (mGPGME, "GPGME_PK_RSA", INT2FIX(GPGME_PK_RSA)); rb_define_const (mGPGME, "GPGME_PK_DSA", INT2FIX(GPGME_PK_DSA)); rb_define_const (mGPGME, "GPGME_PK_ELG", INT2FIX(GPGME_PK_ELG)); rb_define_const (mGPGME, "GPGME_PK_ELG_E", INT2FIX(GPGME_PK_ELG_E)); /* This algorithm was added in 1.5.0. */ #ifdef GPGME_PK_ECC rb_define_const (mGPGME, "GPGME_PK_ECC", INT2FIX(GPGME_PK_ECC)); #endif /* gpgme_hash_algo_t */ rb_define_const (mGPGME, "GPGME_MD_MD5", INT2FIX(GPGME_MD_MD5)); rb_define_const (mGPGME, "GPGME_MD_SHA1", INT2FIX(GPGME_MD_SHA1)); rb_define_const (mGPGME, "GPGME_MD_RMD160", INT2FIX(GPGME_MD_RMD160)); rb_define_const (mGPGME, "GPGME_MD_MD2", INT2FIX(GPGME_MD_MD2)); rb_define_const (mGPGME, "GPGME_MD_TIGER", INT2FIX(GPGME_MD_TIGER)); rb_define_const (mGPGME, "GPGME_MD_HAVAL", INT2FIX(GPGME_MD_HAVAL)); /* This algorithm was added in 1.5.0. */ #ifdef GPGME_MD_SHA224 rb_define_const (mGPGME, "GPGME_MD_SHA224", INT2FIX(GPGME_MD_SHA224)); #endif rb_define_const (mGPGME, "GPGME_MD_SHA256", INT2FIX(GPGME_MD_SHA256)); rb_define_const (mGPGME, "GPGME_MD_SHA384", INT2FIX(GPGME_MD_SHA384)); rb_define_const (mGPGME, "GPGME_MD_SHA512", INT2FIX(GPGME_MD_SHA512)); rb_define_const (mGPGME, "GPGME_MD_MD4", INT2FIX(GPGME_MD_MD4)); rb_define_const (mGPGME, "GPGME_MD_CRC32", INT2FIX(GPGME_MD_CRC32)); rb_define_const (mGPGME, "GPGME_MD_CRC32_RFC1510", INT2FIX(GPGME_MD_CRC32_RFC1510)); rb_define_const (mGPGME, "GPGME_MD_CRC24_RFC2440", INT2FIX(GPGME_MD_CRC24_RFC2440)); /* gpgme_err_code_t */ rb_define_const (mGPGME, "GPG_ERR_EOF", INT2FIX(GPG_ERR_EOF)); rb_define_const (mGPGME, "GPG_ERR_NO_ERROR", INT2FIX(GPG_ERR_NO_ERROR)); rb_define_const (mGPGME, "GPG_ERR_GENERAL", INT2FIX(GPG_ERR_GENERAL)); rb_define_const (mGPGME, "GPG_ERR_ENOMEM", INT2FIX(GPG_ERR_ENOMEM)); rb_define_const (mGPGME, "GPG_ERR_INV_VALUE", INT2FIX(GPG_ERR_INV_VALUE)); rb_define_const (mGPGME, "GPG_ERR_UNUSABLE_PUBKEY", INT2FIX(GPG_ERR_UNUSABLE_PUBKEY)); rb_define_const (mGPGME, "GPG_ERR_UNUSABLE_SECKEY", INT2FIX(GPG_ERR_UNUSABLE_SECKEY)); rb_define_const (mGPGME, "GPG_ERR_NO_DATA", INT2FIX(GPG_ERR_NO_DATA)); rb_define_const (mGPGME, "GPG_ERR_CONFLICT", INT2FIX(GPG_ERR_CONFLICT)); rb_define_const (mGPGME, "GPG_ERR_NOT_IMPLEMENTED", INT2FIX(GPG_ERR_NOT_IMPLEMENTED)); rb_define_const (mGPGME, "GPG_ERR_DECRYPT_FAILED", INT2FIX(GPG_ERR_DECRYPT_FAILED)); rb_define_const (mGPGME, "GPG_ERR_BAD_PASSPHRASE", INT2FIX(GPG_ERR_BAD_PASSPHRASE)); rb_define_const (mGPGME, "GPG_ERR_KEY_EXPIRED", INT2FIX(GPG_ERR_KEY_EXPIRED)); rb_define_const (mGPGME, "GPG_ERR_SIG_EXPIRED", INT2FIX(GPG_ERR_SIG_EXPIRED)); rb_define_const (mGPGME, "GPG_ERR_CANCELED", INT2FIX(GPG_ERR_CANCELED)); rb_define_const (mGPGME, "GPG_ERR_INV_ENGINE", INT2FIX(GPG_ERR_INV_ENGINE)); rb_define_const (mGPGME, "GPG_ERR_AMBIGUOUS_NAME", INT2FIX(GPG_ERR_AMBIGUOUS_NAME)); rb_define_const (mGPGME, "GPG_ERR_WRONG_KEY_USAGE", INT2FIX(GPG_ERR_WRONG_KEY_USAGE)); rb_define_const (mGPGME, "GPG_ERR_CERT_REVOKED", INT2FIX(GPG_ERR_CERT_REVOKED)); rb_define_const (mGPGME, "GPG_ERR_CERT_EXPIRED", INT2FIX(GPG_ERR_CERT_EXPIRED)); rb_define_const (mGPGME, "GPG_ERR_NO_CRL_KNOWN", INT2FIX(GPG_ERR_NO_CRL_KNOWN)); rb_define_const (mGPGME, "GPG_ERR_NO_POLICY_MATCH", INT2FIX(GPG_ERR_NO_POLICY_MATCH)); rb_define_const (mGPGME, "GPG_ERR_NO_SECKEY", INT2FIX(GPG_ERR_NO_SECKEY)); rb_define_const (mGPGME, "GPG_ERR_MISSING_CERT", INT2FIX(GPG_ERR_MISSING_CERT)); rb_define_const (mGPGME, "GPG_ERR_BAD_CERT_CHAIN", INT2FIX(GPG_ERR_BAD_CERT_CHAIN)); rb_define_const (mGPGME, "GPG_ERR_UNSUPPORTED_ALGORITHM", INT2FIX(GPG_ERR_UNSUPPORTED_ALGORITHM)); rb_define_const (mGPGME, "GPG_ERR_BAD_SIGNATURE", INT2FIX(GPG_ERR_BAD_SIGNATURE)); rb_define_const (mGPGME, "GPG_ERR_NO_PUBKEY", INT2FIX(GPG_ERR_NO_PUBKEY)); /* gpgme_err_source_t */ rb_define_const (mGPGME, "GPG_ERR_SOURCE_UNKNOWN", INT2FIX(GPG_ERR_SOURCE_UNKNOWN)); rb_define_const (mGPGME, "GPG_ERR_SOURCE_GPGME", INT2FIX(GPG_ERR_SOURCE_GPGME)); rb_define_const (mGPGME, "GPG_ERR_SOURCE_GPG", INT2FIX(GPG_ERR_SOURCE_GPG)); rb_define_const (mGPGME, "GPG_ERR_SOURCE_GPGSM", INT2FIX(GPG_ERR_SOURCE_GPGSM)); rb_define_const (mGPGME, "GPG_ERR_SOURCE_GCRYPT", INT2FIX(GPG_ERR_SOURCE_GCRYPT)); rb_define_const (mGPGME, "GPG_ERR_SOURCE_GPGAGENT", INT2FIX(GPG_ERR_SOURCE_GPGAGENT)); rb_define_const (mGPGME, "GPG_ERR_SOURCE_PINENTRY", INT2FIX(GPG_ERR_SOURCE_PINENTRY)); rb_define_const (mGPGME, "GPG_ERR_SOURCE_SCD", INT2FIX(GPG_ERR_SOURCE_SCD)); rb_define_const (mGPGME, "GPG_ERR_SOURCE_KEYBOX", INT2FIX(GPG_ERR_SOURCE_KEYBOX)); rb_define_const (mGPGME, "GPG_ERR_SOURCE_USER_1", INT2FIX(GPG_ERR_SOURCE_USER_1)); rb_define_const (mGPGME, "GPG_ERR_SOURCE_USER_2", INT2FIX(GPG_ERR_SOURCE_USER_2)); rb_define_const (mGPGME, "GPG_ERR_SOURCE_USER_3", INT2FIX(GPG_ERR_SOURCE_USER_3)); rb_define_const (mGPGME, "GPG_ERR_SOURCE_USER_4", INT2FIX(GPG_ERR_SOURCE_USER_4)); /* gpgme_data_encoding_t */ rb_define_const (mGPGME, "GPGME_DATA_ENCODING_NONE", INT2FIX(GPGME_DATA_ENCODING_NONE)); rb_define_const (mGPGME, "GPGME_DATA_ENCODING_BINARY", INT2FIX(GPGME_DATA_ENCODING_BINARY)); rb_define_const (mGPGME, "GPGME_DATA_ENCODING_BASE64", INT2FIX(GPGME_DATA_ENCODING_BASE64)); rb_define_const (mGPGME, "GPGME_DATA_ENCODING_ARMOR", INT2FIX(GPGME_DATA_ENCODING_ARMOR)); /* gpgme_sig_stat_t */ rb_define_const (mGPGME, "GPGME_SIG_STAT_NONE", INT2FIX(GPGME_SIG_STAT_NONE)); rb_define_const (mGPGME, "GPGME_SIG_STAT_GOOD", INT2FIX(GPGME_SIG_STAT_GOOD)); rb_define_const (mGPGME, "GPGME_SIG_STAT_BAD", INT2FIX(GPGME_SIG_STAT_BAD)); rb_define_const (mGPGME, "GPGME_SIG_STAT_NOKEY", INT2FIX(GPGME_SIG_STAT_NOKEY)); rb_define_const (mGPGME, "GPGME_SIG_STAT_NOSIG", INT2FIX(GPGME_SIG_STAT_NOSIG)); rb_define_const (mGPGME, "GPGME_SIG_STAT_ERROR", INT2FIX(GPGME_SIG_STAT_ERROR)); rb_define_const (mGPGME, "GPGME_SIG_STAT_DIFF", INT2FIX(GPGME_SIG_STAT_DIFF)); rb_define_const (mGPGME, "GPGME_SIG_STAT_GOOD_EXP", INT2FIX(GPGME_SIG_STAT_GOOD_EXP)); rb_define_const (mGPGME, "GPGME_SIG_STAT_GOOD_EXPKEY", INT2FIX(GPGME_SIG_STAT_GOOD_EXPKEY)); /* gpgme_sigsum_t */ rb_define_const (mGPGME, "GPGME_SIGSUM_VALID", INT2FIX(GPGME_SIGSUM_VALID)); rb_define_const (mGPGME, "GPGME_SIGSUM_GREEN", INT2FIX(GPGME_SIGSUM_GREEN)); rb_define_const (mGPGME, "GPGME_SIGSUM_RED", INT2FIX(GPGME_SIGSUM_RED)); rb_define_const (mGPGME, "GPGME_SIGSUM_KEY_REVOKED", INT2FIX(GPGME_SIGSUM_KEY_REVOKED)); rb_define_const (mGPGME, "GPGME_SIGSUM_KEY_EXPIRED", INT2FIX(GPGME_SIGSUM_KEY_EXPIRED)); rb_define_const (mGPGME, "GPGME_SIGSUM_SIG_EXPIRED", INT2FIX(GPGME_SIGSUM_SIG_EXPIRED)); rb_define_const (mGPGME, "GPGME_SIGSUM_KEY_MISSING", INT2FIX(GPGME_SIGSUM_KEY_MISSING)); rb_define_const (mGPGME, "GPGME_SIGSUM_CRL_MISSING", INT2FIX(GPGME_SIGSUM_CRL_MISSING)); rb_define_const (mGPGME, "GPGME_SIGSUM_CRL_TOO_OLD", INT2FIX(GPGME_SIGSUM_CRL_TOO_OLD)); rb_define_const (mGPGME, "GPGME_SIGSUM_BAD_POLICY", INT2FIX(GPGME_SIGSUM_BAD_POLICY)); rb_define_const (mGPGME, "GPGME_SIGSUM_SYS_ERROR", INT2FIX(GPGME_SIGSUM_SYS_ERROR)); /* gpgme_sig_mode_t */ rb_define_const (mGPGME, "GPGME_SIG_MODE_NORMAL", INT2FIX(GPGME_SIG_MODE_NORMAL)); rb_define_const (mGPGME, "GPGME_SIG_MODE_DETACH", INT2FIX(GPGME_SIG_MODE_DETACH)); rb_define_const (mGPGME, "GPGME_SIG_MODE_CLEAR", INT2FIX(GPGME_SIG_MODE_CLEAR)); /* gpgme_attr_t */ #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER < 0x020000 rb_define_const (mGPGME, "GPGME_ATTR_KEYID", INT2FIX(GPGME_ATTR_KEYID)); rb_define_const (mGPGME, "GPGME_ATTR_FPR", INT2FIX(GPGME_ATTR_FPR)); rb_define_const (mGPGME, "GPGME_ATTR_ALGO", INT2FIX(GPGME_ATTR_ALGO)); rb_define_const (mGPGME, "GPGME_ATTR_LEN", INT2FIX(GPGME_ATTR_LEN)); rb_define_const (mGPGME, "GPGME_ATTR_CREATED", INT2FIX(GPGME_ATTR_CREATED)); rb_define_const (mGPGME, "GPGME_ATTR_EXPIRE", INT2FIX(GPGME_ATTR_EXPIRE)); rb_define_const (mGPGME, "GPGME_ATTR_OTRUST", INT2FIX(GPGME_ATTR_OTRUST)); rb_define_const (mGPGME, "GPGME_ATTR_USERID", INT2FIX(GPGME_ATTR_USERID)); rb_define_const (mGPGME, "GPGME_ATTR_NAME", INT2FIX(GPGME_ATTR_NAME)); rb_define_const (mGPGME, "GPGME_ATTR_EMAIL", INT2FIX(GPGME_ATTR_EMAIL)); rb_define_const (mGPGME, "GPGME_ATTR_COMMENT", INT2FIX(GPGME_ATTR_COMMENT)); rb_define_const (mGPGME, "GPGME_ATTR_VALIDITY", INT2FIX(GPGME_ATTR_VALIDITY)); rb_define_const (mGPGME, "GPGME_ATTR_LEVEL", INT2FIX(GPGME_ATTR_LEVEL)); rb_define_const (mGPGME, "GPGME_ATTR_TYPE", INT2FIX(GPGME_ATTR_TYPE)); rb_define_const (mGPGME, "GPGME_ATTR_IS_SECRET", INT2FIX(GPGME_ATTR_IS_SECRET)); rb_define_const (mGPGME, "GPGME_ATTR_KEY_REVOKED", INT2FIX(GPGME_ATTR_KEY_REVOKED)); rb_define_const (mGPGME, "GPGME_ATTR_KEY_INVALID", INT2FIX(GPGME_ATTR_KEY_INVALID)); rb_define_const (mGPGME, "GPGME_ATTR_UID_REVOKED", INT2FIX(GPGME_ATTR_UID_REVOKED)); rb_define_const (mGPGME, "GPGME_ATTR_UID_INVALID", INT2FIX(GPGME_ATTR_UID_INVALID)); rb_define_const (mGPGME, "GPGME_ATTR_KEY_CAPS", INT2FIX(GPGME_ATTR_KEY_CAPS)); rb_define_const (mGPGME, "GPGME_ATTR_CAN_ENCRYPT", INT2FIX(GPGME_ATTR_CAN_ENCRYPT)); rb_define_const (mGPGME, "GPGME_ATTR_CAN_SIGN", INT2FIX(GPGME_ATTR_CAN_SIGN)); rb_define_const (mGPGME, "GPGME_ATTR_CAN_CERTIFY", INT2FIX(GPGME_ATTR_CAN_CERTIFY)); rb_define_const (mGPGME, "GPGME_ATTR_KEY_EXPIRED", INT2FIX(GPGME_ATTR_KEY_EXPIRED)); rb_define_const (mGPGME, "GPGME_ATTR_KEY_DISABLED", INT2FIX(GPGME_ATTR_KEY_DISABLED)); rb_define_const (mGPGME, "GPGME_ATTR_SERIAL", INT2FIX(GPGME_ATTR_SERIAL)); rb_define_const (mGPGME, "GPGME_ATTR_ISSUER", INT2FIX(GPGME_ATTR_ISSUER)); rb_define_const (mGPGME, "GPGME_ATTR_CHAINID", INT2FIX(GPGME_ATTR_CHAINID)); rb_define_const (mGPGME, "GPGME_ATTR_SIG_STATUS", INT2FIX(GPGME_ATTR_SIG_STATUS)); rb_define_const (mGPGME, "GPGME_ATTR_ERRTOK", INT2FIX(GPGME_ATTR_ERRTOK)); rb_define_const (mGPGME, "GPGME_ATTR_SIG_SUMMARY", INT2FIX(GPGME_ATTR_SIG_SUMMARY)); #endif /* gpgme_validity_t */ rb_define_const (mGPGME, "GPGME_VALIDITY_UNKNOWN", INT2FIX(GPGME_VALIDITY_UNKNOWN)); rb_define_const (mGPGME, "GPGME_VALIDITY_UNDEFINED", INT2FIX(GPGME_VALIDITY_UNDEFINED)); rb_define_const (mGPGME, "GPGME_VALIDITY_NEVER", INT2FIX(GPGME_VALIDITY_NEVER)); rb_define_const (mGPGME, "GPGME_VALIDITY_MARGINAL", INT2FIX(GPGME_VALIDITY_MARGINAL)); rb_define_const (mGPGME, "GPGME_VALIDITY_FULL", INT2FIX(GPGME_VALIDITY_FULL)); rb_define_const (mGPGME, "GPGME_VALIDITY_ULTIMATE", INT2FIX(GPGME_VALIDITY_ULTIMATE)); /* gpgme_protocol_t */ rb_define_const (mGPGME, "GPGME_PROTOCOL_OpenPGP", INT2FIX(GPGME_PROTOCOL_OpenPGP)); rb_define_const (mGPGME, "GPGME_PROTOCOL_CMS", INT2FIX(GPGME_PROTOCOL_CMS)); /* This protocol was added in 1.2.0. */ #ifdef GPGME_PROTOCOL_ASSUAN rb_define_const (mGPGME, "GPGME_PROTOCOL_ASSUAN", INT2FIX(GPGME_PROTOCOL_ASSUAN)) #endif /* This protocol was added in 1.5.0. */ #ifdef GPGME_PROTOCOL_SPAWN rb_define_const (mGPGME, "GPGME_PROTOCOL_SPAWN", INT2FIX(GPGME_PROTOCOL_SPAWN)); #endif /* gpgme_status_code_t */ rb_define_const (mGPGME, "GPGME_STATUS_EOF", INT2FIX(GPGME_STATUS_EOF)); /* mkstatus starts here */ rb_define_const (mGPGME, "GPGME_STATUS_ENTER", INT2FIX(GPGME_STATUS_ENTER)); rb_define_const (mGPGME, "GPGME_STATUS_LEAVE", INT2FIX(GPGME_STATUS_LEAVE)); rb_define_const (mGPGME, "GPGME_STATUS_ABORT", INT2FIX(GPGME_STATUS_ABORT)); rb_define_const (mGPGME, "GPGME_STATUS_GOODSIG", INT2FIX(GPGME_STATUS_GOODSIG)); rb_define_const (mGPGME, "GPGME_STATUS_BADSIG", INT2FIX(GPGME_STATUS_BADSIG)); rb_define_const (mGPGME, "GPGME_STATUS_ERRSIG", INT2FIX(GPGME_STATUS_ERRSIG)); rb_define_const (mGPGME, "GPGME_STATUS_BADARMOR", INT2FIX(GPGME_STATUS_BADARMOR)); rb_define_const (mGPGME, "GPGME_STATUS_RSA_OR_IDEA", INT2FIX(GPGME_STATUS_RSA_OR_IDEA)); rb_define_const (mGPGME, "GPGME_STATUS_KEYEXPIRED", INT2FIX(GPGME_STATUS_KEYEXPIRED)); rb_define_const (mGPGME, "GPGME_STATUS_KEYREVOKED", INT2FIX(GPGME_STATUS_KEYREVOKED)); rb_define_const (mGPGME, "GPGME_STATUS_TRUST_UNDEFINED", INT2FIX(GPGME_STATUS_TRUST_UNDEFINED)); rb_define_const (mGPGME, "GPGME_STATUS_TRUST_NEVER", INT2FIX(GPGME_STATUS_TRUST_NEVER)); rb_define_const (mGPGME, "GPGME_STATUS_TRUST_MARGINAL", INT2FIX(GPGME_STATUS_TRUST_MARGINAL)); rb_define_const (mGPGME, "GPGME_STATUS_TRUST_FULLY", INT2FIX(GPGME_STATUS_TRUST_FULLY)); rb_define_const (mGPGME, "GPGME_STATUS_TRUST_ULTIMATE", INT2FIX(GPGME_STATUS_TRUST_ULTIMATE)); rb_define_const (mGPGME, "GPGME_STATUS_SHM_INFO", INT2FIX(GPGME_STATUS_SHM_INFO)); rb_define_const (mGPGME, "GPGME_STATUS_SHM_GET", INT2FIX(GPGME_STATUS_SHM_GET)); rb_define_const (mGPGME, "GPGME_STATUS_SHM_GET_BOOL", INT2FIX(GPGME_STATUS_SHM_GET_BOOL)); rb_define_const (mGPGME, "GPGME_STATUS_SHM_GET_HIDDEN", INT2FIX(GPGME_STATUS_SHM_GET_HIDDEN)); rb_define_const (mGPGME, "GPGME_STATUS_NEED_PASSPHRASE", INT2FIX(GPGME_STATUS_NEED_PASSPHRASE)); rb_define_const (mGPGME, "GPGME_STATUS_VALIDSIG", INT2FIX(GPGME_STATUS_VALIDSIG)); rb_define_const (mGPGME, "GPGME_STATUS_SIG_ID", INT2FIX(GPGME_STATUS_SIG_ID)); rb_define_const (mGPGME, "GPGME_STATUS_ENC_TO", INT2FIX(GPGME_STATUS_ENC_TO)); rb_define_const (mGPGME, "GPGME_STATUS_NODATA", INT2FIX(GPGME_STATUS_NODATA)); rb_define_const (mGPGME, "GPGME_STATUS_BAD_PASSPHRASE", INT2FIX(GPGME_STATUS_BAD_PASSPHRASE)); rb_define_const (mGPGME, "GPGME_STATUS_NO_PUBKEY", INT2FIX(GPGME_STATUS_NO_PUBKEY)); rb_define_const (mGPGME, "GPGME_STATUS_NO_SECKEY", INT2FIX(GPGME_STATUS_NO_SECKEY)); rb_define_const (mGPGME, "GPGME_STATUS_NEED_PASSPHRASE_SYM", INT2FIX(GPGME_STATUS_NEED_PASSPHRASE_SYM)); rb_define_const (mGPGME, "GPGME_STATUS_DECRYPTION_FAILED", INT2FIX(GPGME_STATUS_DECRYPTION_FAILED)); rb_define_const (mGPGME, "GPGME_STATUS_DECRYPTION_OKAY", INT2FIX(GPGME_STATUS_DECRYPTION_OKAY)); rb_define_const (mGPGME, "GPGME_STATUS_MISSING_PASSPHRASE", INT2FIX(GPGME_STATUS_MISSING_PASSPHRASE)); rb_define_const (mGPGME, "GPGME_STATUS_GOOD_PASSPHRASE", INT2FIX(GPGME_STATUS_GOOD_PASSPHRASE)); rb_define_const (mGPGME, "GPGME_STATUS_GOODMDC", INT2FIX(GPGME_STATUS_GOODMDC)); rb_define_const (mGPGME, "GPGME_STATUS_BADMDC", INT2FIX(GPGME_STATUS_BADMDC)); rb_define_const (mGPGME, "GPGME_STATUS_ERRMDC", INT2FIX(GPGME_STATUS_ERRMDC)); rb_define_const (mGPGME, "GPGME_STATUS_IMPORTED", INT2FIX(GPGME_STATUS_IMPORTED)); rb_define_const (mGPGME, "GPGME_STATUS_IMPORT_RES", INT2FIX(GPGME_STATUS_IMPORT_RES)); rb_define_const (mGPGME, "GPGME_STATUS_FILE_START", INT2FIX(GPGME_STATUS_FILE_START)); rb_define_const (mGPGME, "GPGME_STATUS_FILE_DONE", INT2FIX(GPGME_STATUS_FILE_DONE)); rb_define_const (mGPGME, "GPGME_STATUS_FILE_ERROR", INT2FIX(GPGME_STATUS_FILE_ERROR)); rb_define_const (mGPGME, "GPGME_STATUS_BEGIN_DECRYPTION", INT2FIX(GPGME_STATUS_BEGIN_DECRYPTION)); rb_define_const (mGPGME, "GPGME_STATUS_END_DECRYPTION", INT2FIX(GPGME_STATUS_END_DECRYPTION)); rb_define_const (mGPGME, "GPGME_STATUS_BEGIN_ENCRYPTION", INT2FIX(GPGME_STATUS_BEGIN_ENCRYPTION)); rb_define_const (mGPGME, "GPGME_STATUS_END_ENCRYPTION", INT2FIX(GPGME_STATUS_END_ENCRYPTION)); rb_define_const (mGPGME, "GPGME_STATUS_DELETE_PROBLEM", INT2FIX(GPGME_STATUS_DELETE_PROBLEM)); rb_define_const (mGPGME, "GPGME_STATUS_GET_BOOL", INT2FIX(GPGME_STATUS_GET_BOOL)); rb_define_const (mGPGME, "GPGME_STATUS_GET_LINE", INT2FIX(GPGME_STATUS_GET_LINE)); rb_define_const (mGPGME, "GPGME_STATUS_GET_HIDDEN", INT2FIX(GPGME_STATUS_GET_HIDDEN)); rb_define_const (mGPGME, "GPGME_STATUS_GOT_IT", INT2FIX(GPGME_STATUS_GOT_IT)); rb_define_const (mGPGME, "GPGME_STATUS_PROGRESS", INT2FIX(GPGME_STATUS_PROGRESS)); rb_define_const (mGPGME, "GPGME_STATUS_SIG_CREATED", INT2FIX(GPGME_STATUS_SIG_CREATED)); rb_define_const (mGPGME, "GPGME_STATUS_SESSION_KEY", INT2FIX(GPGME_STATUS_SESSION_KEY)); rb_define_const (mGPGME, "GPGME_STATUS_NOTATION_NAME", INT2FIX(GPGME_STATUS_NOTATION_NAME)); rb_define_const (mGPGME, "GPGME_STATUS_NOTATION_DATA", INT2FIX(GPGME_STATUS_NOTATION_DATA)); rb_define_const (mGPGME, "GPGME_STATUS_POLICY_URL", INT2FIX(GPGME_STATUS_POLICY_URL)); rb_define_const (mGPGME, "GPGME_STATUS_BEGIN_STREAM", INT2FIX(GPGME_STATUS_BEGIN_STREAM)); rb_define_const (mGPGME, "GPGME_STATUS_END_STREAM", INT2FIX(GPGME_STATUS_END_STREAM)); rb_define_const (mGPGME, "GPGME_STATUS_KEY_CREATED", INT2FIX(GPGME_STATUS_KEY_CREATED)); rb_define_const (mGPGME, "GPGME_STATUS_USERID_HINT", INT2FIX(GPGME_STATUS_USERID_HINT)); rb_define_const (mGPGME, "GPGME_STATUS_UNEXPECTED", INT2FIX(GPGME_STATUS_UNEXPECTED)); rb_define_const (mGPGME, "GPGME_STATUS_INV_RECP", INT2FIX(GPGME_STATUS_INV_RECP)); rb_define_const (mGPGME, "GPGME_STATUS_NO_RECP", INT2FIX(GPGME_STATUS_NO_RECP)); rb_define_const (mGPGME, "GPGME_STATUS_ALREADY_SIGNED", INT2FIX(GPGME_STATUS_ALREADY_SIGNED)); rb_define_const (mGPGME, "GPGME_STATUS_SIGEXPIRED", INT2FIX(GPGME_STATUS_SIGEXPIRED)); rb_define_const (mGPGME, "GPGME_STATUS_EXPSIG", INT2FIX(GPGME_STATUS_EXPSIG)); rb_define_const (mGPGME, "GPGME_STATUS_EXPKEYSIG", INT2FIX(GPGME_STATUS_EXPKEYSIG)); rb_define_const (mGPGME, "GPGME_STATUS_TRUNCATED", INT2FIX(GPGME_STATUS_TRUNCATED)); rb_define_const (mGPGME, "GPGME_STATUS_ERROR", INT2FIX(GPGME_STATUS_ERROR)); /* These status codes have been available since 1.1.1. */ #ifdef GPGME_STATUS_PKA_TRUST_BAD rb_define_const (mGPGME, "GPGME_STATUS_PKA_TRUST_BAD", INT2FIX(GPGME_STATUS_PKA_TRUST_BAD)); rb_define_const (mGPGME, "GPGME_STATUS_PKA_TRUST_GOOD", INT2FIX(GPGME_STATUS_PKA_TRUST_GOOD)); #endif /* These status codes were added in 1.5.0. */ #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER >= 0x010500 rb_define_const (mGPGME, "GPGME_STATUS_PLAINTEXT_LENGTH", INT2FIX(GPGME_STATUS_PLAINTEXT_LENGTH)); rb_define_const (mGPGME, "GPGME_STATUS_MOUNTPOINT", INT2FIX(GPGME_STATUS_MOUNTPOINT)); rb_define_const (mGPGME, "GPGME_STATUS_PINENTRY_LAUNCHED", INT2FIX(GPGME_STATUS_PINENTRY_LAUNCHED)); rb_define_const (mGPGME, "GPGME_STATUS_ATTRIBUTE", INT2FIX(GPGME_STATUS_ATTRIBUTE)); rb_define_const (mGPGME, "GPGME_STATUS_BEGIN_SIGNING", INT2FIX(GPGME_STATUS_BEGIN_SIGNING)); rb_define_const (mGPGME, "GPGME_STATUS_KEY_NOT_CREATED", INT2FIX(GPGME_STATUS_KEY_NOT_CREATED)); #endif /* The available keylist mode flags. */ rb_define_const (mGPGME, "GPGME_KEYLIST_MODE_LOCAL", INT2FIX(GPGME_KEYLIST_MODE_LOCAL)); rb_define_const (mGPGME, "GPGME_KEYLIST_MODE_EXTERN", INT2FIX(GPGME_KEYLIST_MODE_EXTERN)); rb_define_const (mGPGME, "GPGME_KEYLIST_MODE_SIGS", INT2FIX(GPGME_KEYLIST_MODE_SIGS)); /* This flag was added in 1.1.1. */ #ifdef GPGME_KEYLIST_MODE_SIG_NOTATIONS rb_define_const (mGPGME, "GPGME_KEYLIST_MODE_SIG_NOTATIONS", INT2FIX(GPGME_KEYLIST_MODE_SIG_NOTATIONS)); #endif rb_define_const (mGPGME, "GPGME_KEYLIST_MODE_VALIDATE", INT2FIX(GPGME_KEYLIST_MODE_VALIDATE)); /* This flag was added in 1.2.0. */ #ifdef GPGME_KEYLIST_MODE_EPHEMERAL rb_define_const (mGPGME, "GPGME_KEYLIST_MODE_EPHEMERAL", INT2FIX(GPGME_KEYLIST_MODE_EPHEMERAL)); #endif /* This flag was added in 1.5.1. */ #ifdef GPGME_KEYLIST_MODE_WITH_SECRET rb_define_const (mGPGME, "GPGME_KEYLIST_MODE_WITH_SECRET", INT2FIX(GPGME_KEYLIST_MODE_WITH_SECRET)); #endif /* The available flags for status field of gpgme_import_status_t. */ rb_define_const (mGPGME, "GPGME_IMPORT_NEW", INT2FIX(GPGME_IMPORT_NEW)); rb_define_const (mGPGME, "GPGME_IMPORT_UID", INT2FIX(GPGME_IMPORT_UID)); rb_define_const (mGPGME, "GPGME_IMPORT_SIG", INT2FIX(GPGME_IMPORT_SIG)); rb_define_const (mGPGME, "GPGME_IMPORT_SUBKEY", INT2FIX(GPGME_IMPORT_SUBKEY)); rb_define_const (mGPGME, "GPGME_IMPORT_SECRET", INT2FIX(GPGME_IMPORT_SECRET)); /* The available flags for gpgme_op_encrypt. */ rb_define_const (mGPGME, "GPGME_ENCRYPT_ALWAYS_TRUST", INT2FIX(GPGME_ENCRYPT_ALWAYS_TRUST)); /* This flag was added in 1.2.0. */ #ifdef GPGME_ENCRYPT_NO_ENCRYPT_TO rb_define_const (mGPGME, "GPGME_ENCRYPT_NO_ENCRYPT_TO", INT2FIX(GPGME_ENCRYPT_NO_ENCRYPT_TO)); #endif /* Random number generation mode flags added in 2.0.0 */ #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER >= 0x020000 rb_define_const (mGPGME, "GPGME_RANDOM_MODE_NORMAL", INT2FIX(GPGME_RANDOM_MODE_NORMAL)); rb_define_const (mGPGME, "GPGME_RANDOM_MODE_ZBASE32", INT2FIX(GPGME_RANDOM_MODE_ZBASE32)); #endif /* Decrypt flags added in 2.0.0 */ #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER >= 0x020000 rb_define_const (mGPGME, "GPGME_DECRYPT_LISTONLY", INT2FIX(GPGME_DECRYPT_LISTONLY)); #endif /* Key generation flags added in 2.0.0 */ #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER >= 0x020000 rb_define_const (mGPGME, "GPGME_CREATE_GROUP", INT2FIX(GPGME_CREATE_GROUP)); #endif /* These flags were added in 1.4.0. */ #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER >= 0x010400 rb_define_const (mGPGME, "GPGME_PINENTRY_MODE_DEFAULT", INT2FIX(GPGME_PINENTRY_MODE_DEFAULT)); rb_define_const (mGPGME, "GPGME_PINENTRY_MODE_ASK", INT2FIX(GPGME_PINENTRY_MODE_ASK)); rb_define_const (mGPGME, "GPGME_PINENTRY_MODE_CANCEL", INT2FIX(GPGME_PINENTRY_MODE_CANCEL)); rb_define_const (mGPGME, "GPGME_PINENTRY_MODE_ERROR", INT2FIX(GPGME_PINENTRY_MODE_ERROR)); rb_define_const (mGPGME, "GPGME_PINENTRY_MODE_LOOPBACK", INT2FIX(GPGME_PINENTRY_MODE_LOOPBACK)); #endif /* These flags were added in 1.5.0. */ #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER >= 0x010500 rb_define_const (mGPGME, "GPGME_SPAWN_DETACHED", INT2FIX(GPGME_SPAWN_DETACHED)); rb_define_const (mGPGME, "GPGME_SPAWN_ALLOW_SET_FG", INT2FIX(GPGME_SPAWN_ALLOW_SET_FG)); #endif /* This flag was added in 1.2.0. */ #ifdef GPGME_EXPORT_MODE_EXTERN rb_define_const (mGPGME, "GPGME_EXPORT_MODE_EXTERN", INT2FIX(GPGME_EXPORT_MODE_EXTERN)); #endif /* This flag was added in 1.3.0. */ #ifdef GPGME_EXPORT_MODE_MINIMAL rb_define_const (mGPGME, "GPGME_EXPORT_MODE_MINIMAL", INT2FIX(GPGME_EXPORT_MODE_MINIMAL)); #endif /* These flags were added in 1.6.0. */ #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER >= 0x010600 rb_define_const (mGPGME, "GPGME_EXPORT_MODE_SECRET", INT2FIX(GPGME_EXPORT_MODE_SECRET)); rb_define_const (mGPGME, "GPGME_EXPORT_MODE_RAW", INT2FIX(GPGME_EXPORT_MODE_RAW)); rb_define_const (mGPGME, "GPGME_EXPORT_MODE_PKCS12", INT2FIX(GPGME_EXPORT_MODE_PKCS12)); #endif /* These flags were added in 1.9.1. */ #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER >= 0x010901 rb_define_const (mGPGME, "GPGME_DELETE_ALLOW_SECRET", INT2FIX(GPGME_DELETE_ALLOW_SECRET)); rb_define_const (mGPGME, "GPGME_DELETE_FORCE", INT2FIX(GPGME_DELETE_FORCE)); #endif } ruby-gpgme-2.0.25/gpgme.gemspec000066400000000000000000000023121504102461500163160ustar00rootroot00000000000000Gem::Specification.new do |s| s.name = 'gpgme' s.version = '2.0.25' s.authors = ['Daiki Ueno', 'Albert Llop'] s.date = '2025-07-26' s.email = 'ueno@gnu.org' s.extensions = ['ext/gpgme/extconf.rb'] s.files = Dir['{lib,ext,test,examples}/**/*'] + Dir['ports/archives/*'] s.rubyforge_project = 'ruby-gpgme' s.homepage = 'http://github.com/ueno/ruby-gpgme' s.license = 'LGPL-2.1+' s.require_paths = ['lib', 'ext'] s.summary = 'Ruby binding of GPGME.' s.description = %q{Ruby-GPGME is a Ruby language binding of GPGME (GnuPG Made Easy). GnuPG Made Easy (GPGME) is a library designed to make access to GnuPG easier for applications. It provides a High-Level Crypto API for encryption, decryption, signing, signature verification and key management.} s.add_runtime_dependency "mini_portile2", "~> 2.7" s.add_development_dependency "mocha", "~> 0.9.12" s.add_development_dependency "minitest", "~> 2.1.0" s.add_development_dependency "yard", "~> 0.9.11" s.add_development_dependency "coveralls_reborn" s.add_development_dependency "byebug" end ruby-gpgme-2.0.25/lib/000077500000000000000000000000001504102461500144225ustar00rootroot00000000000000ruby-gpgme-2.0.25/lib/gpgme.rb000066400000000000000000000057541504102461500160610ustar00rootroot00000000000000require 'gpgme_n' # TODO without this call one can't GPGME::Ctx.new, find out why GPGME::gpgme_check_version(nil) require 'gpgme/constants' require 'gpgme/ctx' require 'gpgme/data' require 'gpgme/error' require 'gpgme/io_callbacks' require 'gpgme/key_common' require 'gpgme/key' require 'gpgme/sub_key' require 'gpgme/key_sig' require 'gpgme/misc' require 'gpgme/signature' require 'gpgme/user_id' require 'gpgme/engine' require 'gpgme/crypto' module GPGME class << self # From the c extension alias pubkey_algo_name gpgme_pubkey_algo_name alias hash_algo_name gpgme_hash_algo_name ## # Auxiliary method used by all the library to generate exceptions # from error codes returned by the C extension. def error_to_exception(err) case GPGME::gpgme_err_code(err) when GPG_ERR_EOF EOFError.new when GPG_ERR_NO_ERROR nil when GPG_ERR_GENERAL Error::General.new(err) when GPG_ERR_ENOMEM Errno::ENOMEM.new when GPG_ERR_INV_VALUE Error::InvalidValue.new(err) when GPG_ERR_UNUSABLE_PUBKEY Error::UnusablePublicKey.new(err) when GPG_ERR_UNUSABLE_SECKEY Error::UnusableSecretKey.new(err) when GPG_ERR_NO_DATA Error::NoData.new(err) when GPG_ERR_CONFLICT Error::Conflict.new(err) when GPG_ERR_NOT_IMPLEMENTED Error::NotImplemented.new(err) when GPG_ERR_DECRYPT_FAILED Error::DecryptFailed.new(err) when GPG_ERR_BAD_PASSPHRASE Error::BadPassphrase.new(err) when GPG_ERR_CANCELED Error::Canceled.new(err) when GPG_ERR_INV_ENGINE Error::InvalidEngine.new(err) when GPG_ERR_AMBIGUOUS_NAME Error::AmbiguousName.new(err) when GPG_ERR_WRONG_KEY_USAGE Error::WrongKeyUsage.new(err) when GPG_ERR_CERT_REVOKED Error::CertificateRevoked.new(err) when GPG_ERR_CERT_EXPIRED Error::CertificateExpired.new(err) when GPG_ERR_NO_CRL_KNOWN Error::NoCRLKnown.new(err) when GPG_ERR_NO_POLICY_MATCH Error::NoPolicyMatch.new(err) when GPG_ERR_NO_SECKEY Error::NoSecretKey.new(err) when GPG_ERR_MISSING_CERT Error::MissingCertificate.new(err) when GPG_ERR_BAD_CERT_CHAIN Error::BadCertificateChain.new(err) when GPG_ERR_UNSUPPORTED_ALGORITHM Error::UnsupportedAlgorithm.new(err) when GPG_ERR_BAD_SIGNATURE Error::BadSignature.new(err) when GPG_ERR_NO_PUBKEY Error::NoPublicKey.new(err) else Error.new(err) end end ## # TODO find out what it does, can't seem to find a proper parameter that # returns something other than nil. def check_version(options = nil) version = nil if options.kind_of?(String) version = options elsif options.include?(:version) version = options[:version] end unless GPGME::gpgme_check_version(version) raise Error::InvalidVersion.new end end end end ruby-gpgme-2.0.25/lib/gpgme/000077500000000000000000000000001504102461500155215ustar00rootroot00000000000000ruby-gpgme-2.0.25/lib/gpgme/compat.rb000066400000000000000000000022771504102461500173410ustar00rootroot00000000000000require 'gpgme' # TODO: Find why is this needed. I guess the name compat means it's just # backwards compatibility. Consider removing? module GPGME GpgmeError = Error GpgmeData = Data GpgmeEngineInfo = EngineInfo GpgmeCtx = Ctx GpgmeKey = Key GpgmeSubKey = SubKey GpgmeUserID = UserID GpgmeKeySig = KeySig GpgmeVerifyResult = VerifyResult GpgmeSignature = Signature GpgmeDecryptResult = DecryptResult GpgmeSignResult = SignResult GpgmeEncryptResult = EncryptResult GpgmeInvalidKey = InvalidKey GpgmeNewSignature = NewSignature GpgmeImportStatus = ImportStatus GpgmeImportResult = ImportResult class Ctx # Set the data pointer to the beginning. def rewind seek(0) end end def gpgme_data_rewind(dh) begin GPGME::gpgme_data_seek(dh, 0, IO::SEEK_SET) rescue SystemCallError => e return e.errno end end module_function :gpgme_data_rewind def gpgme_op_import_ext(ctx, keydata, nr) err = GPGME::gpgme_op_import(ctx, keydata) if GPGME::gpgme_err_code(err) == GPGME::GPG_ERR_NO_ERROR result = GPGME::gpgme_op_import_result(ctx) nr.push(result.considered) end end module_function :gpgme_op_import_ext end ruby-gpgme-2.0.25/lib/gpgme/constants.rb000066400000000000000000000273211504102461500200670ustar00rootroot00000000000000module GPGME if defined?(GPGME_ATTR_ALGO) ATTR_ALGO = GPGME_ATTR_ALGO end if defined?(GPGME_ATTR_CAN_CERTIFY) ATTR_CAN_CERTIFY = GPGME_ATTR_CAN_CERTIFY end if defined?(GPGME_ATTR_CAN_ENCRYPT) ATTR_CAN_ENCRYPT = GPGME_ATTR_CAN_ENCRYPT end if defined?(GPGME_ATTR_CAN_SIGN) ATTR_CAN_SIGN = GPGME_ATTR_CAN_SIGN end if defined?(GPGME_ATTR_CHAINID) ATTR_CHAINID = GPGME_ATTR_CHAINID end if defined?(GPGME_ATTR_COMMENT) ATTR_COMMENT = GPGME_ATTR_COMMENT end if defined?(GPGME_ATTR_CREATED) ATTR_CREATED = GPGME_ATTR_CREATED end if defined?(GPGME_ATTR_EMAIL) ATTR_EMAIL = GPGME_ATTR_EMAIL end if defined?(GPGME_ATTR_ERRTOK) ATTR_ERRTOK = GPGME_ATTR_ERRTOK end if defined?(GPGME_ATTR_EXPIRE) ATTR_EXPIRE = GPGME_ATTR_EXPIRE end if defined?(GPGME_ATTR_FPR) ATTR_FPR = GPGME_ATTR_FPR end if defined?(GPGME_ATTR_ISSUER) ATTR_ISSUER = GPGME_ATTR_ISSUER end if defined?(GPGME_ATTR_IS_SECRET) ATTR_IS_SECRET = GPGME_ATTR_IS_SECRET end if defined?(GPGME_ATTR_KEYID) ATTR_KEYID = GPGME_ATTR_KEYID end if defined?(GPGME_ATTR_KEY_CAPS) ATTR_KEY_CAPS = GPGME_ATTR_KEY_CAPS end if defined?(GPGME_ATTR_KEY_DISABLED) ATTR_KEY_DISABLED = GPGME_ATTR_KEY_DISABLED end if defined?(GPGME_ATTR_KEY_EXPIRED) ATTR_KEY_EXPIRED = GPGME_ATTR_KEY_EXPIRED end if defined?(GPGME_ATTR_KEY_INVALID) ATTR_KEY_INVALID = GPGME_ATTR_KEY_INVALID end if defined?(GPGME_ATTR_KEY_REVOKED) ATTR_KEY_REVOKED = GPGME_ATTR_KEY_REVOKED end if defined?(GPGME_ATTR_LEN) ATTR_LEN = GPGME_ATTR_LEN end if defined?(GPGME_ATTR_LEVEL) ATTR_LEVEL = GPGME_ATTR_LEVEL end if defined?(GPGME_ATTR_NAME) ATTR_NAME = GPGME_ATTR_NAME end if defined?(GPGME_ATTR_OTRUST) ATTR_OTRUST = GPGME_ATTR_OTRUST end if defined?(GPGME_ATTR_SERIAL) ATTR_SERIAL = GPGME_ATTR_SERIAL end if defined?(GPGME_ATTR_SIG_STATUS) ATTR_SIG_STATUS = GPGME_ATTR_SIG_STATUS end if defined?(GPGME_ATTR_SIG_SUMMARY) ATTR_SIG_SUMMARY = GPGME_ATTR_SIG_SUMMARY end if defined?(GPGME_ATTR_TYPE) ATTR_TYPE = GPGME_ATTR_TYPE end if defined?(GPGME_ATTR_UID_INVALID) ATTR_UID_INVALID = GPGME_ATTR_UID_INVALID end if defined?(GPGME_ATTR_UID_REVOKED) ATTR_UID_REVOKED = GPGME_ATTR_UID_REVOKED end if defined?(GPGME_ATTR_USERID) ATTR_USERID = GPGME_ATTR_USERID end if defined?(GPGME_ATTR_VALIDITY) ATTR_VALIDITY = GPGME_ATTR_VALIDITY end DATA_ENCODING_ARMOR = GPGME_DATA_ENCODING_ARMOR DATA_ENCODING_BASE64 = GPGME_DATA_ENCODING_BASE64 DATA_ENCODING_BINARY = GPGME_DATA_ENCODING_BINARY DATA_ENCODING_NONE = GPGME_DATA_ENCODING_NONE ENCRYPT_ALWAYS_TRUST = GPGME_ENCRYPT_ALWAYS_TRUST if defined?(GPGME_ENCRYPT_NO_ENCRYPT_TO) ENCRYPT_NO_ENCRYPT_TO = GPGME_ENCRYPT_NO_ENCRYPT_TO end IMPORT_NEW = GPGME_IMPORT_NEW IMPORT_SECRET = GPGME_IMPORT_SECRET IMPORT_SIG = GPGME_IMPORT_SIG IMPORT_SUBKEY = GPGME_IMPORT_SUBKEY IMPORT_UID = GPGME_IMPORT_UID KEYLIST_MODE_EXTERN = GPGME_KEYLIST_MODE_EXTERN KEYLIST_MODE_LOCAL = GPGME_KEYLIST_MODE_LOCAL KEYLIST_MODE_SIGS = GPGME_KEYLIST_MODE_SIGS KEYLIST_MODE_VALIDATE = GPGME_KEYLIST_MODE_VALIDATE if defined?(GPGME_KEYLIST_MODE_SIG_NOTATIONS) KEYLIST_MODE_SIG_NOTATIONS = GPGME_KEYLIST_MODE_SIG_NOTATIONS end if defined?(GPGME_KEYLIST_MODE_EPHEMERAL) KEYLIST_MODE_EPHEMERAL = GPGME_KEYLIST_MODE_EPHEMERAL end if defined?(GPGME_KEYLIST_MODE_WITH_SECRET) KEYLIST_MODE_WITH_SECRET = GPGME_KEYLIST_MODE_WITH_SECRET end MD_CRC24_RFC2440 = GPGME_MD_CRC24_RFC2440 MD_CRC32 = GPGME_MD_CRC32 MD_CRC32_RFC1510 = GPGME_MD_CRC32_RFC1510 MD_HAVAL = GPGME_MD_HAVAL MD_MD2 = GPGME_MD_MD2 MD_MD4 = GPGME_MD_MD4 MD_MD5 = GPGME_MD_MD5 MD_RMD160 = GPGME_MD_RMD160 MD_SHA1 = GPGME_MD_SHA1 MD_SHA256 = GPGME_MD_SHA256 if defined?(MD_SHA224) MD_SHA224 = GPGME_MD_SHA224 end MD_SHA384 = GPGME_MD_SHA384 MD_SHA512 = GPGME_MD_SHA512 MD_TIGER = GPGME_MD_TIGER if defined?(gpgme_set_pinentry_mode) PINENTRY_MODE_DEFAULT = GPGME_PINENTRY_MODE_DEFAULT PINENTRY_MODE_ASK = GPGME_PINENTRY_MODE_ASK PINENTRY_MODE_CANCEL = GPGME_PINENTRY_MODE_CANCEL PINENTRY_MODE_ERROR = GPGME_PINENTRY_MODE_ERROR PINENTRY_MODE_LOOPBACK = GPGME_PINENTRY_MODE_LOOPBACK PINENTRY_MODE_NAMES = { PINENTRY_MODE_DEFAULT => :default, PINENTRY_MODE_ASK => :ask, PINENTRY_MODE_CANCEL => :cancel, PINENTRY_MODE_ERROR => :error, PINENTRY_MODE_LOOPBACK => :loopback } end PK_DSA = GPGME_PK_DSA PK_ELG = GPGME_PK_ELG PK_ELG_E = GPGME_PK_ELG_E PK_RSA = GPGME_PK_RSA if defined?(GPGME_PK_ECC) PK_ECC = GPGME_PK_ECC end PROTOCOL_CMS = GPGME_PROTOCOL_CMS PROTOCOL_OpenPGP = GPGME_PROTOCOL_OpenPGP SIGSUM_BAD_POLICY = GPGME_SIGSUM_BAD_POLICY SIGSUM_CRL_MISSING = GPGME_SIGSUM_CRL_MISSING SIGSUM_CRL_TOO_OLD = GPGME_SIGSUM_CRL_TOO_OLD SIGSUM_GREEN = GPGME_SIGSUM_GREEN SIGSUM_KEY_EXPIRED = GPGME_SIGSUM_KEY_EXPIRED SIGSUM_KEY_MISSING = GPGME_SIGSUM_KEY_MISSING SIGSUM_KEY_REVOKED = GPGME_SIGSUM_KEY_REVOKED SIGSUM_RED = GPGME_SIGSUM_RED SIGSUM_SIG_EXPIRED = GPGME_SIGSUM_SIG_EXPIRED SIGSUM_SYS_ERROR = GPGME_SIGSUM_SYS_ERROR SIGSUM_VALID = GPGME_SIGSUM_VALID SIG_MODE_CLEAR = GPGME_SIG_MODE_CLEAR SIG_MODE_DETACH = GPGME_SIG_MODE_DETACH SIG_MODE_NORMAL = GPGME_SIG_MODE_NORMAL SIG_STAT_BAD = GPGME_SIG_STAT_BAD SIG_STAT_DIFF = GPGME_SIG_STAT_DIFF SIG_STAT_ERROR = GPGME_SIG_STAT_ERROR SIG_STAT_GOOD = GPGME_SIG_STAT_GOOD SIG_STAT_GOOD_EXP = GPGME_SIG_STAT_GOOD_EXP SIG_STAT_GOOD_EXPKEY = GPGME_SIG_STAT_GOOD_EXPKEY SIG_STAT_NOKEY = GPGME_SIG_STAT_NOKEY SIG_STAT_NONE = GPGME_SIG_STAT_NONE SIG_STAT_NOSIG = GPGME_SIG_STAT_NOSIG STATUS_ABORT = GPGME_STATUS_ABORT STATUS_ALREADY_SIGNED = GPGME_STATUS_ALREADY_SIGNED STATUS_BADARMOR = GPGME_STATUS_BADARMOR STATUS_BADMDC = GPGME_STATUS_BADMDC STATUS_BADSIG = GPGME_STATUS_BADSIG STATUS_BAD_PASSPHRASE = GPGME_STATUS_BAD_PASSPHRASE STATUS_BEGIN_DECRYPTION = GPGME_STATUS_BEGIN_DECRYPTION STATUS_BEGIN_ENCRYPTION = GPGME_STATUS_BEGIN_ENCRYPTION STATUS_BEGIN_STREAM = GPGME_STATUS_BEGIN_STREAM STATUS_DECRYPTION_FAILED = GPGME_STATUS_DECRYPTION_FAILED STATUS_DECRYPTION_OKAY = GPGME_STATUS_DECRYPTION_OKAY STATUS_DELETE_PROBLEM = GPGME_STATUS_DELETE_PROBLEM STATUS_ENC_TO = GPGME_STATUS_ENC_TO STATUS_END_DECRYPTION = GPGME_STATUS_END_DECRYPTION STATUS_END_ENCRYPTION = GPGME_STATUS_END_ENCRYPTION STATUS_END_STREAM = GPGME_STATUS_END_STREAM STATUS_ENTER = GPGME_STATUS_ENTER STATUS_EOF = GPGME_STATUS_EOF STATUS_ERRMDC = GPGME_STATUS_ERRMDC STATUS_ERROR = GPGME_STATUS_ERROR STATUS_ERRSIG = GPGME_STATUS_ERRSIG STATUS_EXPKEYSIG = GPGME_STATUS_EXPKEYSIG STATUS_EXPSIG = GPGME_STATUS_EXPSIG STATUS_FILE_DONE = GPGME_STATUS_FILE_DONE STATUS_FILE_ERROR = GPGME_STATUS_FILE_ERROR STATUS_FILE_START = GPGME_STATUS_FILE_START STATUS_GET_BOOL = GPGME_STATUS_GET_BOOL STATUS_GET_HIDDEN = GPGME_STATUS_GET_HIDDEN STATUS_GET_LINE = GPGME_STATUS_GET_LINE STATUS_GOODMDC = GPGME_STATUS_GOODMDC STATUS_GOODSIG = GPGME_STATUS_GOODSIG STATUS_GOOD_PASSPHRASE = GPGME_STATUS_GOOD_PASSPHRASE STATUS_GOT_IT = GPGME_STATUS_GOT_IT STATUS_IMPORTED = GPGME_STATUS_IMPORTED STATUS_IMPORT_RES = GPGME_STATUS_IMPORT_RES STATUS_INV_RECP = GPGME_STATUS_INV_RECP STATUS_KEYEXPIRED = GPGME_STATUS_KEYEXPIRED STATUS_KEYREVOKED = GPGME_STATUS_KEYREVOKED STATUS_KEY_CREATED = GPGME_STATUS_KEY_CREATED STATUS_LEAVE = GPGME_STATUS_LEAVE STATUS_MISSING_PASSPHRASE = GPGME_STATUS_MISSING_PASSPHRASE STATUS_NEED_PASSPHRASE = GPGME_STATUS_NEED_PASSPHRASE STATUS_NEED_PASSPHRASE_SYM = GPGME_STATUS_NEED_PASSPHRASE_SYM STATUS_NODATA = GPGME_STATUS_NODATA STATUS_NOTATION_DATA = GPGME_STATUS_NOTATION_DATA STATUS_NOTATION_NAME = GPGME_STATUS_NOTATION_NAME STATUS_NO_PUBKEY = GPGME_STATUS_NO_PUBKEY STATUS_NO_RECP = GPGME_STATUS_NO_RECP STATUS_NO_SECKEY = GPGME_STATUS_NO_SECKEY if defined?(GPGME_STATUS_PKA_TRUST_BAD) STATUS_PKA_TRUST_BAD = GPGME_STATUS_PKA_TRUST_BAD end if defined?(GPGME_STATUS_PKA_TRUST_GOOD) STATUS_PKA_TRUST_GOOD = GPGME_STATUS_PKA_TRUST_GOOD end if defined?(GPGME_STATUS_PLAINTEXT_LENGTH) STATUS_PLAINTEXT_LENGTH = GPGME_STATUS_PLAINTEXT_LENGTH end if defined?(GPGME_STATUS_MOUNTPOINT) STATUS_MOUNTPOINT = GPGME_STATUS_MOUNTPOINT end if defined?(GPGME_STATUS_PINENTRY_LAUNCHED) STATUS_PINENTRY_LAUNCHED = GPGME_STATUS_PINENTRY_LAUNCHED end if defined?(GPGME_STATUS_ATTRIBUTE) STATUS_ATTRIBUTE = GPGME_STATUS_ATTRIBUTE end if defined?(GPGME_STATUS_BEGIN_SIGNING) STATUS_BEGIN_SIGNING = GPGME_STATUS_BEGIN_SIGNING end if defined?(GPGME_STATUS_KEY_NOT_CREATED) STATUS_KEY_NOT_CREATED = GPGME_STATUS_KEY_NOT_CREATED end STATUS_POLICY_URL = GPGME_STATUS_POLICY_URL STATUS_PROGRESS = GPGME_STATUS_PROGRESS STATUS_RSA_OR_IDEA = GPGME_STATUS_RSA_OR_IDEA STATUS_SESSION_KEY = GPGME_STATUS_SESSION_KEY STATUS_SHM_GET = GPGME_STATUS_SHM_GET STATUS_SHM_GET_BOOL = GPGME_STATUS_SHM_GET_BOOL STATUS_SHM_GET_HIDDEN = GPGME_STATUS_SHM_GET_HIDDEN STATUS_SHM_INFO = GPGME_STATUS_SHM_INFO STATUS_SIGEXPIRED = GPGME_STATUS_SIGEXPIRED STATUS_SIG_CREATED = GPGME_STATUS_SIG_CREATED STATUS_SIG_ID = GPGME_STATUS_SIG_ID STATUS_TRUNCATED = GPGME_STATUS_TRUNCATED STATUS_TRUST_FULLY = GPGME_STATUS_TRUST_FULLY STATUS_TRUST_MARGINAL = GPGME_STATUS_TRUST_MARGINAL STATUS_TRUST_NEVER = GPGME_STATUS_TRUST_NEVER STATUS_TRUST_ULTIMATE = GPGME_STATUS_TRUST_ULTIMATE STATUS_TRUST_UNDEFINED = GPGME_STATUS_TRUST_UNDEFINED STATUS_UNEXPECTED = GPGME_STATUS_UNEXPECTED STATUS_USERID_HINT = GPGME_STATUS_USERID_HINT STATUS_VALIDSIG = GPGME_STATUS_VALIDSIG VALIDITY_FULL = GPGME_VALIDITY_FULL VALIDITY_MARGINAL = GPGME_VALIDITY_MARGINAL VALIDITY_NEVER = GPGME_VALIDITY_NEVER VALIDITY_ULTIMATE = GPGME_VALIDITY_ULTIMATE VALIDITY_UNDEFINED = GPGME_VALIDITY_UNDEFINED VALIDITY_UNKNOWN = GPGME_VALIDITY_UNKNOWN PROTOCOL_NAMES = { PROTOCOL_OpenPGP => :OpenPGP, PROTOCOL_CMS => :CMS } if defined?(GPGME_PROTOCOL_ASSUAN) PROTOCOL_ASSUAN = GPGME_PROTOCOL_ASSUAN PROTOCOL_NAMES[PROTOCOL_ASSUAN] = :ASSUAN end if defined?(GPGME_PROTOCOL_SPAWN) PROTOCOL_SPAWN = GPGME_PROTOCOL_SPAWN PROTOCOL_NAMES[PROTOCOL_SPAWN] = :SPAWN SPAWN_DETACHED = GPGME_SPAWN_DETACHED SPAWN_ALLOW_SET_FG = GPGME_SPAWN_ALLOW_SET_FG end if defined?(GPGME_EXPORT_MODE_EXTERN) EXPORT_MODE_EXTERN = GPGME_EXPORT_MODE_EXTERN end if defined?(GPGME_EXPORT_MODE_MINIMAL) EXPORT_MODE_MINIMAL = GPGME_EXPORT_MODE_MINIMAL end if defined?(GPGME_EXPORT_MODE_SECRET) EXPORT_MODE_SECRET = GPGME_EXPORT_MODE_SECRET EXPORT_MODE_RAW = GPGME_EXPORT_MODE_RAW EXPORT_MODE_PKCS12 = GPGME_EXPORT_MODE_PKCS12 end KEYLIST_MODE_NAMES = { KEYLIST_MODE_LOCAL => :local, KEYLIST_MODE_EXTERN => :extern, KEYLIST_MODE_SIGS => :sigs, KEYLIST_MODE_VALIDATE => :validate } VALIDITY_NAMES = { VALIDITY_UNKNOWN => :unknown, VALIDITY_UNDEFINED => :undefined, VALIDITY_NEVER => :never, VALIDITY_MARGINAL => :marginal, VALIDITY_FULL => :full, VALIDITY_ULTIMATE => :ultimate } if defined?(GPGME_DELETE_ALLOW_SECRET) DELETE_ALLOW_SECRET = GPGME_DELETE_ALLOW_SECRET end if defined?(GPGME_DELETE_FORCE) DELETE_FORCE = GPGME_DELETE_FORCE end # Random number generation mode flags added in 2.0.0 if defined?(GPGME_RANDOM_MODE_NORMAL) RANDOM_MODE_NORMAL = GPGME_RANDOM_MODE_NORMAL end if defined?(GPGME_RANDOM_MODE_ZBASE32) RANDOM_MODE_ZBASE32 = GPGME_RANDOM_MODE_ZBASE32 end # Decrypt flags added in 2.0.0 if defined?(GPGME_DECRYPT_LISTONLY) DECRYPT_LISTONLY = GPGME_DECRYPT_LISTONLY end # Key generation flags added in 2.0.0 if defined?(GPGME_CREATE_GROUP) CREATE_GROUP = GPGME_CREATE_GROUP end end ruby-gpgme-2.0.25/lib/gpgme/crypto.rb000066400000000000000000000300371504102461500173710ustar00rootroot00000000000000module GPGME ## # Different, independent methods providing the simplest possible API to # execute crypto operations via GPG. All methods accept as options the same # common options as {GPGME::Ctx.new}. Read the documentation for that class to # know how to customize things further (like output stuff in ASCII armored # format, for example). # # @example # crypto = GPGME::Crypto.new :armor => true # encrypted = crypto.encrypt 'Plain text' # class Crypto attr_reader :default_options def initialize(options = {}) @default_options = options end ## # Encrypts an element # # crypto.encrypt something, options # # Will return a {GPGME::Data} element which can then be read. # # Must have some key imported, look for {GPGME::Key.import} to know how # to import one, or the gpg documentation to know how to create one # # @param plain # Must be something that can be converted into a {GPGME::Data} object, or # a {GPGME::Data} object itself. # # @param [Hash] options # The optional parameters are as follows: # * +:recipients+ for which recipient do you want to encrypt this file. It # will pick the first one available if none specified. Can be an array of # identifiers or just one (a string). # * +:symmetric+ if set to true, will ignore +:recipients+, and will perform # a symmetric encryption. Must provide a password via the +:password+ # option. # * +:always_trust+ if set to true specifies all the recipients to be # trusted, thus not requiring confirmation. # * +:sign+ if set to true, performs a combined sign and encrypt operation. # * +:signers+ if +:sign+ specified to true, a list of additional possible # signers. Must be an array of sign identifiers. # * +:output+ if specified, it will write the output into it. It will be # converted to a {GPGME::Data} object, so it could be a file for example. # * Any other option accepted by {GPGME::Ctx.new} # # @return [GPGME::Data] a {GPGME::Data} object that can be read. # # @example returns a {GPGME::Data} that can be later encrypted # encrypted = crypto.encrypt "Hello world!" # encrypted.read # => Encrypted stuff # # @example to be decrypted by someone@example.com. # crypto.encrypt "Hello", :recipients => "someone@example.com" # # @example If I didn't trust any of my keys by default # crypto.encrypt "Hello" # => GPGME::Error::General # crypto.encrypt "Hello", :always_trust => true # => Will work fine # # @example encrypted string that can be decrypted and/or *verified* # crypto.encrypt "Hello", :sign => true # # @example multiple signers # crypto.encrypt "Hello", :sign => true, :signers => "extra@example.com" # # @example writing to a file instead # file = File.open("signed.sec","w+") # crypto.encrypt "Hello", :output => file # output written to signed.sec # # @raise [GPGME::Error::General] when trying to encrypt with a key that is # not trusted, and +:always_trust+ wasn't specified # def encrypt(plain, options = {}) options = @default_options.merge options plain_data = Data.new(plain) cipher_data = Data.new(options[:output]) keys = Key.find(:public, options[:recipients]) keys = nil if options[:symmetric] flags = 0 flags |= GPGME::ENCRYPT_ALWAYS_TRUST if options[:always_trust] GPGME::Ctx.new(options) do |ctx| begin if options[:sign] if options[:signers] signers = Key.find(:public, options[:signers], :sign) ctx.add_signer(*signers) end ctx.encrypt_sign(keys, plain_data, cipher_data, flags) else ctx.encrypt(keys, plain_data, cipher_data, flags) end rescue GPGME::Error::UnusablePublicKey => exc exc.keys = ctx.encrypt_result.invalid_recipients raise exc rescue GPGME::Error::UnusableSecretKey => exc exc.keys = ctx.sign_result.invalid_signers raise exc end end cipher_data.seek(0) cipher_data end ## # Decrypts a previously encrypted element # # crypto.decrypt cipher, options, &block # # Must have the appropiate key to be able to decrypt, of course. Returns # a {GPGME::Data} object which can then be read. # # @param cipher # Must be something that can be converted into a {GPGME::Data} object, # or a {GPGME::Data} object itself. It is the element that will be # decrypted. # # @param [Hash] options # The optional parameters: # * +:output+ if specified, it will write the output into it. It will # me converted to a {GPGME::Data} object, so it can also be a file, # for example. # * If the file was encrypted with symmetric encryption, must provide # a :password option. # * Any other option accepted by {GPGME::Ctx.new} # # @param &block # In the block all the signatures are yielded, so one could verify them. # See examples. # # @return [GPGME::Data] a {GPGME::Data} that can be read. # # @example Simple decrypt # crypto.decrypt encrypted_data # # @example symmetric encryption, or passwored key # crypto.decrypt encrypted_data, :password => "gpgme" # # @example Output to file # file = File.open("decrypted.txt", "w+") # crypto.decrypt encrypted_data, :output => file # # @example Verifying signatures # crypto.decrypt encrypted_data do |signature| # raise "Signature could not be verified" unless signature.valid? # end # # @raise [GPGME::Error::UnsupportedAlgorithm] when the cipher was encrypted # using an algorithm that's not supported currently. # # @raise [GPGME::Error::WrongKeyUsage] TODO Don't know when # # @raise [GPGME::Error::DecryptFailed] when the cipher was encrypted # for a key that's not available currently. def decrypt(cipher, options = {}) options = @default_options.merge options plain_data = Data.new(options[:output]) cipher_data = Data.new(cipher) GPGME::Ctx.new(options) do |ctx| begin ctx.decrypt_verify(cipher_data, plain_data) rescue GPGME::Error::UnsupportedAlgorithm => exc exc.algorithm = ctx.decrypt_result.unsupported_algorithm raise exc rescue GPGME::Error::WrongKeyUsage => exc exc.key_usage = ctx.decrypt_result.wrong_key_usage raise exc end verify_result = ctx.verify_result if verify_result && block_given? verify_result.signatures.each do |signature| yield signature end end end plain_data.seek(0) plain_data end ## # Creates a signature of a text # # crypto.sign text, options # # Must have the appropiate key to be able to decrypt, of course. Returns # a {GPGME::Data} object which can then be read. # # @param text # The object that will be signed. Must be something that can be converted # to {GPGME::Data}. # # @param [Hash] options # Optional parameters. # * +:signer+ sign identifier to sign the text with. Will use the first # key it finds if none specified. # * +:output+ if specified, it will write the output into it. It will be # converted to a {GPGME::Data} object, so it could be a file for example. # * +:mode+ Desired type of signature. Options are: # - +GPGME::SIG_MODE_NORMAL+ for a normal signature. The default one if # not specified. # - +GPGME::SIG_MODE_DETACH+ for a detached signature # - +GPGME::SIG_MODE_CLEAR+ for a cleartext signature # * Any other option accepted by {GPGME::Ctx.new} # # @return [GPGME::Data] a {GPGME::Data} that can be read. # # @example normal sign # crypto.sign "Hi there" # # @example outputing to a file # file = File.open("text.sign", "w+") # crypto.sign "Hi there", :options => file # # @example doing a detached signature # crypto.sign "Hi there", :mode => GPGME::SIG_MODE_DETACH # # @example specifying the signer # crypto.sign "Hi there", :signer => "mrsimo@example.com" # # @raise [GPGME::Error::UnusableSecretKey] TODO don't know when def sign(text, options = {}) options = @default_options.merge options plain = Data.new(text) output = Data.new(options[:output]) mode = options[:mode] || GPGME::SIG_MODE_NORMAL GPGME::Ctx.new(options) do |ctx| if options[:signer] signers = Key.find(:secret, options[:signer], :sign) ctx.add_signer(*signers) end begin ctx.sign(plain, output, mode) rescue GPGME::Error::UnusableSecretKey => exc exc.keys = ctx.sign_result.invalid_signers raise exc end end output.seek(0) output end # Verifies a previously signed element # # crypto.verify sig, options, &block # # Must have the proper keys available. # # @param sig # The signature itself. Must be possible to convert into a {GPGME::Data} # object, so can be a file. # # @param [Hash] options # * +:signed_text+ if the sign is detached, then must be the plain text # for which the signature was created. # * +:output+ where to store the result of the signature. Will be # converted to a {GPGME::Data} object. # * Any other option accepted by {GPGME::Ctx.new} # # @param &block # In the block all the signatures are yielded, so one could verify them. # See examples. # # @return [GPGME::Data] unless the sign is detached, the {GPGME::Data} # object with the plain text. If the sign is detached, will return nil. # # @example simple verification # sign = crypto.sign("Hi there") # data = crypto.verify(sign) { |signature| signature.valid? } # data.read # => "Hi there" # # @example saving output to file # sign = crypto.sign("Hi there") # out = File.open("test.asc", "w+") # crypto.verify(sign, :output => out) {|signature| signature.valid?} # out.read # => "Hi there" # # @example verifying a detached signature # sign = crypto.detach_sign("Hi there") # # Will fail # crypto.verify(sign) { |signature| signature.valid? } # # Will succeed # crypto.verify(sign, :signed_text => "hi there") do |signature| # signature.valid? # end # def verify(sig, options = {}) options = @default_options.merge options sig = Data.new(sig) signed_text = Data.new(options[:signed_text]) output = Data.new(options[:output]) unless options[:signed_text] GPGME::Ctx.new(options) do |ctx| ctx.verify(sig, signed_text, output) ctx.verify_result.signatures.each do |signature| yield signature end end if output output.seek(0) output end end # Clearsigns an element # # crypto.clearsign text, options # # Same functionality of {.sign} only doing clearsigns by default. # def clearsign(text, options = {}) sign text, options.merge(:mode => GPGME::SIG_MODE_CLEAR) end # Creates a detached signature of an element # # crypto.detach_sign text, options # # Same functionality of {.sign} only doing detached signs by default. # def detach_sign(text, options = {}) sign text, options.merge(:mode => GPGME::SIG_MODE_DETACH) end ## # Allows calling of methods directly in the module without the need to # create a new instance. def self.method_missing(method, *args, &block) if GPGME::Crypto.instance_methods(false).include?(method) crypto = GPGME::Crypto.new crypto.send method, *args, &block else super end end end # module Crypto end # module GPGME ruby-gpgme-2.0.25/lib/gpgme/ctx.rb000066400000000000000000000462121504102461500166510ustar00rootroot00000000000000module GPGME ## # A context within which all cryptographic operations are performed. # # More operations can be done which are not available in the higher level # API. Note how to create a new instance of this class in {GPGME::Ctx.new}. # class Ctx ## # Create a new instance from the given +options+. Must be released either # executing the operations inside a block, or executing {GPGME::Ctx#release} # afterwards. # # @param [Hash] options # The optional parameters are as follows: # * +:protocol+ Either +PROTOCOL_OpenPGP+ or +PROTOCOL_CMS+. # * +:armor+ will return ASCII armored outputs if specified true. # * +:textmode+ if +true+, inform the recipient that the input is text. # * +:keylist_mode+ One of: +KEYLIST_MODE_LOCAL+, +KEYLIST_MODE_EXTERN+, # +KEYLIST_MODE_SIGS+ or +KEYLIST_MODE_VALIDATE+. # * +:pinentry_mode+ One of: +PINENTRY_MODE_DEFAULT+, # +PINENTRY_MODE_ASK+, +PINENTRY_MODE_CANCEL+, # +PINENTRY_MODE_ERROR+, or +PINENTRY_MODE_LOOPBACK+. # * +:offline+ if set to true, dirmngr will not contact external services # * +:password+ password of the passphrased password being used. # * +:passphrase_callback+ A callback function. See {#set_passphrase_callback}. # * +:passphrase_callback_value+ An object passed to passphrase_callback. # * +:progress_callback+ A callback function. See {#set_progress_callback}. # * +:progress_callback_value+ An object passed to progress_callback. # * +:status_callback+ A callback function. See {#set_status_callback}. # * +:status_callback_value+ An object passed to status_callback. # # @example # ctx = GPGME::Ctx.new # # operate on ctx # ctx.release # # @example # GPGME::Ctx.new do |ctx| # # operate on ctx # end # def self.new(options = {}) rctx = [] err = GPGME::gpgme_new(rctx) exc = GPGME::error_to_exception(err) raise exc if exc ctx = rctx[0] ctx.protocol = options[:protocol] if options[:protocol] ctx.armor = options[:armor] if options[:armor] ctx.textmode = options[:textmode] if options[:textmode] ctx.keylist_mode = options[:keylist_mode] if options[:keylist_mode] ctx.pinentry_mode = options[:pinentry_mode] if options[:pinentry_mode] ctx.offline = options[:offline] if options[:offline] ctx.ignore_mdc_error = options[:ignore_mdc_error] if options[:ignore_mdc_error] if options[:password] ctx.set_passphrase_callback GPGME::Ctx.method(:pass_function), options[:password] else if options[:passphrase_callback] ctx.set_passphrase_callback options[:passphrase_callback], options[:passphrase_callback_value] end end if options[:progress_callback] ctx.set_progress_callback options[:progress_callback], options[:progress_callback_value] end if options[:status_callback] ctx.set_status_callback options[:status_callback], options[:status_callback_value] end if block_given? begin yield ctx ensure GPGME::gpgme_release(ctx) end else ctx end end ## # Releases the Ctx instance. Must be called if it was initialized without # a block. # # @example # ctx = GPGME::Ctx.new # # operate on ctx # ctx.release # def release GPGME::gpgme_release(self) end ## # Getters and setters ## # Get the value of the Ctx flag with the given name. # # Allowed flag names may include: # - 'redraw' # - 'full-status' # - 'raw-description' # - 'export-session-key' # - 'override-session-key' # - 'include-key-block' # - 'auto-key-import' # - 'auto-key-retrieve' # - 'request-origin' # - 'no-symkey-cache' # - 'ignore-mdc-error' # - 'auto-key-locate' # - 'trust-model' # - 'extended-edit' # - 'cert-expire' # - 'key-origin' # - 'import-filter' # - 'no-auto-check-trustdb' # # Please consult the GPGPME documentation for more details # def get_ctx_flag(flag_name) GPGME::gpgme_get_ctx_flag(self, flag_name.to_s) end # Set the Ctx flag with the given name # to the given value. def set_ctx_flag(flag_name, val) err = GPGME::gpgme_set_ctx_flag(self, flag_name.to_s, val.to_s) exc = GPGME::error_to_exception(err) raise exc if exc val end # Set the +protocol+ used within this context. See {GPGME::Ctx.new} for # possible values. def protocol=(proto) err = GPGME::gpgme_set_protocol(self, proto) exc = GPGME::error_to_exception(err) raise exc if exc proto end # Return the +protocol+ used within this context. def protocol GPGME::gpgme_get_protocol(self) end # Tell whether the output should be ASCII armored. def armor=(yes) GPGME::gpgme_set_armor(self, yes ? 1 : 0) yes end # Return true if the output is ASCII armored. def armor GPGME::gpgme_get_armor(self) == 1 ? true : false end # This option ignores a MDC integrity protection failure. # It is required to decrypt old messages which did not use an MDC. # It may also be useful if a message is partially garbled, # but it is necessary to get as much data as possible out of that garbled message. # Be aware that a missing or failed MDC can be an indication of an attack. # Use with great caution. def ignore_mdc_error=(yes) GPGME::gpgme_set_ignore_mdc_error(self, yes ? 1 : 0) yes end # Return true if the MDC integrity protection is disabled. def ignore_mdc_error GPGME::gpgme_get_ignore_mdc_error(self) == 1 ? true : false end # Tell whether canonical text mode should be used. def textmode=(yes) GPGME::gpgme_set_textmode(self, yes ? 1 : 0) yes end # Return true if canonical text mode is enabled. def textmode GPGME::gpgme_get_textmode(self) == 1 ? true : false end # Change the default behaviour of the key listing functions. def keylist_mode=(mode) GPGME::gpgme_set_keylist_mode(self, mode) mode end # Return the current key listing mode. def keylist_mode GPGME::gpgme_get_keylist_mode(self) end # Change the default behaviour of the pinentry invocation. def pinentry_mode=(mode) GPGME::gpgme_set_pinentry_mode(self, mode) mode end # Return the current pinentry mode. def pinentry_mode GPGME::gpgme_get_pinentry_mode(self) end # Change the default behaviour of the dirmngr that might require # connections to external services. def offline=(mode) GPGME::gpgme_set_offline(self, mode) mode end # Return the current offline mode. def offline GPGME::gpgme_get_offline(self) end ## # Passphrase and progress callbacks ## # Set the passphrase callback with given hook value. # +passfunc+ should respond to +call+ with 5 arguments. # # * +obj+ the parameter +:passphrase_callback_value+ passed when creating # the {GPGME::Ctx} object. # * +uid_hint+ hint as to what key are we asking the password for. Ex: # # +CFB3294A50C2CFD7 Albert Llop + # # * +passphrase_info+ # * +prev_was_bad+ 0 if it's the first time the password is being asked, # 1 otherwise. # * +fd+ file descriptor where the password must be written too. # # Expects a Method object which can be obtained by the +method+ method # (really..). # # ctx.set_passphrase_callback(MyModule.method(:passfunc)) # # @example this method will simply return +maria+ as password. # def pass_function(obj, uid_hint, passphrase_info, prev_was_bad, fd) # io = IO.for_fd(fd, 'w') # io.puts "maria" # io.flush # end # # @example this will interactively ask for the password # def passfunc(obj, uid_hint, passphrase_info, prev_was_bad, fd) # $stderr.write("Passphrase for #{uid_hint}: ") # $stderr.flush # begin # system('stty -echo') # io = IO.for_fd(fd, 'w') # io.puts(gets) # io.flush # ensure # (0 ... $_.length).each do |i| $_[i] = ?0 end if $_ # system('stty echo') # end # $stderr.puts # end # # Note that this function doesn't work with GnuPG 2.0. You can # use either GnuPG 1.x, which can be installed in parallel with # GnuPG 2.0, or GnuPG 2.1, which has loopback pinentry feature (see # {#pinentry_mode}). def set_passphrase_callback(passfunc, hook_value = nil) GPGME::gpgme_set_passphrase_cb(self, passfunc, hook_value) end alias set_passphrase_cb set_passphrase_callback # Set the progress callback with given hook value. # progfunc should respond to call with 5 arguments. # # def progfunc(hook, what, type, current, total) # $stderr.write("#{what}: #{current}/#{total}\r") # $stderr.flush # end # # ctx.set_progress_callback(method(:progfunc)) # def set_progress_callback(progfunc, hook_value = nil) GPGME::gpgme_set_progress_cb(self, progfunc, hook_value) end alias set_progress_cb set_progress_callback # Set the status callback with given hook value. # +statusfunc+ should respond to +call+ with 3 arguments. # # * +obj+ the parameter +:status_callback_value+ passed when creating # the {GPGME::Ctx} object. # * +keyword+ the name of the status message # * +args+ any arguments for the status message # # def status_function(obj, keyword, args) # $stderr.puts("#{keyword} #{args}") # return 0 # end def set_status_callback(statusfunc, hook_value = nil) GPGME::gpgme_set_status_cb(self, statusfunc, hook_value) end alias set_status_cb set_status_callback ## # Searching and iterating through keys. Used by {GPGME::Key.find} ## # Initiate a key listing operation for given pattern. If +pattern+ is # +nil+, all available keys are returned. If +secret_only<+ is +true+, # only secret keys are returned. # # Used by {GPGME::Ctx#each_key} def keylist_start(pattern = nil, secret_only = false) err = GPGME::gpgme_op_keylist_start(self, pattern, secret_only ? 1 : 0) exc = GPGME::error_to_exception(err) raise exc if exc end # Advance to the next key in the key listing operation. # # Used by {GPGME::Ctx#each_key} def keylist_next rkey = [] err = GPGME::gpgme_op_keylist_next(self, rkey) exc = GPGME::error_to_exception(err) raise exc if exc rkey[0] end # End a pending key list operation. # # Used by {GPGME::Ctx#each_key} def keylist_end err = GPGME::gpgme_op_keylist_end(self) exc = GPGME::error_to_exception(err) raise exc if exc end # Convenient method to iterate over keys. # # If +pattern+ is +nil+, all available keys are returned. If +secret_only+ # is +true+, only secret keys are returned. # # See {GPGME::Key.find} for an example of how to use, or for an easier way # to use. def each_key(pattern = nil, secret_only = false, &block) keylist_start(pattern, secret_only) begin loop { yield keylist_next } rescue EOFError # The last key in the list has already been returned. ensure keylist_end end end alias each_keys each_key # Returns the keys that match the +pattern+, or all if +pattern+ is nil. # Returns only secret keys if +secret_only+ is true. def keys(pattern = nil, secret_only = nil) keys = [] each_key(pattern, secret_only) do |key| keys << key end keys end # Get the key with the +fingerprint+. # If +secret+ is +true+, secret key is returned. def get_key(fingerprint, secret = false) rkey = [] err = GPGME::gpgme_get_key(self, fingerprint, rkey, secret ? 1 : 0) exc = GPGME::error_to_exception(err) raise exc if exc rkey[0] end ## # Import/export and generation/deletion of keys ## # Generate a new key pair. # +parms+ is a string which looks like # # # Key-Type: DSA # Key-Length: 1024 # Subkey-Type: ELG-E # Subkey-Length: 1024 # Name-Real: Joe Tester # Name-Comment: with stupid passphrase # Name-Email: joe@foo.bar # Expire-Date: 0 # Passphrase: abc # # # If +pubkey+ and +seckey+ are both set to +nil+, it stores the generated # key pair into your key ring. def generate_key(parms, pubkey = nil, seckey = nil) err = GPGME::gpgme_op_genkey(self, parms, pubkey, seckey) exc = GPGME::error_to_exception(err) raise exc if exc end alias genkey generate_key # Extract the public keys that match the +recipients+. Returns a # {GPGME::Data} object which is not rewinded (should do +seek(0)+ # before reading). # # Private keys cannot be exported due to GPGME restrictions. # # If passed, the key will be exported to +keydata+, which must be # a {GPGME::Data} object. def export_keys(recipients, keydata = Data.new, mode=0) err = GPGME::gpgme_op_export(self, recipients, mode, keydata) exc = GPGME::error_to_exception(err) raise exc if exc keydata end alias export export_keys # Add the keys in the data buffer to the key ring. def import_keys(keydata) err = GPGME::gpgme_op_import(self, keydata) exc = GPGME::error_to_exception(err) raise exc if exc end alias import import_keys def import_result GPGME::gpgme_op_import_result(self) end # Delete the key from the key ring. # If allow_secret is false, only public keys are deleted, # otherwise secret keys are deleted as well. # If force is true, the confirmation dialog will not be displayed. def delete_key(key, allow_secret = false, force = false) err = nil if defined?(GPGME::gpgme_op_delete_ext) flag = 0 flag ^= GPGME::DELETE_ALLOW_SECRET if allow_secret flag ^= GPGME::DELETE_FORCE if force err = GPGME::gpgme_op_delete_ext(self, key, flag) else err = GPGME::gpgme_op_delete(self, key, allow_secret ? 1 : 0) end exc = GPGME::error_to_exception(err) raise exc if exc end alias delete delete_key # Edit attributes of the key in the local key ring. def edit_key(key, editfunc, hook_value = nil, out = Data.new) err = GPGME::gpgme_op_edit(self, key, editfunc, hook_value, out) exc = GPGME::error_to_exception(err) raise exc if exc end alias edit edit_key # Edit attributes of the key on the card. def edit_card_key(key, editfunc, hook_value = nil, out = Data.new) err = GPGME::gpgme_op_card_edit(self, key, editfunc, hook_value, out) exc = GPGME::error_to_exception(err) raise exc if exc end alias edit_card edit_card_key alias card_edit edit_card_key ## # Crypto operations ## # Decrypt the ciphertext and return the plaintext. def decrypt(cipher, plain = Data.new) err = GPGME::gpgme_op_decrypt(self, cipher, plain) exc = GPGME::error_to_exception(err) raise exc if exc plain end def decrypt_verify(cipher, plain = Data.new) err = GPGME::gpgme_op_decrypt_verify(self, cipher, plain) exc = GPGME::error_to_exception(err) raise exc if exc plain end def decrypt_result GPGME::gpgme_op_decrypt_result(self) end # Verify that the signature in the data object is a valid signature. def verify(sig, signed_text = nil, plain = Data.new) err = GPGME::gpgme_op_verify(self, sig, signed_text, plain) exc = GPGME::error_to_exception(err) raise exc if exc plain end def verify_result GPGME::gpgme_op_verify_result(self) end # Remove the list of signers from this object. def clear_signers GPGME::gpgme_signers_clear(self) end # Add _keys_ to the list of signers. def add_signer(*keys) keys.each do |key| err = GPGME::gpgme_signers_add(self, key) exc = GPGME::error_to_exception(err) raise exc if exc end end # Create a signature for the text. # +plain+ is a data object which contains the text. # +sig+ is a data object where the generated signature is stored. def sign(plain, sig = Data.new, mode = GPGME::SIG_MODE_NORMAL) err = GPGME::gpgme_op_sign(self, plain, sig, mode) exc = GPGME::error_to_exception(err) raise exc if exc sig end def sign_result GPGME::gpgme_op_sign_result(self) end # Encrypt the plaintext in the data object for the recipients and # return the ciphertext. def encrypt(recp, plain, cipher = Data.new, flags = 0) err = GPGME::gpgme_op_encrypt(self, recp, flags, plain, cipher) exc = GPGME::error_to_exception(err) raise exc if exc cipher end def encrypt_result GPGME::gpgme_op_encrypt_result(self) end def encrypt_sign(recp, plain, cipher = Data.new, flags = 0) err = GPGME::gpgme_op_encrypt_sign(self, recp, flags, plain, cipher) exc = GPGME::error_to_exception(err) raise exc if exc cipher end def spawn(file, argv, datain, dataout, dataerr, flags = 0) err = GPGME::gpgme_op_spawn(self, file, argv, datain, dataout, dataerr, flags) exc = GPGME::error_to_exception(err) raise exc if exc end # Generate cryptographically strong random bytes. # Available since GPGME 2.0.0. # # @param [Integer] size Number of bytes to generate # @param [Integer] mode Random generation mode (RANDOM_MODE_NORMAL or RANDOM_MODE_ZBASE32) # @return [String] Random bytes as a binary string def random_bytes(size, mode = GPGME::RANDOM_MODE_NORMAL) result = GPGME::gpgme_op_random_bytes(self, size, mode) if result.is_a?(String) result else exc = GPGME::error_to_exception(result) raise exc if exc result end end # Generate a cryptographically strong random unsigned integer value. # Available since GPGME 2.0.0. # # @param [Integer] limit Upper limit for the random value (exclusive) # @return [Integer] Random unsigned integer value in range [0, limit) def random_value(limit) result = GPGME::gpgme_op_random_value(self, limit) if result.is_a?(Integer) && result >= 0 result else exc = GPGME::error_to_exception(result) raise exc if exc result end end def inspect "#<#{self.class} protocol=#{PROTOCOL_NAMES[protocol] || protocol}, \ armor=#{armor}, textmode=#{textmode}, \ keylist_mode=#{KEYLIST_MODE_NAMES[keylist_mode]}>" end private def self.pass_function(pass, uid_hint, passphrase_info, prev_was_bad, fd) io = IO.for_fd(fd, 'w') io.autoclose = false io.puts pass io.flush end end end ruby-gpgme-2.0.25/lib/gpgme/data.rb000066400000000000000000000140331504102461500167600ustar00rootroot00000000000000module GPGME ## # A class whose purpose is to unify the way we work with the data (both input # and output). Most of the calls expect instances of this class, or will try # to create one from your parameters. # # Read the {#read}, {#write} and {#seek} methods for the most commonly used # methods. class Data BLOCK_SIZE = 4096 class << self ## # We implement +self.new+ instead of initialize because objects are actually # instantiated through the C API with stuff like +gpgme_data_new+. # # We try to create a {GPGME::Data} smartly depending on the object passed, and if # another {GPGME::Data} object is passed, it just returns it, so when in # doubt, you can always pass a {GPGME::Data} object. # # @example empty # data = GPGME::Data.new # data.write("stuff") # # @example from a string # data = GPGME::Data.new("From a string") # # @example from a file # data = GPGME::Data.new(File.open("secure.pass")) # # @example from a file descriptor # data = GPGME::Data.new(0) # Standard input # data = GPGME::Data.new(1) # Standard output # # file = File.open("secure.pass") # data = GPGME::Data.new(file.fileno) # file descriptor # def new(object = nil) if object.nil? empty! elsif object.is_a?(Data) object elsif object.is_a?(Integer) from_fd(object) elsif object.respond_to? :to_str from_str(object.to_str) elsif object.respond_to? :to_io from_io(object.to_io) elsif object.respond_to? :open from_io(object.open) elsif defined?(StringIO) and object.is_a?(StringIO) from_io(object) end end # Create a new instance with an empty buffer. def empty! rdh = [] err = GPGME::gpgme_data_new(rdh) exc = GPGME::error_to_exception(err) raise exc if exc rdh.first end # Create a new instance with internal buffer. def from_str(string) rdh = [] err = GPGME::gpgme_data_new_from_mem(rdh, string, string.bytesize) exc = GPGME::error_to_exception(err) raise exc if exc rdh.first end # Create a new instance associated with a given IO. def from_io(io) from_callbacks(IOCallbacks.new(io)) end # Create a new instance from the specified file descriptor. def from_fd(fd) rdh = [] err = GPGME::gpgme_data_new_from_fd(rdh, fd) exc = GPGME::error_to_exception(err) raise exc if exc rdh.first end # Create a new instance from the specified callbacks. def from_callbacks(callbacks, hook_value = nil) rdh = [] err = GPGME::gpgme_data_new_from_cbs(rdh, callbacks, hook_value) exc = GPGME::error_to_exception(err) raise exc if exc rdh.first end end # class << self # Read at most +length+ bytes from the data object, or to the end # of file if +length+ is omitted or is +nil+. # # @example # data = GPGME::Data.new("From a string") # data.read # => "From a string" # # @example # data = GPGME::Data.new("From a string") # data.read(4) # => "From" # def read(length = nil) if length GPGME::gpgme_data_read(self, length) else buf = String.new loop do s = GPGME::gpgme_data_read(self, BLOCK_SIZE) break unless s buf << s end buf end end ## # Seek to a given +offset+ in the data object according to the # value of +whence+. # # @example going to the beginning of the buffer after writing something # data = GPGME::Data.new("Some data") # data.read # => "Some data" # data.read # => "" # data.seek 0 # data.read # => "Some data" # def seek(offset, whence = IO::SEEK_SET) GPGME::gpgme_data_seek(self, offset, IO::SEEK_SET) end ## # Writes +length+ bytes from +buffer+ into the data object. # Writes the full buffer if no length passed. # # @example # data = GPGME::Data.new # data.write "hola" # data.seek 0 # data.read # => "hola" # # @example # data = GPGME::Data.new # data.write "hola", 2 # data.seek 0 # data.read # => "ho" # def write(buffer, length = buffer.length) GPGME::gpgme_data_write(self, buffer, length) end ## # Return the encoding of the underlying data. def encoding GPGME::gpgme_data_get_encoding(self) end ## # Sets the encoding for this buffer. Accepts only integer values 0 to 7: # # 0 = GPGME_DATA_ENCODING_NONE (Not specified) # 1 = GPGME_DATA_ENCODING_BINARY # 2 = GPGME_DATA_ENCODING_BASE64 # 3 = GPGME_DATA_ENCODING_ARMOR (Either PEM or OpenPGP Armor) # 4 = GPGME_DATA_ENCODING_URL (LF delimited URL list) # 5 = GPGME_DATA_ENCODING_URLESC (Ditto, but percent escaped) # 6 = GPGME_DATA_ENCODING_URL0 (Nul delimited URL list) # 7 = GPGME_DATA_ENCODING_MIME (Data is a MIME part) # # @raise [GPGME::Error::InvalidValue] if the value isn't accepted. def encoding=(encoding) err = GPGME::gpgme_data_set_encoding(self, encoding) exc = GPGME::error_to_exception(err) raise exc if exc encoding end ## # Return the file name of the underlying data. def file_name GPGME::gpgme_data_get_file_name(self) end ## # Sets the file name for this buffer. # # @raise [GPGME::Error::InvalidValue] if the value isn't accepted. def file_name=(file_name) err = GPGME::gpgme_data_set_file_name(self, file_name) exc = GPGME::error_to_exception(err) raise exc if exc file_name end ## # Return the entire content of the data object as string. def to_s pos = seek(0, IO::SEEK_CUR) begin seek(0) read ensure seek(pos) end end end end ruby-gpgme-2.0.25/lib/gpgme/engine.rb000066400000000000000000000046561504102461500173260ustar00rootroot00000000000000module GPGME ## # Convenience methods to check different aspects of the gpg system # installation. module Engine class << self ## # Verify that the engine implementing the protocol +proto+ is installed in # the system. Can be one of +PROTOCOL_OpenPGP+ or +PROTOCOL_CMS+. # # @return [Boolean] true if the engine is installed. # # @example # GPGME::Engine.check_version(GPGME::PROTOCOL_OpenPGP) # => true # def check_version(proto) err = GPGME::gpgme_engine_check_version(proto) exc = GPGME::error_to_exception(err) !exc end ## # Return an array of {GPGME::EngineInfo} structures of enabled engines. # # @example # GPGME::Engine.info.first # # => # # def info rinfo = [] GPGME::gpgme_get_engine_info(rinfo) rinfo end ## # Change the default configuration of the crypto engine implementing # protocol +proto+. # # @param proto # Can be one of +PROTOCOL_OpenPGP+ or +PROTOCOL_CMS+. # # @param file_name # The file name of the executable program implementing the protocol. # # @param home_dir # The directory name of the configuration directory. # # @example # GPGME::Engine.set_info(GPGME::PROTOCOL_OpenPGP, '/usr/local/bin/gpg', home_dir) # def set_info(proto, file_name, home_dir) err = GPGME::gpgme_set_engine_info(proto, file_name, home_dir) exc = GPGME::error_to_exception(err) raise exc if exc end ## # Sets the home dir for the configuration options. This way one could, # for example, load the keys from a customized keychain. # # @example # GPGME::Engine.home_dir = '/tmp' # def home_dir=(home_dir) current = info.first set_info current.protocol, current.file_name, home_dir end ## # Return the default configuration. # # @example # GPGME::Engine.dirinfo('homedir') # # => '/home/user/.gnupg" # def dirinfo(what) GPGME::gpgme_get_dirinfo(what) end end # class << self end # class Engine end # module GPGME ruby-gpgme-2.0.25/lib/gpgme/error.rb000066400000000000000000000035461504102461500172070ustar00rootroot00000000000000module GPGME class Error < StandardError def initialize(error) @error = error end attr_reader :error # Return the error code. # # The error code indicates the type of an error, or the reason why # an operation failed. def code GPGME::gpgme_err_code(@error) end # Return the error source. # # The error source has not a precisely defined meaning. Sometimes # it is the place where the error happened, sometimes it is the # place where an error was encoded into an error value. Usually # the error source will give an indication to where to look for # the problem. This is not always true, but it is attempted to # achieve this goal. def source GPGME::gpgme_err_source(@error) end # Return a description of the error code. def message GPGME::gpgme_strerror(@error) end class General < self; end class InvalidValue < self; end class UnusablePublicKey < self attr_accessor :keys end class UnusableSecretKey < self attr_accessor :keys end class NoData < self; end class Conflict < self; end class NotImplemented < self; end class DecryptFailed < self; end class BadPassphrase < self; end class Canceled < self; end class InvalidEngine < self; end class AmbiguousName < self; end class WrongKeyUsage < self attr_accessor :key_usage end class CertificateRevoked < self; end class CertificateExpired < self; end class NoCRLKnown < self; end class NoPolicyMatch < self; end class NoSecretKey < self; end class MissingCertificate < self; end class BadCertificateChain < self; end class UnsupportedAlgorithm < self attr_accessor :algorithm end class BadSignature < self; end class NoPublicKey < self; end class InvalidVersion < self; end end end ruby-gpgme-2.0.25/lib/gpgme/io_callbacks.rb000066400000000000000000000005751504102461500204630ustar00rootroot00000000000000module GPGME class IOCallbacks def initialize(io) @io = io end def read(hook, length) @io.read(length) end def write(hook, buffer, length) @io.write(buffer[0 .. length]) end def seek(hook, offset, whence) return @io.pos if offset == 0 && whence == IO::SEEK_CUR @io.seek(offset, whence) @io.pos end end end ruby-gpgme-2.0.25/lib/gpgme/key.rb000066400000000000000000000165141504102461500166450ustar00rootroot00000000000000module GPGME ## # A ruby representation of a public or a secret key. # # Every key has two instances of {GPGME::SubKey}, accessible through # {.subkeys}, and with a {.primary_subkey} where most attributes are # derived from, like the +fingerprint+. # # Also, every key has at least a {GPGME::UserID}, accessible through # {.uids}, with a {.primary_uid}, where other attributes are derived from, # like +email+ or +name+ class Key private_class_method :new attr_reader :keylist_mode, :protocol, :owner_trust attr_reader :issuer_serial, :issuer_name, :chain_id attr_reader :subkeys, :uids include KeyCommon class << self ## # Returns an array of {GPGME::Key} objects that match the parameters. # * +secret+ set to +:secret+ to get only secret keys, or to +:public+ to # get only public keys. # * +keys_or_names+ an array or an item that can be either {GPGME::Key} # elements, or string identifiers like the email or the sha. Leave # blank to get all. # * +purposes+ get only keys that are usable for any of these purposes. # See {GPGME::Key} for a list of possible key capabilities. # # @example # GPGME::Key.find :secret # => first secret key found # # @example # GPGME::Key.find(:public, "mrsimo@example.com") # # => return only public keys that match mrsimo@example.com # # @example # GPGME::Key.find(:public, "mrsimo@example.com", :sign) # # => return the public keys that match mrsimo@example.com and are # # capable of signing def find(secret, keys_or_names = nil, purposes = []) secret = (secret == :secret) keys_or_names = [""] if keys_or_names.nil? || (keys_or_names.is_a?(Array) && keys_or_names.empty?) keys_or_names = [keys_or_names].flatten purposes = [purposes].flatten.compact.uniq keys = [] keys_or_names.each do |key_or_name| case key_or_name when Key then keys << key_or_name when String GPGME::Ctx.new do |ctx| keys += ctx.keys(key_or_name, secret).select do |k| k.usable_for?(purposes) end end end end keys end def get(fingerprint) Ctx.new do |ctx| ctx.get_key(fingerprint) end end # Exports public keys # # GPGME::Key.export pattern, options # # Private keys cannot be exported due to GPGME restrictions. # # @param pattern # Identifier of the key to export. # # @param [Hash] options # * +:output+ specify where to write the key to. It will be converted to # a {GPGME::Data}, so it could be a file, for example. # * +:minimal+ set to true to let the export mode be 'minimal'. # * Any other option accepted by {GPGME::Ctx.new} # # @return [GPGME::Data] the exported key. # # @example # key = GPGME::Key.export "mrsimo@example.com" # # @example writing to a file # out = File.open("my.key", "w+") # GPGME::Key.export "mrsimo@example.com", :output => out # def export(pattern, options = {}) output = Data.new(options[:output]) if options.delete(:minimal) == true export_mode = 4 else export_mode = 0 end GPGME::Ctx.new(options) do |ctx| ctx.export_keys(pattern, output, export_mode) end output.seek(0) output end # Imports a key # # GPGME::Key.import keydata, options # # @param keydata # The key to import. It will be converted to a {GPGME::Data} object, # so could be a file, for example. # @param options # Any other option accepted by {GPGME::Ctx.new} # # @example # GPGME::Key.import(File.open("my.key")) # def import(keydata, options = {}) GPGME::Ctx.new(options) do |ctx| ctx.import_keys(Data.new(keydata)) ctx.import_result end end # Checks if a key is valid def valid?(key) GPGME::Key.import(key).considered == 1 end end ## # Exports this key. Accepts the same options as {GPGME::Ctx.new}, and # +options[:output]+, where you can specify something that can become a # {GPGME::Data}, where the output will go. # # @example # key.export(:armor => true) # # => GPGME::Data you can read with ASCII armored format # # @example # file = File.open("key.asc", "w+") # key.export(:output => file) # # => the key will be written to the file. # def export(options = {}) Key.export self.sha, options end ## # Delete this key. If it's public, and has a secret one it will fail unless # +allow_secret+ is specified as true. Suppress the confirmation dialog, if # +force+ is specified as true. def delete!(allow_secret = false, force = false) GPGME::Ctx.new do |ctx| ctx.delete_key self, allow_secret, force end end ## # Returns true if the key has an expiry date else false def expires? primary_subkey.expires? end ## # Returns the expiry date for this key def expires primary_subkey.expires end ## # Returns true if the key is expired def expired subkeys.any?(&:expired) end def primary_subkey @primary_subkey ||= subkeys.first end ## # Short descriptive value. Can be used to identify the key. def sha primary_subkey.sha end ## # Longer descriptive value. Can be used to identify the key. def fingerprint primary_subkey.fingerprint end ## # Returns the main {GPGME::UserID} for this key. def primary_uid uids.first end ## # Returns the email for this key. def email primary_uid.email end ## # Returns the issuer name for this key. def name primary_uid.name end ## # Returns the issuer comment for this key. def comment primary_uid.comment end def ==(another_key) self.class === another_key and fingerprint == another_key.fingerprint end def inspect sprintf("#<#{self.class} %s %4d%s/%s %s trust=%s, owner_trust=%s, \ capability=%s, subkeys=%s, uids=%s>", primary_subkey.secret? ? 'sec' : 'pub', primary_subkey.length, primary_subkey.pubkey_algo_letter, primary_subkey.fingerprint[-8 .. -1], primary_subkey.timestamp.strftime('%Y-%m-%d'), trust.inspect, VALIDITY_NAMES[@owner_trust].inspect, capability.inspect, subkeys.inspect, uids.inspect) end def to_s primary_subkey = subkeys[0] s = sprintf("%s %4d%s/%s %s\n", primary_subkey.secret? ? 'sec' : 'pub', primary_subkey.length, primary_subkey.pubkey_algo_letter, primary_subkey.fingerprint[-8 .. -1], primary_subkey.timestamp.strftime('%Y-%m-%d')) uids.each do |user_id| s << "uid\t\t#{user_id.name} <#{user_id.email}>\n" end subkeys.each do |subkey| s << subkey.to_s end s end end end ruby-gpgme-2.0.25/lib/gpgme/key_common.rb000066400000000000000000000022411504102461500202050ustar00rootroot00000000000000module GPGME module KeyCommon ## # Returns nil if the trust is valid. # Returns one of +:revoked+, +:expired+, +:disabled+, +:invalid+ def trust return :revoked if @revoked == 1 return :expired if @expired == 1 return :disabled if @disabled == 1 return :invalid if @invalid == 1 end ## # Array of capabilities for this key. It can contain any combination of # +:encrypt+, +:sign+, +:certify+ or +:authenticate+ def capability caps = [] caps << :encrypt if @can_encrypt == 1 caps << :sign if @can_sign == 1 caps << :certify if @can_certify == 1 caps << :authenticate if @can_authenticate == 1 caps end ## # Checks if the key is capable of all of these actions. If empty array # is passed then will return true. # # Returns false if the keys trust has been invalidated. def usable_for?(purposes) unless purposes.kind_of? Array purposes = [purposes] end return false if [:revoked, :expired, :disabled, :invalid].include? trust return (purposes - capability).empty? end def secret? @secret == 1 end end end ruby-gpgme-2.0.25/lib/gpgme/key_sig.rb000066400000000000000000000007641504102461500175070ustar00rootroot00000000000000module GPGME class KeySig private_class_method :new attr_reader :pubkey_algo, :keyid def revoked? @revoked == 1 end def expired? @expired == 1 end def invalid? @invalid == 1 end def exportable? @exportable == 1 end def timestamp Time.at(@timestamp) end def expires Time.at(@expires) end def inspect "#<#{self.class} #{keyid} timestamp=#{timestamp}, expires=#{expires}>" end end end ruby-gpgme-2.0.25/lib/gpgme/misc.rb000066400000000000000000000027271504102461500170110ustar00rootroot00000000000000module GPGME class EngineInfo private_class_method :new attr_reader :protocol, :file_name, :version, :req_version, :home_dir alias required_version req_version end class VerifyResult private_class_method :new attr_reader :signatures end class Recipient private_class_method :new attr_reader :pubkey_algo, :keyid, :status end class DecryptResult private_class_method :new attr_reader :unsupported_algorithm, :wrong_key_usage attr_reader :recipients, :file_name end class SignResult private_class_method :new attr_reader :invalid_signers, :signatures end class EncryptResult private_class_method :new attr_reader :invalid_recipients end class InvalidKey private_class_method :new attr_reader :fpr, :reason alias fingerprint fpr end class NewSignature private_class_method :new attr_reader :type, :pubkey_algo, :hash_algo, :sig_class, :fpr alias fingerprint fpr def timestamp Time.at(@timestamp) end end class ImportStatus private_class_method :new attr_reader :fpr, :result, :status alias fingerprint fpr end class ImportResult private_class_method :new attr_reader :considered, :no_user_id, :imported, :imported_rsa, :unchanged attr_reader :new_user_ids, :new_sub_keys, :new_signatures, :new_revocations attr_reader :secret_read, :secret_imported, :secret_unchanged attr_reader :not_imported, :imports end end ruby-gpgme-2.0.25/lib/gpgme/signature.rb000066400000000000000000000035071504102461500200540ustar00rootroot00000000000000module GPGME class Signature private_class_method :new attr_reader :summary, :fpr, :status, :notations, :wrong_key_usage attr_reader :validity, :validity_reason attr_reader :pka_trust, :pka_address alias fingerprint fpr ## # Returns true if the signature is correct def valid? status_code == GPGME::GPG_ERR_NO_ERROR end def expired_signature? status_code == GPGME::GPG_ERR_SIG_EXPIRED end def expired_key? status_code == GPGME::GPG_ERR_KEY_EXPIRED end def revoked_key? status_code == GPGME::GPG_ERR_CERT_REVOKED end def bad? status_code == GPGME::GPG_ERR_BAD_SIGNATURE end def no_key? status_code == GPGME::GPG_ERR_NO_PUBKEY end def status_code GPGME::gpgme_err_code(status) end def from @from ||= begin Ctx.new do |ctx| if from_key = ctx.get_key(fingerprint) "#{from_key.subkeys[0].keyid} #{from_key.uids[0].uid}" else fingerprint end end end end def key @key ||= begin Ctx.new do |ctx| @key = ctx.get_key(fingerprint) end end end def timestamp Time.at(@timestamp) end def exp_timestamp Time.at(@exp_timestamp) end def to_s case status_code when GPGME::GPG_ERR_NO_ERROR "Good signature from #{from}" when GPGME::GPG_ERR_SIG_EXPIRED "Expired signature from #{from}" when GPGME::GPG_ERR_KEY_EXPIRED "Signature made from expired key #{from}" when GPGME::GPG_ERR_CERT_REVOKED "Signature made from revoked key #{from}" when GPGME::GPG_ERR_BAD_SIGNATURE "Bad signature from #{from}" when GPGME::GPG_ERR_NO_PUBKEY "No public key for #{from}" end end end end ruby-gpgme-2.0.25/lib/gpgme/sub_key.rb000066400000000000000000000026151504102461500175130ustar00rootroot00000000000000module GPGME class SubKey private_class_method :new attr_reader :pubkey_algo, :length, :keyid, :fpr alias fingerprint fpr include KeyCommon def timestamp case @timestamp when -1, 0 # FIXME: add a special value for invalid timestamp, or throw an error return nil else return Time.at(@timestamp) end end def expires? @expires != 0 end def expires expires? ? Time.at(@expires) : nil end def expired expires? && @expires < Time.now.to_i end def sha (@fpr || @keyid)[-8 .. -1] end PUBKEY_ALGO_LETTERS = { PK_RSA => "R", PK_ELG_E => "g", PK_ELG => "G", PK_DSA => "D" } def pubkey_algo_letter PUBKEY_ALGO_LETTERS[@pubkey_algo] || "?" end def inspect sprintf("#<#{self.class} %s %4d%s/%s %s trust=%s, capability=%s>", secret? ? 'ssc' : 'sub', length, pubkey_algo_letter, (@fpr || @keyid)[-8 .. -1], timestamp.strftime('%Y-%m-%d'), trust.inspect, capability.inspect) end def to_s sprintf("%s %4d%s/%s %s\n", secret? ? 'ssc' : 'sub', length, pubkey_algo_letter, (@fpr || @keyid)[-8 .. -1], timestamp.strftime('%Y-%m-%d')) end end end ruby-gpgme-2.0.25/lib/gpgme/user_id.rb000066400000000000000000000005651504102461500175060ustar00rootroot00000000000000module GPGME class UserID private_class_method :new attr_reader :validity, :uid, :name, :comment, :email, :signatures def revoked? @revoked == 1 end def invalid? @invalid == 1 end def inspect "#<#{self.class} #{name} <#{email}> \ validity=#{VALIDITY_NAMES[validity]}, signatures=#{signatures.inspect}>" end end end ruby-gpgme-2.0.25/lib/gpgme/version.rb000066400000000000000000000001321504102461500175270ustar00rootroot00000000000000module GPGME # The version of GPGME ruby binding you are using VERSION = "2.0.25" end ruby-gpgme-2.0.25/ports/000077500000000000000000000000001504102461500150235ustar00rootroot00000000000000ruby-gpgme-2.0.25/ports/archives/000077500000000000000000000000001504102461500166275ustar00rootroot00000000000000ruby-gpgme-2.0.25/ports/archives/gpgme-2.0.0.tar.bz2000066400000000000000000052167471504102461500216130ustar00rootroot00000000000000BZh91AY&SYp%^˪ fc d"Dw}}GF>ԢCG9$)l5vNƻ5|g}^ٯ >y㯟kRy,Ftj>=խٸ*EJ>/ ڷ}jxҝ'a|\=m٪Xu{S緽u}}3.m7[-AZwލoEs{{ʛ흗_Wzne h5NtP];7Q@:Z¤$ l٧\-}XK}ޤٹv>uA]gW6.6NcXnz=;bZ:ٔDuнӜ;NzA c@PE+-v7CmT` v[:sGWp٤+QλJEh}/n]*Tw3=hnCtfN=ѻZL:w[4mwl @P1,#Vi3J|:IϽxnUw9Zn5mz(c5P(%yZMy_7r`) [4"c7v뚝z*E( , n@R T uM=|yUZ}Z{=;ޚnckX6j+54@5ۮۯNQsu۹sWюw{47W}t4lݝ]v}y{;V[m#kbY8ס+Zrٞ_vk:={I}ύϩ)j[ ShWϲޝu|v.wWٞ=p4˧w6>kuXZvnicz}ι=ܧw.3ZZ/Oc˰Ԡ.;{mKq[RV=wXL9PwAM\]nǭer::hnݩJ׸޵@65adﻵhi{נST;bs]Z޺wK[t*;h$`vI*W6 ڀ.<4(:knW6yw1Xwl'w1N;^+:7Zi{zfgoF9@kں*<vUq@*&Zfv*AC$ʵ',rӗ4PҨvwg5;[4뻏-P(+3guW, N82gyGl5]w:g Ucwj_{zQl ۯz@s6kd鹜73ҝہN. 2ӻSOF׻zPJ-2=5JSv-׻A{PPم*"{q{WaTj(6tIvrk[/=UEwx  vPws $kKҋݬӯ{ף`,h4!@Znϧ>%k^Lܥ)޵uAIzn@^1>WI5J*s=x^]5[bm#f1 @(SryA}B:T"!kk<-PRRa  [x}u7|0n\K^]b7oEmQu2U#\-v4/σO7hKPh+[5VQAJ@(%̞o{^p=Ty+uTsy3l&wX'mJM@<6 y eQkvӈQwpru(vEq\Dw/v; ;Jvڛl SzZE /;cs:su uܽc 2kD=4h[a@^ 4hdBeO2=MO @A)A!Ќd #@6hFj42  @@&M S )*x H*~Lz~TS=(hb2 ) 4i7{ ThfOS4H!1ЌѠjm TSƆ~SM4 =A& @ &dhLM40&ҧBڧOQmL4Ϝ~}㭯?G?rSE̓6ri?Y>R?)Uص&YH]^SGkX^[̆v,I"hRhACQf(44\0=Aؐ@9 O%@e E8AӜ *'B$yCW7??l@ZH骪%G.$| C D8?k|ꪪN-F!ƪ  dKΎow2ⱒbGn?Fb5=9,!Ŀ)|:r݌W^@Jp!^rN3ѝނ=j' Zp<;Lt2n1MT.r8oO:=9Q~H㴃eR5ACyIAQ3dqQTe-.ł,=36-A⦧6Lg:_e>,:K~wؙRjhQ(LBwCE&O?$6raAmr AV{)b,8%&REU%5e}|q)-Dኚ`M4`(Hh&OPsa cXo4ޔԲA"zy{=n(y'>VnK~?[CW&Bd҇{qٕ7/{!dNlޜj_={#o-1 b'j0x,GO-@3( [iO;fwkH孺!7>'ǎ孎~fK:qVIf- T aE!8G;(_2 dp?7Ip2GX0FT}AyoOgB@ ,=?˲JB!)/绿=^uD m.ue8e#raєZf^lZ-X_1bmi }dE[a # fE˖Tx82k,-<1S^b>#PU*Z<yh yD3 A@.CPP)N]s'ӓ/+(uۤ1xH|2KҘN.fGÈ$"mAq#8ϐh Go!B+1orWGQO!(<o?GOCPA?#OmG%M&J<:6;4ӂywomI0*[WwzmPгrQ84{X7ߔ^#`$A=ҿ?HtarؽF t@Dx0Bbc0RL9T!oil|2aՓI,H}bўjW(\?* :9T ب]\0ݹEdкʀ_†J}^e!]`_}Hi(.(̾V$_"i,9Y7L+ 3}V9N|+%+"G.x:"lG>j)Z_ j$*D((j%=5SQpxSNm%є*@Rx,;ht\fiاJ5΅J[j0 GqﮪrHa0z3òguFJC)f_uMksGKHrsoJf&"-iF#yB$S2HHPxki>~ls÷3B\퐐y\jG. #(}Q%Xb9`5WSFtr2Qc|RRĔ(z?=|=:IB y7<5f[PԯZ]wOQZ:0򇮱"UMpU]27)O#ǃ's(RK=MX.ЩoRA94Y4GqYoMH4@c~I\uk3ٵʛ"w桟>w ܳ3>;j;ux~P$8vn $c9:nIDfr{N𽃻]MQޜÿoW gIGFRx7YyWS2~7;J:7- Z<_Xػ7uJ[Yﯔ"ߝߏ% ĄQ79  !"OZr )M0  )2l~0Mrb5 "-dM| 4%yD ڥ! H|?d=:Jo :baϔU%Aoh(&1\nddwΒG S #%I9? YyO=2ȸ5Cη֫3퟊:b𞑁jt&)*UǻW.cߧ'}n%\z32ڌԇ{ XJtv5*/5:-)px/IPNp[olc JCx˝TK/ 5ȏ} x֣=?γu{gƑ ќJbaY+H+~"KѵςW^dfq5q v״ z$%f!V|Ua)fy9bZCPsq u&41ҼEF~z&zⰑ\+ԼHo|_ +L8$ͭ\X]3ΙMUw`6X!<7*}' 3! t\SzmpC E'(hk۲9~nDڊTs7 \3*%sh!y Š v8{ڡ->. R!8&(! (MQgG_ު1ÛI8gPW<_{HBݟ}s!ps^?|s1"*'@@f!1-;-z|DDrn%@`=`sƽhӼҷ|[K_} V _k4dtBvAX @2srO bpd&JQBppFKj0\Ux7[ZB\:`q=|̘1)Z~Vbn9zoaY9e5誸[1m0MxM0WmR]zz5E;O>ΰV.k\~{~lJ7WIJ lN|w<)kATZn:ߍDƉ K(fcyRNDn O p)@z};ygIjI'#DЃP㿜O&;vG>1ZJ' =9d1G49D+ 0򫛓 ,ݰNF ').Y./ҝo 6AAoBв@oU‹(c-Kj sHC S߶f>znUGUnL4Ȍad%(oB"kȠHe.V۳~ ,0 .O#K=_6q<v@" ^ZΖ++2esJv|sR㺰r?9׼lv;,"r~PyVxh] NOGs_ݞqJ $B GGOɉ!| `JhR) Z*RiJB)i $m ȩvtϧ1Qety#9E]^0ԮeE$@| Ԭs 0JS3\ҬPd|# >?7?2/!ƶfzˇROgfA~T:fb6UD|6,az-ed3P!?z}>L-R_;rzV =.UfX8=X`i /A`DznY/T\עNl5j,c 8=TQ\NՇ[FJޤ3Ŧ.>©8<c%N5XRl6 ? tHwmr+#jEy$1쮂w*+q xEy4&@LH69~A;>wb= č@+B jlrLJ߱^a3?6LV14Vޛ)O=֝JCۓ8Vax$q(J恾(npVW+6(m\#xVf}{?arB' w›-ͯD9R*x(JNj$,Ns D]S֑Bx,YPǡ#KR|{o \LvS"^.۴c(-*F(XAK K. *ڊ 5_0Bb+BELt@!LXZ OqMw"9<#hעT(^4zqDfP6KwBNN'OJzΨ*/e5*dU:Pws+uޔ-C7* p.q#u%7 6ᗓxgvwkSq)؊qbۘ4-e@Jɚʱ~[R)ʠ<-ŕ6WDC+&wos8D;'I1 $ |q(SG pi'`VM6>,:e:q1!F{E$ʄ_p~"@jRE$&UۅC|1K̥ YψԳ{q{q6JVub ?(LERMARL j RA%-,TQHQ@RL[e)J;k[ǕU#ѯoɩ'V]#`MTLYQxl%| }2S̓Ĭ' 4cM%9QE<&&ŗmHTdQNLJP%|oכP% $DU4EUCPZԋU a$>|[`J4Hz$w@1{P DeA#ǹN|| I>Kgޙޚ#Ý[dތh7jik؟G5؀|nd ;u=b/!uqvpΈ׿oV[Է`W}IVzE5UTLGy>WFRJ~KhúX!⿌d;p<ށ6󷵪la Ȓ(~٥u$<0]:jR|;[t0͚|ߢguCr>$1"mB&k@0ȁEi9۾H"Li;ȠI{xA:O/ V(^¾-MHgERZ<6uesnOՐ1Ưפh0=_q}]'v|hpׯ)}{\$e AeJdѕO-ɰ҃>?ŭ\pW~e^'  S@ CpUM5xߗO{vGX/a԰iH3epV$=ޞ:\c0VoVnEZ%L` brBWM8AQxÒA5NW<1<Tvq& 'RC+/_FnO`g"xdEX*(a$f V"(" CexxnCalQEߐ5ReТ¿S> 8xLOwEwёHmUFu⢧R}W]*(eO o5q(B)F&;]wT]n; ]m*TaYD騴@ !Ҋ#NN]ˆz;lTNtŇԮ?|n2##A`@bxc#~$81 ,$ H2ū(rjOM @@}<;cooF>O-+s+@fYJYb!r¥?+t g}UqLݘ,=Td%JNpW+yJKFlWEe*5EVpU0pY !o%d#ӭHcMc\=\0m[_%NHYkCf~ufٶk^L}5 )"鍶@Vi155|0ѐ}'ɊFi!+9@9{Tul}\s"DWxCkeߞj"%ׇ2v%<ӿ.,K(Bm+J W[9Tmό~%|?o D^jKӣisNusv,Z bKY $>gp/AS?KgOAW쇈W׍cDu3u?<5 &8-i*ɑ~eBfQ@2'r\'O:ѕc?)0|^1obF~|uK}W/}4*8Bl&h2vɟ.r˙rC_Ip]Eo:5y܃ fCPZIE]{zGGiz^y]!f3c]SvAH8F!DIi٣J\-Q`D#_zGL +!9g Űa73BU r|r)ݛ"ȻUdX|ZPp/ paԷ^:₋]'n1:8}ӃugPzngD&S_?BhLҏAZ5s~vKې7[iQӜq'Tλ%s/W&HhA IFvK"H9\3[sG#hNMԺٮzDQʢM6!C) Im[NMn `+UPK$U㰀o( Ckg" 3jA/@};  SC &dž0V!^ s.n=+B}q"NGK^akX^4@]uKzE~t (એ͢6[*ͥt%46JZ>̳z++;{m\'14e/[g8Ea"uR@ӻI|,Ɣ~'܉wo2E]yrQ'}Ys؝|GGpr1v%r i@VG*+EDa.UQ*u^*͜ 20Q*G*ZSe~ϝg\cZSqi<@%uZ1& U\`DUg;U0qqv~OW }J ;PG3ڤǧ,5 M y'{XgL/SzQBB W*m,9m2ūrȺXZ"vsf h/|Y!P8XDj$̊œ'yn|/4,sԃ**LEeњV_:ﯬA2)O+JS'I6Sg}"F;jJn3@Sa!pڋGIBb~.LW`ub÷]8ca&]H{QCc;z8'ό=0_AE@&6Q"D'aJҍ p3m؃9XUU ͠j@(v D jC2+?MqziB#@!0*h$$ ?LJ< CBoZy"9P & HaFaD"ԜOO UwH^D He0VWLJ)F )X2L"R=N@"!(J"^lIH( (aNC/\≃K(BG"(FK4IPHA @|)| @2JH&`wa&Tމuí"Ȼ$$@OD*I8S B4C @H$"LL1bQ'K' AlGS!= aDNhJD;iH?) G~P~QK l:[ڬ^JXoLEq,6a|dHpyD*wJ!ՇiPi̧@ja_+@fz[;'(Bh:=c~JT5AA1!p88Wg?aܾA{A a"P 0C8L9ÌF$@P Yp߸mR~4>lDS4RNF(_iZJ'><NS:e?9LWf4Hڳl"iJh=ɪtzJ4 qeP:)O$7d }`/[PLJY` iL牔R:] 4MVlY\J̍2#4YY(*By Bz)c*Uj˦H:4'0ߺ}GCi/b 4؄9׌J"B }V)Ed~":RWh P4fP7HCRJ 1 p! C G qB;K;o\V8T*ԡ3[ ?Oӏ_RGyn4zg}6 H75{Jp&W0 ZE0;) @|$Ɂ0{66̝|n_%21.R&HpbLw뿪kPwwCƔ{qD5Xj*ſEipDo2 e[j+>,rIM ! uHq֜ᑀlvNA( Z"ԚOd(XFn @(egD5xMO(ϛ-bR؊&Eۆ!z"Aw@]eyQ#" r[^sVL"тkG 0uE3+`LE tm"o0jOwSGc;" [L1oIczWK=>L0ήq4@5 1u1lѐ:?V#V誟A`:F{?k0h^dS-YѰqƛ!\&w4=qd @9Wz?듄0Na88u}]۰ACT fRC>GT$zjwFI2m$;8ɺGs:zjIH2flCF}w08sġPDc~"ZG "A*"#oGmUpOXW,eUzBeч v>- g}ƆHWf 6B rD?WbkF#WH DFk>(yA8pC!OjkVP-+dnJnmi0dA-Q[ 8)b2VU M% @  Ӽ|Hz| ~@:~]A7m oU`Gyyu;^^9g:cw0RNQs@#y5eȱljZ7# M2Xߧ@TpsJ+;"?hW Z؃0sBG V{10NbR^"~>[W+Gm}/o}q~]i?o}f㓸>J`.=1ՏZ `ύAHan_xg߈K0.Fv$3>ٰF'YmB}*؇y`wFpzj:ƎLcWysX1OGZwuݵr77ByOO̿@GENtK6X0v\e'@Y: "&= ۑqa*X|Uihk7uŶ*,H!\3]=^B()%1ގm}w`|m~9[>K|{St?p!|%'|g~&xÒT^nӓr$kMȺuV>Eᘹ}KQQSy9lF&//-P-iy|wvJ8_6m,7 7vP*= ]3X!z37CT xZ">:ZGj)a"iHJ lס=jDFWϥE0>%X7G-'yH)y)^pT>Ly .U=of`4@Q (ADڊVM̚biԵI?,2Q636cvvbNi $@VD Nw܌9t3@K^PCyd7X MuBpQ a V>Gyd1^ -@ɣ` L}VONl0v$ >M{v&<r!#8gH` :B@櫙-py ,O`IOU_0,/I~~]׏c|W_9}}p:/2s8,PX>߬^RJ~WNA!"?<| wwO,D|RUȋRJJ:i|Dl%Q{:64-L]21;o/Or>!;1)Pt/E'q`{ߍ7v ÇfcDŔ.툛BA(/΃u{)$P ᅒ^\9O-uo|vSƒhy{ Im{aCP»PϕڣimmR8 ?/#t0T7I0PUT2dž۾("Kn~ ʐTz6:T=|#æ%zΙlB@ǖGFؓ"D" ::w_˧ֳɹb?II >G%`R{C}sdK-"jmO.^.J8P\hD3}yȮrt.µl m]s̸bU >Zm/Ǩa{9~S[v}udܷuܠ۳B|4qQ (A%'g{2ZxRbarDMJ$4i٩Q'nq2)~9ϩɝcrNJq&{Ŏ3tqsDBBIrz'/?sO|.d<9O ѷy:Ͷ΍77pѮס@V]mv^K:;\Fѫ,/E6yαW7[kLNPAaTf&8/r#QPk.tUUd큑ھH]:yD9w0e&.c3tҹR٠_Ur rO>@SqjQt16jјd+^!qr )S%' ʊJ,c3݃ 2/lj^Diޛ6ó3'N.|X8+POq:GGW#0mĻ!,2p&6 c),6 w*q}N EvwANBz1;s?oxNf͐稖f 1WD3w8_ܒdAe||jO(,pl[VK:}DAᢚܚ{a0uA `M7;S-ձT-};i spZT5䎟D`w,Yغ QI؇>XQpf`ANDmqd0WUa Hy d;Q; ViOlqPg- ( d]uYTOCթw<32wI,!)E{+Q>r&9d<}]yƮ@h`!Ĉy;cߍ;UCiSg#V;.)C޽D`էE ^KA>^&?n8tO$5&y}<~8ADAN>VAg`/0 +k^[UZzede 8B/y0 2!N柧UU{^i mry1Vdf\fhf}" "je躏=?FY6.!Gl 1bWFqmq-F,KvoAdPFBe\GPq!ɩUUV**fpIT&W7\U;Sg36AfAf  Ù)UmUGQ7c2*/WM_{ ]X뷀#a10~RPB>|7vY={54bz>!!"ih"K79[5:}T;Al4@"ʪ @Qk@Y!Ň$.]$9ylֻO5O [<޵[=BCzFEy* `=sd'-,#34}T/+)1,ø ;"s Gn>XEpꋧMNx;P% VxBxEQ  #7QD sKM끭nnHЈ #G6 >!Xa4da8&[7b 8i`@SlߪY,| mo1r㎌!M7vnc~xlWo,lP;zISQm I%|Яfbi =o@ eGr|{(گT85>g5*9 2T2fSvDuBë}U3?%hͤ(FQՄ}< 3S0g̞~ Q 6# Ɲ#>'~`ci1f?.C:M Jcn1#NjFiX8>=wJRč!]f*Ur.gkH*iAt#[fNG9 Hj#)k^+k$by;pG:OhTgOL絭-1PnbʩL0aII=?5gZN4(ӗL 8\.7łڛsDpn#ϧ6[[oYdX)|[}D3$ĪzsC ^ x\>u0]Zh!"J! ޙք)((AA4{ޓ>Z&*Sƹ[)hL}>sѼ!ox~X|N`9>M_+/WA}qPzy: !322M%D;0u:"͞w(TUjϺ%6ƿWw{$!v}~oxkӭu J,=߱B2 qm@N'LX8Ҕ~ _<dKBBMXi`qRX (*i݋cl|3=S /S>SKԅ0DX( Ex??ٳbv9QZ yip`I ՋqLSl9P:z͵-Eji)0@v8g}{Q8nkw-!h7.w$!xYwA<]`nD _kҀ?rJS~onE F y7͕@2^ 6! mI `X:\Ƿ7W\q1~` oFH?K!q M/c%@jr-@ȽQ'sԐix@$&!q&Ym3:9w@~pٳYfpۮҔA# JH̍ÆYmg3r^i2g JU^`9/'< )WЦ|l^pЈ}&``)0-nƫك3K1Pe|X;,-2"NޞhhH OL;|}se7BkGIк0.~a1>*t=^s |(I#' rCd1aCj %zT ƈ2G92UܩbH<VVn74=?8Xsriܰ0T6K)((d=/u 7.G'F}!͎K7`NPq5#ax2@XPqDF*&E1(uׄ'?gTs*`siJ~;ySsի(qDYN(PTT~IS{Nưl3Eǜ&$tV=[qs1h"F}.= [YwG(}};DE[}p/.]:Q3Jf1}&A1Gc.pO_HOC}Ugs#ٚǥ`_AE }' pj#i"Tb_INlh12Xr.*KM7jɁ/muڐo-`Pv|P'<|Y>L\g#Ã桝ZHHׇH? ǃD$ :rm{Ll(w϶xߟd2s4z.,5ͻ5í»&_t{=U_6(.(XO\GQ|ߎ3$׫;eS HcG80_yrbϦI>$l7̱Ǵ^=uNϯcFC^~mk$`Hvd' ^>:uj&|wW=pnߤRuy"3*e\6~_,e|?GӗMj_ /Q>~ @+̴~OW`ɀ%8(y@vW+Yйg][i:h@YZff=./rp){&{9([܍TxpK8K=8_tuWHHkoy[BT\VqCfM#(fVNL౪_$ajzO]y3m5:Dp}{ xˉ 3%02LنͻI^ʌLZr U\51Ni'%Yɽe虢,մPQI+C3`G V'6O5ԯřݔwtV~+;0QO}a5Мt4?uZ7DIѩR!lجqhA~f3̍ 64-lEDqOj=XvONnv*-ݸ: #Hn[=ӓg#H^!;aʳfwbJk= xOX̏=CPuMۥWjԤ)q b9V7vd$vs'>PmYB tN[f̵~$Ox* :O&椗5:'a:i4Т6ğ톴FwOvgJ/$[l`}3pϘVKlz/1Y1hff;lK2o d0- fãG}tONMow.u Nf}\&b^֩d%z?s{Qm!n&{!c4&)-.wEb:\7 7rf1͚x2'-9~وˬoᑌfGq*2wC3sԇ-F$zykvmL'xd(2x5&w6ĢIcTjQ!F 5 qQ0 Z%bL}k'2y7w'Jwx=x[jR\vvct/$"v9yc̣#*3J4i>(S˝ H|S_\r71ccdt;pj|" U1ĽLJV$i(噩;Y F DS)ǘɡ|F-ӁW^2/9t -VT{8OM7&'3D& )-AD_4!Pq8Lqw wNy?F~ ҙl"OC5V}6br:l+OCfpY+-Bc L;=M5b-/fs,MSDA"ۑs[v|:uLJ9~91rχ%/iۃɀylg|O ! t>P0/r0c8S*LP;~xY{!;h* Y!m,"`k<~ˤhݲ.tןl"%6n'{! [Xm$P/x\ܦRй[̣>GwG+{}l0))CX7f:ա(v4=t|; N>pxf^~4 o$GVߺ/4 Ϭ L9C{*{=l`G׺VFyq\l]o+58e5 AwWjp4aC\wbj~,TŢ`d Tit?|7njX?y8,g9Pp1 8(ϼwfP܃'ZK}8_ O$ќ{E-G5vHlݵSFNMx NgABc*Z?edC;Kpz$N $5_Xp%DdӈbvrUj?,#Xj @@TcpH‚0v0[ @H˒sIn"kE*7>,pFG7R[M]r#žLTIJn"96ZB:U7Р-kכo\nHvHn!vԱb*4І|A1j;|d"_ Ih "-ϊszgm[m(9L6ՠN*kA6pڎS9cY?Ѳ>]q 6iCC8% xjz9BYs7S汁3Д3kq"Nװ48WvC5+X3!^H^c1NeQPJa l[9i1e>ԃ9a"iaddi`ƒZ1*r3Po'Ce~6E/;@7ޕmQEwNúJDp[wyG&]wwV Rk[ La _TLb9ö}dpӏ)}#uJ&{؂O P+<,lc,PXۿ{բ4' M%5DI(\%h9(\nw S tJ>Vʄx8rb cH}6,Q>6m0% :a9X/ c?fc? d)TCkĻ ;|初l_#xc-  _Cq9;[?2a22k(k!(^t)c ({[* ͸q΂\`Lј59h"1\! 6& cd[0PHVˆ>,I9d$uނV]fXM-p,XIqMK4h0xT0s$vf BM\1ǹZcy:y@T:h}MN5c3ϑ)DSOYf<mzE&91c5VhUs1į8`:'/<6HӶe530ʸ3#Uc˓1 mCDj-! :oN7LIi%bctШ- ~qS;~Dz1 +JlR!A0rFS1s5]*cvh4uC"#z'u>ï߷$oQ c$hD.l$’22YR>2{R[z8hLseAQvpCwxs(D9s_GwѬSSZ1dwva2qo_23=nfl[J48u%Ɇ'ZNk G 5_{S{4 cQc0Luc!cjX%GlY@?o*:y##m;a'!ZSyzφcf:۞y[]6qۥnM8&ך9Mdaˋ{Hsp]QNvB 7&- rX徾%o ]i᎑H 7>>7=>Xļ722ryW"Tt>:YS/bF qg^eq̥BeO ÅkȗםPCYpߖ\s8fʞ^u[`]YUM ӏ}eƥ!=Y]$UK W7·{=Dԭ29,^Ό뵫4h<ׁ*ks̸\C,<ZLa_wX67 .MT mS(aqoxSrbvi1.Ao}Z葲U "s&`н5lZa[; ?i3za!s$Lw҅h8ǰV!Pv|x:uU,~:\6뼱ם.א|3V #5"N}k`F*;6_ v5ݫ*vqȆ@U(C!hq{ aUkB8U U!/*w~~F^t.*4C{!QOT)i9&lys$){ XgX1 %r(ra2dvPkM;/;pZgވ<9^6d+ ]?Hb-p{I&Q%U(D BX"l!#cX`'q!v?GgU#Q]8͛!e8Q */O5?0 <}y@T>|QN!G%3$cxvBtz[.Y|EFs,A D"KZfTWE6YN@p7600 6bF(LEQ"C;LHtYa rF1yPQm~8.8{=_n, jQ>ڏHI39c۲tK'|\ "TD L*(KH8-x(^.#Pb>=͹C|~ɹwgӸ(:Y?MT%!9? p؋.`//j[!mo7QL ]|Yɐfh9&BP!DcCdt'A=u'x5j'ECmSPL+*4OQ&gsBXkd/G0Gy*9B5 1uinIc>ȹ} 5I{G~Ym&T"HO0ow"(ߣ9O-6m`s]/-{sbz|.JPbD'スyGCF5UU_:D:s2ҏx-2 Hp r$SXMcXbO*.ĝfIOmAHq xv,7X1Ijd0UR9=̌z۴Ӷ=S NLqP pE;SmGB1Mň:;qT3Whp 4U1RjDB+%Sr3jԩT 7aJNbd{llNIKOl]]Z7oGR=$ꦉ@g(e}}9ݫJ8NqFdܜs&$!s $1 ۹f"$D(7?p;/_/sZ9qQKTn36U⮯ZϝUuzp (6hLԗ@QIDxm %)ClIMuMQF'χ#'~#D".>=>$o*@% `7Q$ .vўЌXٜԘGi hW\r:2:|AA }{xO*`C`z!lduC|(D!!}#ߨ'kZWb[=NϷ1-ЋgПFBOl)$)uOa {s8q ]MDOtSa0LEMk,a23/wq“IG5Ӵ$zU ofHoPohAy'*3sEفGjD.FiL =$yGʀxkI'aFГ{V}Jis; (MH_J$dBĕ.`\r{b*є/iN):Ič=l2g3ǓK̿n\鞄UW@c[nmt԰aDIGR.W㢗eB2>Fq$`s)D?ٗuIxcqJ>hƐ#b7QFZ_Ҙ aþOȁJ> ()8C]l-f{z+"]-Y+9_E6\gKˮ6]6w@Uށ!q{UFA}Zr F<%ȥ$+G7EXeE H.ngr5xL_:xς_U(Y3`?`=n[h.V@E—DОࢯm#Q TáMv020 a8F[on(x~o.}~ژǕiXfin]icwQnb;o <gmH@z+%KI#yð Lr7'a{jV3w[oLؗ6Wu *DblHQF-I.ʼn Qއ%@,#RŊ[D6n-6^Ǚy H#HgI.p"wIaf P58 y;z4"I 5yKirg UPasf\?G՚^ԥ6G߂>x>E5<"/{.24EPY+5 \ H]ʊIF7~뀹ea#7oͬ5'o"qZ[sP1$asDF5*(ϖ*ud0Vyxuue/l*Z(CE>0kPۇܧ&9X $[G/tL%>_>ax/(SY*’VTQ.})Eߞ("־-g0Pb?-aǾxSXI0iA&Y|`H#b梪i@2oNjP\F`+d2us|| (f! ޘo}Ya <ӧd7ןKAƏ2x:IL,0aa'}9;j8<lӏzq!Fj['7GY;rApaTsB1{ 5|pL(WS1S *E}ҀTI|֤|w-QKv%Tf~ٍ2~/sěD7%n.Z`67R{wA~K/-h!(jDR uz!|X~kG'K,S_tD 9>F.zfA5="_f˴x 0ey'-I8!2$Ҭt|ޮ,)Mt;mۧonqL_"?u}熖@BlEV%TT/R T/][RY4彂#v8d<}t[Ƽ;4}NnQ`Rq~%JJFW!4 W:a׾ ^6lzi=L矒&}͏Or2pWݒFI 5youU2 [4L|ӳBum_ 4!.aĂMHԜ7 #x%FD9Vu鹨r(Ue9{}7+FU]JUEsmroz[xíLc ^_0{!EPJBY:c6>e694llǎ|SNtuyHӂLA3N: UEڶUUUUUQEUUUUUUU[mU^Ucwjjڶ[mm$|q]LiG\Ӓr_"uZZWfUJN6| a$&H$s8 llytκͰ9w#Qo6T% o⡑KT@evxQ4z(,]}(*ϓzh9D9ǹ0T,'m\B  (>I|R sUC"nb5U뙭s}Tܹ1[% ,NC,b^s-I3om?rg3ҞK>i|=}7'XrU('\T=6L|1#[[_QVgd~\n򟡓Dlcy&v,+PFʀF$Z gOxY}w®z;L( RKwY#%*Z2rJQ1UKO.g#X!4P#"Ss؎h^vr|RLn—x̪^[M|~'S76wۅ,:p,f:כ;^EU(r'3_b~ծ/e=Z8{p72s,X\Z|Ge\,m'T'`mwh9 ؔ 2 ~ys²6JWڇJbp7A7vo{΍sud:3pq3wrU|o<CMYa3lH}w[snf|I:[Co,cpQs?_Mkw߹NN\&e؏:ȓ|2GsS1tztXx!1;_k&3NQU F[akR)n$5E||b;lMds'?" SNcz+G)R8S&9pw?O .і^("\ŸlzX}0ل;Dlb>-%E7P\UI""wDuRy9IJ*ewq?E MGb/2yC+.iw2|,DsT{Jo iD{y!sX>tƵ;t^ gSJPW\Jaa濚W尣e͙΅-oȩ2;oyi'Z%wj o%s{IAIU-+w/3/ s@zࢰ'K9g{| X=y+d`5cun&-_ s=?UN<[*%r1D}Q!$LbX}HȬ_m49t, ԍTz ͕pg645ٳ r`{~bG8JLؙaDHqƏZ1??1*5Z Ć,{1w#IÒCO9kfKZHtXaN S]N]=/}@RTX$ m\3z76è7ё@7K>qI&Anf;_{~c㏃1"~ŠW*f0)eP" Lv($٬&jƏ%V@^oXma##_CQwfU@55.01,Tg|8ڣ=IFg\ɗmxޮPaGĽT|F/6r0o))9#9HE[se@6>9 ;8nvT_~Olǩxn;;GnT$r#ҋڸĘbଇ(nf"aI%J o4C>0&@z' 9F:ƞDJ"-g3>5(ƢS_P}Zs@AzSwr'3S~YQ0c4]e*E:k\'P8XN•(6Ă/ n Betnu >fI Hr`T**%|[ߪ$DAmIi/##&A|_],3Rz~6`,y;8fq X 4xp"C I̸L0xJD<}Wi6tHsd&h0@, TQ$EHLXp~HQ擂^(ᇣL@lEeTP2\zG=6Ƈ"e&f n>\RDP+g(" Mh9"@ywr tC<*r|1~?Y-Yhc#M(x:9tfP4ł9DB `Mm^skbbT*TDO}ba3Vl񰻄!G, r1W(Iar~alz0`A݌\ Kq GI[L͐簎Xسo2>}?ζSd56o9@jP{e+uI)æ'0jZ 3098rG0Ogaڵ#kd MYǿߞ<3iu&\x]*UI/2IxEqWvu.)塏->haa&k$e9.EZwoGLkٛ.k%<=VUHP",5`^]-:zUY3gYP. ꩛sʙoTۄϷ`g$EKSc*9f}b!rG #<&FSѿy'O^'Sg)*l;zȱC6IEh}ren@ItF kh;Rѣ$Ct֩,\Qn>P֍&9+3fX.>C^h d4GVUUUȪ^>jkQ[S݋"CO&}?vC۔/Gw8C!KgR@퀢_mfr[C_tsGv/?vZugY/H0p QP*58@2j"٭`ӟ$pZeɟOT M~潫Џ0evׇՖbrNqxjf7! Y*mV\-NE2>8_SϬZ|O_..!YͧOxs2,Rڡ:+^D9S1@f\͙T> m#aQʏ]s]2VzgU`VhʌTtO)%On]?^x?/v7 mWa-JLse:l KB9 &vS}C`nK}iCMĈv؜QLZ獎zÑ˧qiKVm2}*| ^-NlL4ho )O|:s"IzUƥC E(g߻;J>$UEdp"Iygzxu\*`|\;ag[,@Rř Ї]MW9X*(Z(5ؾdxs )0p;h=VB59^ۢ=i8n"+LLCokwlFmcGpLoE1$Faۃ/!qKԕGE(Z=B.A `HI:|RșAmw_A=IwɱtoD6 pɖMÞ㔾C<[d۠bhMALH֢يOCrMvFq;Y+AT<0 f T.=_ӭ]ߧ몣7";z"B1_DiI~ظQ{={;)}a,4-vdW,Z wME#+n܌K D:(΀`7nRR5G =]!im"װtϯwjV:DnM[A=%]a/33?1p)5\6AM +H˭\,XүLo[=O֘AZd}6Jyf<-||ޯ&r (3H!s!dv`FXDg1z&HQv2nFƞ;h<,Aڣ8 w8\w9 .bhk`sD Jxq M |BPLmj(xv a0a1t)Vr!Rc)0٧0 2#6dj!xOJ1Mmxsj krQ&N*7CgEg.gQj(UF 1HRѹPz)`SeOM'2zJB t;85}{ӱXB&2wdou xF R_D/ i3 . %'Y X"2Zmk׿4ȡ!@-?dz֯xJ8p(89vB2PYSRm}K?;?$;oxn~6s`qbO)UNS龣9ǗrqPОih]:UС]$s.β8쪹ON\R#nH)<0b£ox9#"򝘆{FڪsՒxuȾYMRjyԌT[fF D*h]ST Q86]U5Ȇ|p@J:n{ ӜvB30#2{lMD5q 2AU!kBZՑŘRV b կ z2j=T(.,tZ>߿ZraѶFUFqg5jiBWȖv,{M"b+f15{!yM̓g5LʧR47UV??Mqi^ =(N/X+i{n!/t7'J(pC7 t!((3$0O}cc "fci =l+ZZ?a˝|0| ? )F0`U\}:"U:CE˂9ڼKpi;i.ȟ>SFD>2g,M:;$L[lt Y?b,X7<yǁHMjy]ݟ"|ER86)I1ݶc1<޴3w!5Sgl4hȟ; U D6ݏw3vAȉf/⹥#12s.6@(LR cCaRjk0X <$;wq߁5aG=h܍I\}'`+oY2K7GGfęj E{=L+GɐGk _fKO(pb?c>7CRg;N~oSeG`qA;l&'7<! Dr9q.oiSG/OnFnAxxSFL1ؕĻwkr$fbLWxg\Ù0}CnQ&IɐS.mo?LVyq',Ώ8Y uU&1NvdLzxAo{K"ZkgƏ|6Xg~|KQwӃxdZ`]Itxf+p[2:EsHr |rpH 3#KCN_ߌl 1A㌜m:oIҝ<4&r9j֝bK2{eЅnA,fCn'?Vok#N,rL2-JLl_.Lz s|L\>l g4~n g#VG֞ 4|->yt\-ZH7}_t c9.91 <3YRH U.ZPII֎Mg!,_x$/QrL>.af&UMP~R:YZL^[. AvɃ>4B&L2A9#,G= eڶ́cr,Ii8<P 3_Ѻy! N" y;TwD:l;(ŀ1wc%ZɍSɒ͙&@2h&qR1$.QWS foqQHm }]{z;dx:Giwʸ,}ΰ>_:3ʈ.#(YXcb9-0,Q )&ޝ#u:Ap'WCn CFSzvn}$| w\H ܊"P1C9 _?MQ\gēnрl}MnCZSlĭA͉,=k I)q~8ȴc7RH$]MO^O],1w+n'5*X|S瞷BVGF=w cQ=EuF3ճ UC9* c0E;zzs|,byXi]׹l8ټ3n8qUKOPRD28^LJ@AӇpG3o41ZKJ2HΡ88XfF*8c`d^%w&a@3qT:8W\G[8Eۅ1xQ#&@U C$ɴ#dәHXxUfJ:J~e6M'z;QI vXXppl8qK`=p5BZ aО&Ԉ;d od ?uX I7NQҤUp .QP>,&)pgwrR0jHAhgُRZ9u(yT~ Y 76i- @r9$ɗO깣9Հ6V@⦱H90 kL7GZs,kJݏ/AG=x>$G?Uxf>&Ɲt{зGSGGb|jTxX>O;=3(FE"Q12! q3 {h 2ZV% s2aJtV/M`]mAzVFGڛ1epA(Ƞ!P:ly8_>y<?dP9d*vZgȈTivO5}"=1  5cp'a*$ %5tN77LgM٤욆5-r.L7'yRmL)Ĝ㱈{SPHì SW9'z'~W/(5]!R#udĬ^!Йp} ) >l|=4P$q]\[4R/bR"fK&mPJX BT &D@TL™[y8a]ΙVsm| aLܢRԡNԟA$H߯Yh=,J)Iz98}A8.˒ ?ڙYLkd&=~kz49K ɥDڹdgz&eh.+w32V) Z8uG,ZCz^/H`A<@0eɫ^lc(5p U _tߕMX^;VC;Jde1&㔆-0hQ+~}!o߳a\2:%'h]mh2GEnDZuhç}e{ȇD)[/^$ hC>\A&a4*!JtsEх&*>J@Gy2-@faf@&~?]X'<Q kfX at2dсZK)!<܎ELu| j_3Qp8e׹~Efog=U7pF 26He)|}MB?GR^?9ц#4t&B8"ZLv`Qx"b6VK_.nj^3hZ5kGϴ|LD3Bo|N)ppn4@B)O"pzZaJ!=JI!ݣSN)H|n513Z[cAS܏hȖkxmgPAG.`{xpc[W"L%"ZhByDzj>n$/ ]MMD;7oQT*Wz\ #ߵɿL)'όS9|k*xyM|A\G%i0]8hP+qaw8MIf O?$أLMkG{lE"jJ9a9SHtw ' =#`S^\=,qp d'rF7\qGeVIr2#\e(Z 0ɇ4ᔅBŶi R$@N_5:=ΑugPPi}5 r%Fdonё7%qKCh!D "WIiT|@$pWhhbei,b$1,ᘆ g܈H%>\W_ܷD9=Q&c{ͮpm81.7WQFzOa\9Ӓ?{BwEQqǗ=Å,P 6+QWB+(,П| _3׳=// bb344Sn1]s\:3?.[ç! RoEGzJK\E/vƬ=B X,OYٜ6*(Iy}8xꊪ#ES:y/Pyg,W5>oo71*r:nwrw5ʊMóqZ9&1P鳯1(۹41K 2Q0Mp4_q)S9 z3/HHMʮ47֊TwW{arbgkռ0"9bRŝ %Kz(d!("eϖNNf1-xaA @Lu[hk7b̆Χeu&cၒ ț(#\.޹ۀ;iMM7ΧvI+Y*VjxI97r+rkGe .V uZ1TWxΎL%Z>-sp%t:"eqyy\Lx (|+y<"sqORí⻽7pw{ޖcqa# ֫՛bfy8Uz}vvps{[Ca.8RϜX󛆍lYcɑ1[v|C" ;S::qr},&D=}8 \i%븕q3UHOv3WxL5RUrEf1i-aE:q(Å~ʨVbӉ5DnR*aG;!<'+֘F)ڦ\:Nc NNbBhs!6xu!òdDZQ3OFHDNϮތ}3c hL.YjaŒiݰnJ.0bpge`^5GZq;H:1p4j8=o]d&^#$Ŧ0<2,NрIՎ;#Dhy-[̋DVJFY)|g׎?Nh:O닄BHL M"vB&E3ɵYAoR"$"gX{i,4[6mC#T1۹Ȟy2_'uӗ -L& Qri=S1z1MPm4^yG$B4)2Z΃-8^%68 |-H};m͜`ͱ-_2w%:OVQ1j4C '"BcGAG`5Ex\F21~hB^Ql_* :gRjkǩ|8x\h TOkwbd;Q_qd%謁EO/ Yx\A*e+v,D qp|nu%k7qH)Q+L3+L!XBNn'aAL)Eg/p x 9}g_,h6_NSBO>1UM )AB+I! p8)R8as/Z_6GFV_@H㻐N?' sn"?#Xji#U&p8 a/[aLMYC ɸ:TWg]s4Idgi\dᤞ8C\B3XK:G$"e酄9FLjRTaR/ʇXcexe}{zhg1 D.P4ެ~Ϫ-cX.8>HLIڑÙL8pu ~dr L\%vgX"(jngo>.1Ց~&N'(J4xA]h8G8o ,W N0 QHZox)< Ba P l){oJ2I ~=}<ol0G@@z Y>Hux1;o}Cɳ1tp;"xNL':1:>{%xm[!$&sc(DCG:6{s,#*[uեZ_-=BhxR&PN3yֿoDh˲C&%XFOL *j E m呦mO᳂#ipԸ~Azu%YyM؂h+/}»p^. D!E(R=PQͪ iAEYiC+AY 8 `^gĂ< ;]-fZ,o.OД;"")HDL5UgqbleZ̗@  Jl[W(& Phl$!aw'S@͵  |vC89xVx| P8c4faӼ],n4%\qQA)|"ǏxnR̈́-eM.QČ#PkʗwuO<UCـ#GgIfZ)fnq>ois4g.rE-da 4b:آqe}fpЄ (џF Y0YV!@Bf-GG0CKGWdj|Œ4V [KzBԫm!x;4>ևFh$|*q'۟Z%XF"(xgA #=:.2"688݉0)#@Q2Zw?reD]3#qrXC6PkWX>vGT Btb'Y&~яvQ.6ٱ(V3 :"}ݒ4c7w}|EKIS5l5qd.v?4ǕlCWßt1C/?}zK(##Rl{0QRaX1JK!{1tJ#@W5]+}s-AĀ E<î>?Z? =12I_;׬>?\nO_\TȯZzFgACX5;R}:C%vwCfX/܈lLqP)V!&.M@{SJD!~_՞h NРU36IC8Tb)9C7>MEO]$ƲG\;*2&AM ZԐi"坰-\3s=E8?=XePl ku>W>\^-0ٙUrUѣ0t{ζ} ~ G⋀Hv]98φõ1l8!5^ޒv}é@ebO ӢrF)87|֐¦u@hWHumptdD&oK6̊Fg#p=ә==S0Żi`Lgǟ_^!qGgDd\$v ~]dusT\>Р9RfHMY s)Sk*_2 uq sbW8y=olKňYY* Z 8WvXG`r,M,sʆM#CjwzwנKe/ |R"G0Ogj3L;ʪc1o(jbUe;voH/Z\~];#999/}=eDA49TUȈf#0-?G@_Ts-o%?OS^t֍~JF雺*|223𑥩N%;-}у\Z+Fhˉ$$G{A/h&W E ~*="(2Mpz\,C*6ÉnjNRǚ\tz6g{:y~|m0nZ,%t>|D>JrX C+3䈃!vq) \QRA=?(kw=T@'í]++wMc]ݖp~35fi_?*!$,u[eSlSF/j+8n{poѣ2> 9ߢ_|ٕ$BfacOkn`_ϟQnr%j6, ezc[/ǼOʹLAHhfIlYx6x:RF2H 1)`Jr(5: ab7f轒faJf r{Q7iϠs{\|DC8S6lpl4p!pj3{V:+{gM-f.$sraݺՇ%8^[3h ELKcA߀uƎQ U@nZbvܙmC, >!| e4Kzv\xlM64ϙ ʸ50`淢 g`7vU~u)XK+>ǯz]I(! w#Sn ^u! },`>UQfR̈́)m֚7gCɝ D4Z\҃73ǰg҃u%S\l벱ĶEn̯>+N#m++3]r#1~MzG{ (@>ksƒ{J zH-_;uֳ`*--Ȧj`_֛RyeIο?M;} wGS:!O.ݮX{Ps&;ݮдEZ3Uc~IYNm^_.p} ?µ? rbC'Jj /g9N>ᶰn>N~?7DFKmQOs@x ѵel|G|@n.<îa7=ˍJvMHJ0A~}Q{}?I`9B=fc/+~>jb}n'_~ޟOetz@Qj ER[:?=~8mżߨI ~"eݞz1;al(Fk) XVS4:4iB!cKlBԠ> &՛3y5_1u%C\9n ڀD:Зb{(+hPЄDy {1AQ#pֈ7yQOnyn) UZŪ$LE-FWF8(q~4k潤H ٰ7Cb_zP\-w%_wx8r2?.:>^fBOn?/ 2 ^3?KSؓ$Z&QeUJ]9Gv9: s]](cƙk'a| ~U[4uv H"oąAh7An37'paBjx9]B@$sT)񃝴S\gDqV0 QABz)|;}IS6Q^Ϻh A3C} qo~Ë@#TF't&9Al0{sYK;N;`f0>1W7 FSaWR`,6&F1"4Ugiv)(O*DEYsr~I`ȑ2r?m$~ ZXXQMĪbG v#M [PO'=:Z 綊"&`!j"+kGF "o&qd?+ f&Ήc" ؛"Re HqС  ԰`6҆ƹe0aIBK&&R%N!-v)8k>V'hd,}>ߠ{ D'O?}ޯWtơZ}Wp!î қ`*Z1~ *PU/9a@Fغ]H54K.2SA}#wR@y_z;b?qZ* "hhGb+'y&zv:Kbj״Ac4hlV XbmITi "X~|/|q S=%?g?g_;@>o2jRReKM"0h44blkXRF-&?#T`lydc>Z.ujJQy8kE@Y4>Ltj}ׇC@4s.Hj %!jt4H!IW=*bZw~#0) Ӥ 64.h=׍j:{ӶבQhEk& ];<4EO 莪#4O6>AHGj,j$rܤGuƈ7m6Et*#s-u[em5L1 Y$6SM: huiamR(1h|4I<mN^K5HbcƎ<8oo-mbT IO|\M5Ut6s9+I0{zZtHn:TP#1c`Սuh>V#CTbsyM>mZ[)X QQq C1AjM+X69?/r8[ 60oR+-#gIe?-xBX:"n8/K,p*1ϋ&qTy8KFymQKZ.A^[UWt]:ԚxF%*5:iɄ?5I;<0q7]7?LR 7{oh)DS\q"}B "97?XϛcU)S֕0>?LnNW|V7~-tQ?3aXЇ@AEYx_t9nvPeoOQWp7tc3Q"=UYegy`Eo&kvؔ]7sfM6oDI~K].om'h,g03qzpp/s";y_?m]~>h8+I  8pP?.VkCc8!9aSlĄtd 틡!?n x.uu''hwa?'׀LCQ@eؖ!?e R%wD% L0~2I, eN"XbH'?%Ć,ԁA+wK)0pF8 O* {M~уG$ 'mksel}8 Le@ "zɍFPaJ 'gtE/<ƍV$7t/2mKn 0I.I+Ct8U^ kzI9DWKOαH{r ժ|JpO Jn6ܬRA%%&aATR#|~ ,S UUol^7@D@=\C0@"c_l{eSX5 >=ROŔŃnڜWoř7/〆 } RGBB/.V?ܺi^3ևD gwʹvVKuFXT1XJ-X3Xpg#Ymʨʛ<̶b;֞$MtrKz$ǧW(Ӣ02<.q"蚮"BQ20G{ x_bp~bשg@{ }xW]~mpG.q('@P" O^#ކm=?`IASCQ!an07yC۽~NQ*$&2xwR")NiAt)׿8dvZk9߈]~;cU)"$Ӊwn5_q"սп6x_p[f|&F}qvxVaJɇ/͍]Q1%9D9q0v{C{UGD=E}rJQTLm`wxA*9[:VWWUn O[47@XD9SS:b. h0Pr8K~OA?w4$I̋@YB!~UiJ* ~$Md~Oضk̝"MȔH|loC3wܢ"U;qHH2]y!MF's^\m$yco W^H9D~ɟ`,~=L#Xsx܊-k)${po@ Ƥu*= w|[gA>/.qƷ2|d"zZ=0Kxs%X|@m8E%}LݸK$`̝ڷV]e ~%[mb"1*S,Wm)F8 #{\ "afVdPmxs V,"?ٛ Fμme Eܬ4ɄXwT[a]Z'l6oP/͂tDh fa:H YAdR@@E6ťy]U>QAۺRH`@txGQ?dn xf1l{)ſi <*',y |¨X# ī*Ƃs2( (<b;{0nyjgfp3ϣ Jņ)QFS {ޜJ+{"S'b3'.A0`| b=˫g0Yn!/%eTyKc4 ~4u6q=03QG0~ZZdzY}NKQNf쏸$G!+XT&㱴X ex1rtwxh%)v\hCĩG#-Z&m*0ߧV}i9&(vB4 {u{t-م*@l`P/Kd:k(viBלt pSpz䎈# (+_ v(.Ϗ_{{Zu ёٽZbeA~<Cq V}uQ``dh']%x|ȥbc>λ&<7pzϭף{̈́h+}ÒO?o_LPD|8./ozF!rsEc9֐4'Hqj*WRDC(7оKC4! ft1c(ɝcTu"BA}YE*Ӑz $!!7hD0F2H09*DzXo0a?E4Pc:[p*`^̜;npipfazw`B\E[nⅼ\$%\,A{]Y0K_5?} Og]uX:OZNAUht 爧1r]3EA@-nha棕a %0X:2J,Ta0;P[I֡.E-IڕK~o/ew^9E\`n9OLlH:&)x}Yr],j]#'y> vVߏvrʃk1U\`z(KY`-GX(lTJMoggPGvR~TF%\qFf_Ǟr<.n#,Ieaۏ#D\a TQ7%1.;A녎繘q9\u@P*{ݘ ?)#V(ws8LXR]?e.,0F*cˣ2['$}>_Pr#Pf^m@6=o;C~Ao|+,v17<#r(7HtC/~x@OhG  >C (A f@~3 {@3'l v A%uZJ#wuo{y5p1sn 2&fFB{BSч>-Aښ)Մǟ8D[/)Qۨ]p0СX,ɟ  k.H70Aym(Lg/@CL9|@yoxpaTTנ k(\F4TQ8 bdiSV<28lg l/ .%aJ/#Iwta ``kIl3&G&d/IGt=A˶L=EA|9Z|@;?Mv)B>O)i=qӽ3 r1gP>摐<B JX}z@ҁw+z4S~9iWd5`u_(TB_21mW?핍oۗڵ{RT `Mj!MqvDO` 5rCTګA6k-^8t@bEUSkCa-C6F#_}#PȤjJ53s"e6Pa& {)[5oxvN\=6 jrLVKUɝvkReOas1=jsG#NG4?'=B;3֥ۅ`HK~g+IeJ:]9JfrNE_/hv|PWs67NJ] }y wTsUfbYv a-B"K `A-R\r_) hIgf=ϵi_2ΆoE։ _7;"AE"b Qg?S!DT<% W mDF#v`{g\,$IX+Ч1i-2a]KaAK‚kepjj59-r7`*spbĦm8FrH]gN\:k,LWpVGw E*bD/;jͷ1Wc-u+)|V/],2ba(ixgQ c!4ѧ6iMz֛wPqӍRŪJɟ <`e\O9>`k5j3=g;>ߝYn:@l Z 5~HVafD` wN?\NWՊ>Q bXrŭݢVχ\{tNPw٨{lWKIunp PvV!fpqfeٍMfXCo=4Y4-ԸnW0sg,8*ǘPJ/-:&MY`*! ڪU F@*v;;꺣jLFAMa%}3xs,4SIW/g>o55,2`-=ZyTk9Es Kxt}b޿RRP@Fs, 6{nxUudqa329{hָ灁P'3I3O,3/p`SϽӿ&;rC8қΙ[mwU4Q CU%W>^\w%4*N ;5T* +1t:6ʼn* JZٱF&i#\S.0^E[vFu|? _?cir,}YAČ*Ŕs[P 'n3ź3O*}J$+MsW`TpisMpU3 Է_teט^_:z<8e$p[G\x*o_qa|j$HLjaXB,WQ\R(+;(=(1I#YD矯s>eڳ[$jh!cqڛq=*Utp6~3\^V6zdr&h1}Lp#O4/k\D$o>f|ͩ+ѱnF{\v]N!Ȅ`L' A aO3N<Չ!= g?̑b7>٢N8s;;D:"ME"3)7n1Yw:wNcrl1 g1mYs[4!:I,=~|Og:)vE'9<@tQ퀉Umj5v /pI-XۻT<3v0`绅ާƍ)Rt7 ߢ2Y\Vd>bG xwԿX=ui8ii'=Cf$FIRKڮ3(s@N  $~<?yA$"wP`!˙n*OtbLV4PN/C9`#rCYռ5iL ɠO4]h#FPc%-pg"ip1$B0Ab8Kb9bf=hz|~uϸp7㝯Ε\PINTbϹX]|;پ;O?sNLÂba;s{g}>֫0Ѕ4(^@tJ34cϟ/531ygnR)`r?ʴvIwGԍp`:HPD.dtyÀ>l_g憾~!0(T8^t D`6QGMߗsNt|M3OHT I: X;ppm]l[x\U t><]Z רc̉ppbllϳ 7o""?^|.Je+ݖş ]nd@`A$@_'<ۇ{_O V+-ϻ7m)[ycRcne³ [_lS<|ฺHg1y;7tN0V^@%Ky G~dփ NqFKFrϪ`lv>1N[!6ORθL=A@"uȂmPxEeQD{9<ЏesUS|%OA2s{!Hh@CGy$/xJrƝZ04I ǫSAy %L3.7:G pC(2$%қ vK:(ݡQB.#}j|;$~^`p+/7æxx< 4Y4#Oehnqnd{>wd#4<$c(%`mhalaSX6tJ ^. ;h8zks$,$Y?tcZ~{ox(2xnH5KoFןD&CE= Ɂ50M320̳L50z^4vl0?Jg0M,-.C*ymN"h14.c|4ۆ!h%YY'K:f!Ud3g BgƤ kFba`ֆdG÷(0p ob$zU9Q\459Ǫx^!hh1 Dj_{dw(z=no3#B0O=G2G÷i99aK*`fgшZLYR14evS+=3P‰\*x Q!`2l?VJb{Z -sZiݿ;C^6YLeM >.;@6 *DD:nzdDA{1 tq/tצvY٭g 'XnlaT0< ɗPf<doj"'ɩT8z*oϣDAϔɋ5>¥Gʣ ]4ʈdT,=Eq'D"QDV |mh~fV Z($eS S)Y祈Bwl#TvV`9JE#Ɓ"4^3x_vux30Od8I&~x00_û[8W1d\#}%m !-K5B< )B{{ D ӝMNgL }IW ,iCͰ :a 'A)61NǎȍLX&~Nh~+~9hkџ N`ݕ՝vQ S <.(] M/{E4) !hxhy} ʕi1b`hѡ`*ޣnW<i)w"P9]s$ۡ7?~!D{9_ bpTexrg6}'(Ba58!_sVOFhC3OEL \S N RBpX7 [漣 TdaFtN(GǑ4 }[ҹf_{rɈ6#o.REy0}10K4|Y**%5\)!bmmir,QZmCP9^UDzVVQX çԜ P eg[` 5~*]Uꯉ;?;P$daq ~95t0l ${Nk|O iWi'd>]'[!'T?M~\w ډ.P߮ sϕ6!gB5szrsv SΈG6\_~fy ǎ<e o.igJ`cm5"q@pPj -ފȁܣ. sVWoOJH2C;ny蒞$L^ k>W?w~H(Ǵl%Pq ͝\OִGX%O>o7XF%??90W2 q M;fERprE`U5I=k@7t%FpZ9pX\w˥Pt0U.n06sNJl쳒s- j2xiXAu'/GM ŀrrLUVl8}6Aӯy m.o sAxb.v7kGniRkƑd[&&AnGqX 5B̧]fdᶉå" P!w $F1d^ 6=R&:C}L˚/sֲ`y&7Qsc;1 s]V #m| V6?aTS=_sޫ:9H uv~$b5GL>k5q;yQzzb*1uᚍ~3(rtBocBi\Gkѭ2IGw||[sT1!x둩8;rJuχ\'HJzwĞ$T)DT)2v&}=r|#_g9TAͺ;vuy7CQtͤ+btAz xQ3DƷ ?Y76(<t4-8wvZ=nM^ľa1!ҐP*tXpng9J(T1vɕFc֎lj5[[d";i͘ kd9UKA]Q|MK/GxSc3,B~چ- 8å&R*D(_^ȒƗ Kb{K P6ɍS(TcɼD4 ECOpJLfŁ9g yvlT7_dBkIýY8";ԗpҲ U,c&g4N8Ρ5[6dzު)K*20LYD&(EIp{dmqǙY~`f1TЮcIȼd SbRw5ha#?Q9-{C5Rc "$4[R*N>9pb%Vtpew #]ewW9ۯg_]`5x7f۟# z}#F.PZrzzBtfU;/_ )t&ר-;O_ADsyh]rjP6=Ѵ*DLXIPIbr[0k3_Eɦ50BAKj< gbh%U SXF{EO'{S{IG}@ZS78+.:}#[SG>4pMî6VyA>a$$!8eHTdYVl,_8x%e|_v/Ս,@u 'Ul6CG\g)@ÂeGGQ"vn0nI[@ p 0og`6WoFW2߲Cq$<ӑ;6}X_C` y ;g]˧`ˠ25R`Eb1UZMuT!Cv6i6 s!e\?Gre~Cgٻп:78߳+s /|ʍ,5_'A1o"Csp٢NCѴJDQG24HH5.7ݿr^@Ρw e8=ouI۴Vϧd3J\F;C^FPj#2wK6HUw"*zB-Gr] 5}k(05OQxEY= z#K80A샲yAv6,p sVas) \4lGl;ǒ ʉ"TCrL!Dy:vi&r;^8"5e^DZpWV^18kf0(d9~N08w2sV8 2NlS G(Hi<,`9M ~*HʹT/S݈L|%BF}΁&@g؀h6y74.uȏ9x  ! $G؝^v@'`@@fAXBeӐ',!De`""('Yp7]yݚ|w>)4 fH@R4U¤B"?uXp"BR q }u 0PS:|-`uT Z?1ܾbNr)D,/ghB &qu}ۛRD(RUcȢXw[ik>9H]/t@~1}u~Ji]|-l-B J0;B!>$}s;|~%OP>U@#(?k'z򿓇W,9)3a^kVZ͐=ٿZΙ ~o?Gzhu/ Wuce@2bAg|ӯ/?r8YJ`HPG@!!˷=a*ztWޏW={!S!_o_s~wWoANw:=u]o{oiG}_䈼>Ntյ ogK lb!hF Ju>4|gR[/VKHMn\\sZ|YIZ] A̳tO-\{鼀z ??}z?O*(}oAI;"^t" Bo=|>X`F<pw>ۆp=$=E4BO@מ|q$H% 1XTxp 6$KѠ"҉4ܐJdړvl7ݶx:hg6vب!hL!!x>n1DyAIh 8!&Vr . &/@&(" c /unoY7d<|fɶm6VH6 c6  E\_ːW(=Ylj[R{傤&=䶘x7 |%|Fɂ#NdTf!7xFA9 N?KBʼnhj_SS>ɲlf /3#ʐW[2dEUEr 8$/_Uk46q,*`țaZsvOfmH|hD'yԜ~vPXٸi BNrm_3w>"*+onMKf=n`?DB o-NS24 zvg *oD̈́cz-&BbhU*"Zo>D|#\r >?B@$~?{?;/izo["kmLHc|2  ?,ʹ3yy%":yl2@Ц ?x~{H|4Iq%O163UW@5X\h!=mmi^ 8aw #/VCP=:_7Wo`au#Ǟ/Ӽ}>-'_7q\5 S'߾h,4d!m$C_@A?>??4_̘/ߘ\#J EPn kw(OnFg5HFo/28lГȰG˸R$o19#:P9t5 !ɸxN3Pk[E MdP%@ <>H uftuޛ"OZy]+7{awxsbi3qtϐ/_xR;Llug)d/X$! xj337/e(&RN(z}P4:d%X}m=4lP7(#e oNN@:ZaP7@{~% HyC1a_uWګ#?շEM* 3z̫z d𢡄X!ʟ-y\rd8M`VtY8=9t,2ixj5 Ս p %&FqRN-ev w!PA Aչtʩ;I $|~4/x?_`!6 q=H ,tLP:|> ĐbS[Z EJLqd [Tй mŢ-&yFIG徯G~GC/D&2kpO]$ee ?ĕ7!!L~n;a ^(  ;cZZq/z}||O8d"}>~uOի#1DOBy)#*I ;)_>xQq?$nz 饥(3 H~kA~7I>A|dl?Q|:I!I3ݗ#pDA};dBUh{?txf4*:87x8מ;sMf|?neYw﷗hpa>/OyuFrQΡAX8\{?T~&B#J}#v1|vٔ\ɮ2CYI*(5u%)SE #ÀU_aASCп=B~T }S o޴!Kcg49BcxBhlBz' R P i/Y`d4&L.eUWH- UcX*j"gDcjJ)"h6U5QDof>hUUDEEWeƪ_#XBfpҨǟ/8zch];uL$ɢBb&֡܀ugNzBvk!(% `SD |]2R  3uUJg5) ?r\ 0MW)WI)I8'Y%؞6eA)}G([_wsOocWߦ^SȅhFV&l䭝-mB&lX?b}[Io>'TQ%](PN]R|7w}p|Om@P 5 D$fa Bt43u@`{L'l۠SH :!a0 D0 Z% n #!Ӆd>@M;oasIw dЁ T>r8$J@9j@2hzxEGK`xs8ʆͲhVucswu@'G^@7lÄFb>{.:_j<O@,'d8@8(=R_ B6pg dB  B>|H`i2xND$o9e >:mZ41Dpp+)>c~2 a!%Aܝgw˸dIQU,ĐASI&*CˠsAZ3 QEU%b  ATU =@`H:QKbAh K!_>hblm0Q%(jf@zK@&X.so!0? WQWdf( 0d)$or{ɀD7A|J 'l`F!!$ٳ/dD!`n? ,& ,c {>N)P=J(N: lL4$x-0khOll r.?\>~DS([^%ҭi =ABO23:cfa96%E,` @a4dhfkd-&W{_ފI'pQQD2z˥Bc/Уe =~T! Ngn,7gsҧiy~=m\CBYQH'2w 3U*^r CY)U`=)^t`\:zK$ /v2 b(1ra@B .=|JBn9WrxC Ï#R` MߨBi &:]]er%7qt-"yslOsNII(Cx}VC?(ah˫F懻SO}%{dQSv@:BF?ؐ()! ???_ߟƥLGJj{B('S.Y9~5 HOۍ&JqX)U9*Ϗp ok0G|Cr4xxdBiA`K?;RWnow?&"s{]g2؟ZKA" C_ !VM 2D"$ jxuvÔjxh`ypCtT1S?1HaaT5 q}hKx`C|!չvr>uLn!3;aq.fIW)D?((%Ꮭ`֖!.X>L3x .ݲ/wwn`xlߤvt2:K?Lh\BF? _M,\6fhu0qsx23b[k[,/n@Ɣ@3*;uI.@R@*H*zv2VYgN|Xp9@*0q#  $x {Ȇ ;4;n&h>?rduɁD1*;$$8'A;$5rm'w* o_J&`~R`/N Eo1r^I >%(Hheq D0l8\KG_""& |SX웁xt8?W9`+UK:YC>ϊQUQA) (i"(<8K<鯞rEk).0F#~U&@^UGJiC]V침`(WoA{vUrI33!=(&0\@׃!hrkRhP}0)gߍϡUBP a7</y/06@ܽr IYNAsyؿg 0;m"8> AǐFo v#'=iɤB!Py)8gn@x<>zSR=i Oy iSG_)eUT5}mG'7zi߁R Q@RS) rO(ޔX AHzXL!}ۖFB;9TqoPB<~y_ f:2>em-/S0ul ]@aDCĄ!|Qo8n:I61ٰ-G/y<%vH~i Fb QSH8ʩhvL.F Ǡs"l]w` sg%VQRHvҮvI@{E?_O&!`>QSAL{7acO'z4q6װw~;!"zGԫHzp'1%0!2l~)^}^ƕ ̴ D@8dPy*P9q?ɓ=c 6b$_1No돎68"XI"P0U RZׇاKxDA3KruJ4'Pg ׁcgY;x\`9 t-Q4TBj' 7;,yšR=b?|Q\[k;`Dٌ(q8á2@,KZSmm&$901}A0n,*N&!2a. 2<!@Ín::u*b1Xdf?u9>DžǍܮ_̡GH_VcH@;@ɒTH?qOO:pA0>20`6 1%>M`<́g,f=1f~_oS Ƹa/s4)/ M kj22 !a#hlFCQ7d1ُ|KgJ:vU*k]"@/0C| Ii/AI9xMiǰCQ6`i52$,ƍͥQ: D9}>O81gts|Fw/)(g8 ce~G."2-"`XMn`ʀC"Q9vv'* K;P 0.n!Oz,׬AYlЂ =1ޫ@9;Yl1Ly>qT$(ku44s7Fui b 5Oo (`OorZO*~Vd(ei"Y1iy`?Rm֨g)dNr_?KT`s 9i>X!9:Iϖ` _Sz@OM*Q(06uuH0&|QO+Kw H!.=mKFIHu 'i:Q3 wH-y}l>HQIȖNh!9$]MĘufXf007@pp<wxl<W330C6;}8_Mg:kwSl[IuW``S"pr ?6 -Z7 <'dz&~lUZQ0оݟl?C)\ `,}~O_p J`3 "Kg'p88`pZdnX aS\!sԇt…k| wڶa>jHbK1á{w o-ƏBr\r(q Lh eiaab?A,aEL+Hj[SPD@Z3@S0A$ AQDEDW@DD4B 0 @M-5&* {=q=@@a)5QQHRQ UfgړELIPPLPLu}!0q0TP}YȳVK&.5Q!}y@UAAA1 1zΪfdWyUVa}@qHrSC^̔"DKyVB51m{w'9=UNնcjYmU#Xыer#|7_It{ρfxqRѿs?2dD0DAGܙR5SMvZ|* [|6,`s@cP/p*'} A;!£`#B?goٴ7KZW9X\2 $/@c<{tRҸC Ӂ%s:.ԚP/ Q.da>ﻰxi| g.OF< }r\24 <9g$?Ax{1KBe =!` /X@u'ŗh"cbGb3FTIOm{*WM7n PaCI m% i1]@_l|ٟK ?PpՆ nqI|4C}{h߁d`K]GG<S@]ɣi~'<ͷ}%Bh"ΣV!r2!I~8r{G)i'VV7ޏicM`tҦos+23/M^?o} =JB(8"=BQ+1Q8HS鼃*f_.~OoN2UX„ʯ#?X߽UQNY\AU̸Wf`M$<3,{7۩TPO/;o'o~7yYQO"2Ta!2A1-Jυ'/1u wt^3Rn-IkA+[Y k/l/&nWt.1&V=5.}%}$~:MU]STUvۻvAf) Fg^̚ LRU1DݹSWzr8F$fGH^c28-9(k ZL^'-4)mxfGkv*f2 7YIP]f "}W[ D% >#FGs3`x}zP2,8Rb%>YHQJXMz6&5\ѿgzLz:| nVEM54,*,>ۙ嫕ړG˜6v 1,gtſ% Sx;3ԅ2.|u5_&!gꀪCM}d|kI-IĐ4rg_ӏwQmK}og[ljj4/~KUO,:PvD&p3!gBy!sz~?~>#&d))T+l= }o~w.ɿ|뺯 "ol("y. :ϡpNa_ 0lf:<-9;x! @*Oޛ'N{ ޺Q27rGP8Y WA7xsitbl ʱd@3M[5s/gщrS_x3q) Ȅm7ׯ"#Pt LDݿx~S |8A1H^<-G:A PrO]jͭEt*8hՙ:A3JOũ1ćxq9f.\D2=2j-7ey)4.i6 ёV█mo΃ӭb{g̩w(HB\3iv"'Mx%u|wn١ !Nr!z(ʗߦ$0 kE2-PaX7d&ۑC(^4J L!G~=>sa yϐ{WPGڷQOv߯E;,tN芤^T3oGMb0^e9fֈ]Ewq=}ېywSǁ.{} #Ⱥ+MyPY ̨$FٔLQvQ+K3C!}蝯OCldC`0/WEL&u-II)ز(4^ $ëߕ Gsl !FI C:rxNP,e(6ώl>i'nkIAG JW3,v]#?0#TdFmG{"j#&: x|9MQJVJ#+yY欏gE;A+O8xz5 ?'LHsq3s^Zn?D(`tdJo6H(6tW,oR_ÕkOư} ̏B+ԉO@+McZ$,[qhd.阄 xSER J Xug|I#Z*~.=v2vQh}zns*H|fISDӞo-qz쟧ʫ^v"_@ojMOT]vf҃nO |O-T|=c5Me|Sf<4EQ_F9z MKjk^60;>O,v;1Y}u">2$_{Ă2|}Mc"TE}7I ?wLJNFnhohӒ>F`$9(f.t͎BKަ0~{]XU&tSI 3do0M=J2$! آ(a^QM׷Q =pMc(|> 8;7B=CI'TAI s A!@U ()Yϗ+&Z* O(=8]@ D. sel \/^ xÌjVrm!GZg+rc+c^+3{-?~_߈|\FAn3nD,EZySC4i|5HzVi *vM FbxBGpRvP Y%L);"^?uȴ|&5KyѐUz}~ygkPX 8(*mYhCq얶 XR쪾S!EQEtXןث }U>()o `$UFffnՀI!L&}ʡ\]"ze@I"Q5Ѐ214\3鿸BD*(..s )yloO3LeX/DV&>P{kPQ*Ȣolꪪ|N3-^Gk>o?`4|uD~~8!3ԔTiDlzE,c@eB ːkynӏH u u LeQH׭Ioi?R_Z7wZiѕWlTp` 9!.hM>/pH\q|< Ck/ŋ=̙~@ 6d?IL|xy23r 7h1XJ(lU&(08uZV6F.D 4@/ C, @@*:WJIA?GpNge~5*Xe߆0ٳf͛4:0i*RD>x.u9sp<2Y\= r8DJd~EIA ~ nYِc $ꁩe)qԦ %F'@|FG"6pA`N%HCF6yhN"y(;0aŽTS> /xp<4 Q p1*A%Uq{c ; 6dʀ/ctѓcqڙ M,;)$Ix 3);ucy=xr:īJDƒ|!niR2qF-O;q6kT v#(xG55F$QP ٢0̙ E5 7. d2*bpwzCj?1{`(RىTy@ NpAA*0F)@i1B)֑NXrdC<[$iF\Zh CǏ8p3f*VLw֜wfsK+#>)䈘y* 금9Yr\!DoSW=wvyoѾL Lv7,z`v }:%윟Z̛ssq9ao(͙|$⫴br,qlisiP+z7 sI}7@Xx{# &y)ҠxC&"/gRA&dj52&7p~^s:W+K?kgv~\gߺ*bHVM#–隌PUj ^E{NMR.J(NlRر6SOvB4Зd̛ӹ'f8CB!H9y-jќlv/ 0["B[6Ed)xdYbt!i Ph Xc LBMP9"h0L@!8J0S%C +B-:QOb>bExvhb܉iO/^eC'.G30(*1$u}?^x( }>F@͞V=S`w-iPh*πK/͈C:DG6!8KaaN'7Lep!hum2`2" ~M$,S:^mM"D dKk]ɘ-&cHm7[0,j&3\x9Md44VG"F}Z/dJ#jt'!bPb ABx pTY Y>ez48C~3,h1m?8K V rh1Xy~z|ž (Px- 졺*ِqOwOj(e ň @ &F 8h`3f~:4匙18l1o{IhE;"P.#/>/˾B D4-4W'I:h~2zP6]B?5QM%7m|j?J9N##yBy Gse)A1L)&?J&t4H=I_k7>QX_4׳pLV^HLd&/@@mልhEx+ )~~O@&xځ'U< 7˝)ɁpHitf-T+,ji{Vrj2Dod<F =\-(=I'@:$KVE ]ФSQ8csj:ɕs4$}Gz`LA$PY3SV i c{v &BF{LX`gV*0td˘ )GN&J!q  aM SތQҞp(J pGWFLKG ٹ~P:DCC\c ĴOq/R(5Bh4J! H@RPS'F>oF}XzHJdbHLa9c"KN9|oCbMAt m^5aLCJ n RˬxZbF՚8m1ZIQ<|ލm iZ*.Z x4=f:u…\ wCz`BC CcqtB[#q=;iiC ۳DI!VF">е5sp⧕&QՉ9¾zhgP C)tK䉈PM7bفfQ42p5XH>wij7Q. GKƣi piтc! 66q*h7i;vbQ2,|#D@I/)'h?N#RT2BA6ؾ=D@o{E2aA<"႗)&d_C`5'mxc H~\'3͟?scV[̌#6!4Sb31A$PmVBtaZ|1 q1Ct6-ecpn2FCvf[ 22hA6\C%'6ylt^ lAHq׿aH{F-XÂ#M>0#Tvq {!ou8- ! HebAJRR T=oH|6N qtaV &eИ"`:鄅B_JadH.l(yo\&MڡXHgzmnJXgKqpviTAGR+* cKM/5SC<䬑vA8]ܘ I VO8#|@red55FkBQhQrҏcn* !:N*yƸ\܊[@ Lĵ<a bBsXz FpiwA@B0l]_R립~TST?>DcnX41!h\iܾ&''bHF&Hi z@"`&J `GԁH$<A| ޡ "ҁKd4#V#E*LV`BG)th(7QbqRl@_$J pIB=/IH(* T#b &9J #{1Z(b HpU(d Q_H #1#W؉h%#C} ~6`> >"z&K.?䌔% DAM-O~^k aÆjẁdq 6VZן"vI.;Į!Lv;d S*5b_J-f ^#Qģ6bC}Cʝ96H(>x;?ᩣBf)^CM)SI>!l: `X :Cl 0 ))vq6NZ6Gw|Z&TAPܠH8eH+I*4?Y Q6ъI7 9) Zm4 JWݲ !z۲B~2rJdybY^J#d;N37Ӧ!#i6j3|%j-d, @Xʹ4q`mb%mvY?٠ 9rECkQ-lI#Pb IuɢR{{4 _ZCMR:2M Ci4@2"#khT ?c Wr ;(=ÛKģM3 Hlavq$@A .= 9}S`tGP/;HU geX[ 4 %!DD@ KP"yl OpV# $׮nA2*'V zA 20 ^y8EH}xHbl 0L`lE ZPf!qy&?PhHѳڌT{*,`ͲEJX'aNXjcI?k</Ǎ% Py!5{LdiLQ@' ѐ`(0Th$X:HԸĘ>1$Z ߮:Yd%/MRI%h_R$eq'| gTuZe)8L/My(+c (D~&xNp`4i:xD땩q$:#R$I;R"IJ!rk䵋?]u| o w &H|^%Q'1 >FՄ>" z4d`虭eVmm.PRDb"Vb!n͑ *$ܽ_07cqUWa5JF͚%* XvI <+t}[8|0.v{fZjqXkY8!]SKN\U7%g~)Q4M0yƍj &-M5 DhZ#ޑd Ae۔*2S@lrRG;ޏ'ʊhOu!5TQt9\ h܈gi^%ctamH*|>^8$)3a0)Y04is5gBlܰAzsjMR}%HK G:f y^Pt QLT-zHGVQHx8 @5M/r]5bc<@@s82!V!<-- R ESM,@izd8"&<΋@ti$FS1/ݚ "1*}C8Q1>>8i 33VZ`>2I!I!LBFsg.̕)ymMXֿ)Ă}|2f ~1EXmLj}dɆweih5o!`" @ݐ:D("S;/O7Nw)EzB PeGC2J4hJC@:B@U07,9w k'q^4}&*"ĵz{@/Pf y># H%:P!G;6;A h Ϗp-b a{06nZ/ݦD*\"X  KH f~=} !_?dty_Ɣjz‡uMaImÎeʞt|IUjlL`f9glhg.hhh;CqA(%# φ)VV(!\AHD4PS!!KFB$"W;CqϣFwH Pt)B)H_lt/&O,M!2AH| ON_/=a|/I2W0/b~s^D@'wn+4H0X\A:Ϡ%@f`0n?bpBv;M=?1sp$%()b")XR fdfA-ݑhJb*VnB `zAz‡x|!J@Zɡp$*A*r" ._nw+9#!t*aޕ@2)Avfnٮe#l}:bcqx&1 p-8nN :`Gl9gw{O;eN%0FH S 0f'QdYQK:xN6'ttbM7//;>٘9:;ێ1iNLubv 1KNpnj%BFNS>uW0fMD=D~pLG}K CR q&5YAn@j0 bJ" ۀvܧT#J!;5 ga1$dp.Ί}F)hQdTU!7l)b+a 2"F 2[FAbYHcb+l&_g CJJAqӧcTR{[J<\1[riGH9wm a)4(rcmˀ <>x e7cN;MKWSu :948q , 2W Z6O>ƊDt#AQH$Kz Z'ɥyɒhSvCsBk4>1AHJ ) EQcLj݊. rf@麍hLFR=AZ!a?U 0'O9Ҽɢ1d `<?=!ElbBkXk"4E(`Dt8imYkGSmD|"A} R+w P!JAR}j)?PMPB5%*R Gg~lCsq!$zO (h  'ДQvzMY$,l)R B 4o$u-9Kb٧1?4ckEPJ-A'o$A=b9®<((ž2Grm[?U qĒ3El`!jFaN6ѻo)i*7w!ށ{$/'7h= C@{%2C <# )"CA5=BHzQ^@06袤:ХT"&*"b Q3UU$UUT@EQ#U-$MP3DEUPCAQE$L2Az)(B$)&%yD(4lTDeT=X❞K6m,˓G?iFR0ie'RP%*`hk u A$vOB%hb *Z1 AhgmLlb:PV6 & JZǘrm鏞qi b 4LQGy KSHeR("h>@MKqfBHLZdž,b 1- 8HFjE4:Fl(q`ypqiLGF. )l$Rb!1b Z0b`ˣ0&a T1- P 3( d~LvhB |p">)(kR!zSR_ R$4ASf F<t]֨|w'p2p* ۞6wC l Őa(*F/ Bwnʛ7O9 |$IXY 2K}WV귐8=SVK?xj/&?s+CAێgRRa`4,rg6 KƢlN.%PaTVmƊl=i\R1[n(" y(DכM1bzY <fVWpPAu143 ;hjA;z:[5S1d~=&OQ&BZud8v#w N fƀoPG.%Њ&icm;Mݛ!:kJtqN4|pw) z @q^ M5.N-XDIQk5GĄR&!$oDyb"6qcHD66cZ!ݑޠ5>J6e#y4!qqk@$=`eL}*5>A>%D P:̠6j#(9"b\c3 \H|E"I8XUDH<84pX8 81SP/$ ƔlyB 1bPM4!N OH haL4I"ټ : cHІdn F81PT`CQ@mt5P"XB1  熐b {T菜< z:f$|o^MH<{*7A0N@ y`Vyn/b "䨈j(([EISMT|0㶵RlHG&b$xcL+JǙ4!'Ky'bz?顶Y ހi PŌ501;4QDƆ.t˝.ZC̉(4(3E t:ė%msB3c/bQMzXΔ%*g;XX## *Y("#`vrl. ٺԾ эRȌ`?7%3\1/oq&Pi|W J ɻyiִ7S&]%QӥB h 1R( 0h!HwZy*`d,$%tt@e7""GHQ!/(¿Q"Qh?Oq> `sϮhUwo$a0@hiPiic'e )"6xM_/]OY<ƽ' g( Jy qi!I.$!` 7F6Twן݈d+$Q [ojǑ'.[1pq#H)&N 06oAGhu]lȕPfwG ?ig1 ygysYi zqÄA 4[()ݔa*hԎ$>p<J) @\۽. zkKP^HSHE4Ҕ賍GF C1lFi[):Kyz쮪OSnjRI<#IzWmJoC@:4/ ԡǣ9&Ӫ^Il5U4S)C A?ECI`sPB~lRJTbpOwjyQ55P~gDIW/hi nS=773"oYDZ2~ṯE EJbʚMCL]}|)⊓FwFϯͭBmr(5Ni'0~<Ǚq؏ |HHM=n0[& V`ZN<0<8 b.(x0$ҤRT|u11LK% 0(l4P{ /ֆ":T>D Kt>lt._, u+{6tf ")4}8!@wOC|Wˀ4O"ǭ#"S'*~×uSP>ZrP5<ρO(<W A|Ge7B9PBGcx&҈{LJtT䞩t0&eK{1E{m!0eZfMX?. FCABq`Y lOnupRh5ÈD.c3 ^Sqhcak4S,IX !J-M.$ĨR@a|i~)e9gϴ>QԚ*4t{ bU{Q^zQb0L~3fjF18lQ{p8`kAwCI{# {څ`wp$Ike9d\vͫ|߿BfM? p}KPxr:HwGggNHzld=4Y;(c8c/{lf*|$8cvuݎ7e@zO0BX%}C<ʒ` " S`z/nLB(^}z}NC|HԃCB E CFxNـ`$1/#P05{AMK*%K=5JT@'D?]!;}4:qdL 7G0LOwy&Qa180Nܓ &Ԥ2v001plN܊u  "8.^|UYy/!.QˍϞMrHi1 EnaN1ҁC'Βl[ʄwI uc]M[8Ԑ(UT'J^>Də4ZNP-A%yJyN36isz}݄&yr$̐gkxr6(9Mq cNԳni& MXv爧.n &NہDc+v i1z\b<ψtzIx|㞤.XSu9<Df%jc*Ju|pVϭ\z&mp 1ЌVפ酪;z#OgPndHv~vע%77q5ƟK=b$Ve?c~v(ʅ|VZȨAc7dĮ6'WnkNh!@kh]q"r˝d|,CpK YH,Ltfajs{MbY"pCB$%Fs 4#\8m"I7ϛ1 A;'ij87o!^s]}nOd9dp :]IQn~E[h3uI)qp6?eGwFlkVs qE)IM3KG+[18LgO|N6&=α`9‡9*pI1K^V'^yYj ðQ-3qvYzQ<^ ˡ"l!ɛ ɊjLvsxה2DӴ-ecf@+RGE8IЇܺxv޺OL!;/4w;r\)|R84l Fύ> suc}fֵ{u@!fx|rxʔOlT\1b9VKRMeS!F(WC 'X˙DN\w[@ `ށ0z9o+VzVׇ7}B|oCB8#Yd9>HANf$3ӟ( w-qq^90j(fzh.p#TtO/r9S5 .#l8[(gY慓p,֗,(H:[PLΩM ]RZk|PjZ\̯@A^,*נ(>cwSO*G)_HZ $Ü٥sjg5]MW.rOeOV8XfisW.v.t&&*M 4qg#aFAT"_k*[sLcs< 5ff 9AL k[Ag{K GUd3\ݍMHj>O!:k<T>| Լ/W|m`0j #4,"9h9|iaY5z̃i&3~9wKjrB0 aY%/z&-9|3z !v@( M!1kFqymL{; T4L.y-ۓoۙ|.YCA^Is&.&f04y۟ 6n`^(䐤.7|C̉LkO2L{,E`J3]ޔb3dJwM^͠5k gPV1ޜ*_{B0jTN&э5ѹF {-<㻛koLxv'Bo/ЉDڡAێB^q)3 w,3B>3 ;aQ٩$ (A48p:ar6o4Ќe q!3V8KgG#$gU6p<.X _qH*"ɼ1 nSHT[W,K0V6ch.[:űhlb9biwkedM7/řQsSbRL@3,!!x'kk !G] 3eoATC& 劦5mzQdHh bh٨ V2 Ftz]dH󓡛%lq'gS#޸3cu^!:BU# ۬3O3^޹ ㌴b[Cs@GC4348>7ւ;7"-OCV!L- 8{EHXWI%!Ȃ [(̻` 0>\3 M' f&:fJVp 39$Ķ R2k'DƓRPpoY%5Ӣu3cvȨmD0H^L;▙6buXXm,`$Xl %WsYA}i؅*a Ï[wex֑#VjB!#ݳ(Cwz983+B;:b8eǛIcwd.!R$F;xakОWZx){8g'*Vp$@y@1ZTTLYg،SBxv DoS;g}|7u|=V5&NP(:r"B)#@O&.L 9C12Z3pa +Ol]n"|@>TGC۵̒Ϡv\BB]Iո!hwGHI+tGP;6TɮH05Af8Lpfq D\ UҮA:CP*6\zA:1F8Fk#Y<j.r!F:%݄yΰo@r2].<Qs]b,PD_Uͬۂy5CJjUQhJ88Ѥy8l}>C̹tWA\ p&.8Go%6nV `ʎ9=g vS2&[7:8 !.E݈ jF([JivLzj:3CC&ʹ&LlIƋjyawf/[`Ph yړ"dN:/q+pRLG4Ă~'CKN=joL%5!s7`#7]ݝfD_ɝ 0TW!j8ZƥZS"|y ik3 U&Qgbfm⹚b;7+9M$"(Nc5FX۳32Y!0Hlffzl}lZIGHżkHCU//M5kQA_(Р -r!W2k2p߇7C_.x3$w 6\~O"Y߇]C0J5-Ē:4vNT}W0;yyAuaSopEZ,n+- I!`Mg'T<,K6zX"w;s7Ǧ jrQ8\a2Lˑ~Ěd#oys oNLGžwVmTvq& JAN4NSZzen۾#7rQyx̯w*fM ܫsͬz]Kd$ɷ.\ko9jq=Q㋚+gcy`>c2v 9NJcMZt8D50;{s0t(IwH k7oSp1,8?9Z`ZM5rIfZ"AfђX|YN-d@A|Ja%Q0`u@.>i)ak/YD/+S0N'V c6ټ3lYl Qfw |ӽ)2XeWu@:vB;Mݭ˘9cÍGH!}@6e6P3)Wl_)_-|_u $rxK=DnꮥY4ɀ! )8ěh6a;F8 .l0p$]d:ETP*Ʀy~OmXgpJva5.h]ƶ8&[ف<8/GOwƜl30G"7 ;#*v*"vJ4ooe xDVUUQpCyyJ#W5L|^MrR΁qp^{q7kg\&'0dpYKLRtuҪh[j٣ 0-f[QKa2d`I`lOΫ"v1a<#Uc:ldU4M-"k/=CBzL/ԡ C =R5TR vnpgx!$A CJn'`^`~ǢE2}b-qm1 d fktsL΃AePv}=0(>L VU`Lf:0RQ.eDIUL.4 /ԘdV!#FL@eX-f\w$WC)sXĹ$"3l5ヾ MDdD)N!WkʿWBR{*K" HQ\C#/b >ʯH# _x}etShMtM_\C.'y?"uKp*L153saqS&S  ; gJ riQ9x2*;PM9{HxC82 p;|舿2a?hY? ۳&wbedc.CoCC'CeQSim8onZd:y}LDLلW>p(g/2I}84#vj^Vh<{ءC oQ3D4z ԭOM)88~ (h}[?"!̴l[4u06ĐѡU< ĊMJxN`:{? $CaUC'&"[qm% *c%šbO)/"x4򵆜38:cKkX]ؑe8Qhu"&ԕ5/Duj5t5#UB`|W΁]-h'iґ*izxof!]̻A $}"jL"SD`XȌxx:;G~R6Gvphن%+VCG .{rq&-ݲ62>z w2B$i>/i q<6_p֪"$gn5,'h`xr1ԫ0!؛;*3 Ch,>C#L,Çuqo4ֆὃYiP2$SkiFx:*Twr2c+<<$lGbPOC@yLVrLaOŀøbL`Ti1Rb˝9v O\/~.)¯B ?h}aZ&jE PU2A%U'0SHuIODnW"P/O~ ©?w!hG TTCTQT4RQ* 2 AЍ13#lg큏PD~xU} z%1'Xqmi!0H! p°L(yLE4C*4#0;jJ70`bN a=h Wi4 IhnQ}@La =\s!47cXj%zHI'XK_aw8=\1~{"\=z({xr؅ww.[2槎c4x+cx?i^fUG`T%/4!(xNieBdzH l58;ݑ'wkw8pDS{&tR|M`\O]aLDj>䆕p92ǘ!%!%@|MP|l|Fvm9g܂ݿjK=#*(b`pb\pih׍̚,zXD@Q =nUQwOA?T2HLB9f|,j6@Ї@I=c㩯|:Z=l3_(4&'mx!aK TVt?iғ<ϴ;@Irm;yw!! [,D5܃\TkhঃIAF?}̃7CV%@ƣM 9ת{@7T1ew튪A'z0/i BIHl/-f"$Bt,ByPA~n~̯-fH[LL?IѸćG2tL h QtrҤa)J5LuHd:ʹh :Xxd3@E@ 4 pn3 F- 0Ӫ&?X8Θ[!^ `Dih(,m>17x́Iiw${pG-UAcy 3m2 Pi'|a+!;:C!E$7q ows~b|9hQU*0Jd,H'GރwIQw819||$Pwya)3@5-تB5:Yb?,J{M{'nzKyjQa{,$ @8?@<^*8~uBd30`S+i xb+"]TPݹTd!I<$j$ 9OWG92*Aml#,|BC\tǖ.1Etj(W@[{gYd;@eR@; $_*-"cCH+ ΁`CyFXvp@9T"O'QϜ*vJr{0ˌ ;N-0o9D ~Y?닭 mf搎>07 蚙^& yǐN=HA!=dBJ\ 1t{qyqHE𚢉4|[XRpKP*A ` [)專EVkهFtd8.;~V}/JJ*9|js|FhFxPwpgnMQF PPE`  z Tb#I"F`$Lm#VN83c29ʢԽ6J͵F mۜ&sfp5Na{v3OȐWkGVFt, p.시HǸrY(Fƌh& mBR1kmF[ N.-A"S &;gOOLʄɟDX6PԢA. 65.pncc3llOت[2.fhBѤ w;Q Xp& ӌ4xVS308HB!gl$([F楼A S֧cu tR1K'>0GGdWc1ؘQ6KѨq0LԋwuD`2_+Ίok U,-kƃvKm@i q%$Il!ɀl5 y+(s5v̂2X@(b;nؘ1ld($:rk!`;% -O|DD9|s<%?lG4 !6LF|`,"'9,A!G%?ʁ6'yO>ע{I:[ѩjӤY5|]1˖Z&YU#]蓎g_HnmOM7GE9o.![R!+8j!aDŜ箈؂YW ㉔xܣ'XZd>"PRew s7<$f~RA9gėx+,J2 kʛCqk׾D`BA!XUˑ! Oͤ8prI5uC!NoG2ASa@HpHZ#sAB{3(\IGh /%^12ǎwSqV,h3d1A9ogm=qx2onD-3!Hly2nHƶѯ:ýOǭ\rpے9^\9cR'3gjRi#ˌ;"RIKLWCKP56]bFZw i AAm?81> JDF{=`]xZs8[1FK-E4h× h ʃXţpC/ =g24\ѭ<{ki:iD8ag@؜u~}EpbeshٍÃ̧Pq{yY"oU:d6ױpbG.8י'f0h#@c+|Μfl rd^<θl:vlƑ#+ƢK-糂k7G"=xY^8M3 |oT˙"xhaNcE%ː!y6kvsTb4FvVS;v=xy@Lq H5̲e8lz#λf+^\,}=˦t;~dp&j|yA/6\{ .LnMɁ!rc T@rCRGC Vlx}CG9œF b - 5Ra qz:MěF6d`xV+\j14/.@H߹ v%m]wrQ;4,y߅+, d{bdmh!חxG>'qhIпq h Iw&c/{*L 8sC=p 4 %i$9/8,Lb6}BLLZ/EVCC )N :mǤ4Q'h}0854:i1L|}(*XTԣ!i@cc0A.hi"5BK(Bc8̐ZTh+EQ-n9MZ0l.CNh"bh[REUA, 8h""!jR3DHc;ߠ@=<ɀ2*w ~&̚!z<@Pi) 70&d vqw:I#("" oHq!W:Hx)}td!=܁/77 _#Fhk~¸}ok!$-(1@LL.zrC TRJD#x 8nû{.i$2pGhWu2MHC^N ̐Dx ~GmRP Ho㟮QIATuQ C/Lf&@gTBD >p%zM&pY˄dC% pJz`͠(_$~@Ā1?(ADR}Gi9*]S#i%&&*VV0J8!( "i*%LIA6b*!!F )"X?g:A M+EZ|F? Gp(N*<) e02{Byyne!,?\49:AN h%gz 3~BhY6m,3l;! bJi`*8w&?†?f9<8*C ߶L JncRav{ 퓁. H}ÂOҏry4 ,fJ@L2 LK|tuKϒLpDl`kfs;6PR""@] *$fj XF '#4 88쒃fl(s`Ur&+V@7<Ӳ`,bԞE0? JQ+ّdaOPLMPC4RK:,@<!\G2'D$/l > Sa="(W`Syηj\tna1ںaw<(e8^D{1L׃Ix5~ )݂̀6=)ņ@:G YOD)6dkps(4!ׁ\mJzmkP& 4"cp5P\kT:!"L@a~kp3q/OzFIy5fRLd{!,LNIw1DtK]@^$"8DPj!)u5@\p;E@Iu|Jfu0K7|r_/6x~ C<`^BmLth.R2^MIL5sW;* xxtCFȯu;1hJ̄$]~UDeApO~YHLNz|!EWAŨJ&Ur7Ćrώg dΰ#L&h/ޗ3LjA64K9xQ ?&z}Ym\ә,8\l2b*7]ą&:txXPAoR60hyq?|;` Y& rI")äޟ1Q[͝:h u޼|Z$zǨ; tzI@2ڢ!BPMp]F ؔ p[Sl18AkJ)JeChMcD|f&^0C4C5I u% L1l.8& 8kX:٣@4 < P18hHRJ]#[T)Z щl}}|07cߑܯç81Q0>!g/s7>I]T.f\*{uJ #<#g}_Ybw0 Zp@P!G } &K@_އCAH3;=s,ٓHND8qK,"m᧤&tz8)$*h`6+4/z&_k # Qd?g91,,B"Q%[G:KbŊS?c6Z P8Ol/,a_S ܡwPhΎU%܁n%zjCW*DKUjIVGX-[஍zq aȣ6s{]$ 'uzCZh!i?  NT!3:α@j#q(jU @4-+Bx S )GKhݔ~_I02} TZJ[F.Gu(qN{ e 8*A#bD_$CD`՟Q.UQy0Y}rIQHxf!7H\> SfLhipjCe#pHR&F0z@d+Lt_5(&P7 H(įsBZ;CD9ʛ p3 Afqv}ޟS$BHHDJ}Lxh XP1Ž}rC0r7[Sp擭.df\ 4ң YYQKݞoL&':Lrz8 puf#A(!<".`u^ᄘc ҁ@ 4>hN,2ymu:h<],\B6ƓF0XTӿ=U*(J@)D¦* @8ӥ c<2<)Rĉ>]qwkD zdȤt|[KEDQCE6|/'ř|ƉdD֜x`\4f޷zz'd cTTUU.?N+U|f "#6Ɗ64QEQMcE1 [M A%RNC.6HkJ T !XL`m J6p a"$e $JA8#E0A$0PL$2LA1 !dJ> HIϓ;g컳H`mo1VV PlbىF ,B:" 1ł(!"cϩ,l"$m6Ljl[f."e騵 ݫ虇ܧSi}@@`9&epJv?4'?`/k.(hiǁ& Y[P1u3_,Afdkr{ط98dh $5mlr=M 5yh?2th9ǣ`B/QLI#DB0}p|/z~ $&iAa  bCN'#qjeMPnA}SDZoJ0 KG8cb| ppS@Ek㎢#c{^=ãsK m8]aM=@Mt(J:Ӹ`chH6+,E̒1DL]v٧>p,VC zR puLAE$ьg߭`c5 Q2#Th1#bB,x衆;8j6#LCUA3PKlbH). Y<%0LIy:] D)X`:@s48E$BqMMjvX1]&JX @yGa D'"@9JP K!IM A1Q"0A@ "\*`ICސ_QWH} vuOt@?!JAJ%I7BӁw@9xHP%)14P$IJ-0H ߹|VA:AJXABABv' X<$hABdVbT( )T)Yj `/M!2KTJP(RMAБ+0CKM ,+U% I0,#(% R% !L4L JRSKA$QE)@AB)B ICC2-%-JDU"PDA@HRH2B4  ̃B@1-)L$ҌHHĕB!M%&J)&Dd"T(BJhiZJh(Z(HJ %" Q(E @* * RR(j P&(DS؇hRBhJPh"R"HRB" P X @!A " $**i BH D"H"iJ@&b $JH!ZJF!%h&fQ)T()X(b((I&JHFa)VV*F!a J @RP%U1%*ɦ&(J(&"DaD(yC\A_vvޙ_T^)o >*G8 Whb-b)4EV҂n(moDi4GGbB!I*VBQS=Hؗ^2Z"i& $!"b "X" %%`bHbH$PK9Eo1qfhHI07 P?&6a"BALh&1T֛TG5xJ"MsʦZ*4.`4#19XH6&6qQ뾄r$$0bEH$L$80vC!丢BLDlv|%[jX dbirݏ(c^fc!;:=1U C3BH4DIIQI,ҐDACKIKJRCEHny\qXN6%)rG"D42 (2DvZ*B=Dz>kxX ƐH37peTB#d\f`BR}y%.6!8ܖSA H&HQ)yCK0's{ wrK$cvlTExs-O8~P}alA7& b7iJ^) 8Tr I잠eHZ:L̺2P$6Hs;ӭx< )L0`E &_#T-cL7ę’{أ7Ş-xyD1 p”Q}#5+,FdGƍ~RQmj'Lj$h1rI Ac'=vpCL5(ǤvCV#2@!@>@vLOOS|'y.? ;@сrN!]F,&@벐'eY'TaL1G.ꫮm'hF_q0¿b!!ϝ|![`> V%IOHw6J@;& Nl0wFKȱy_ܹҒGO h~__c xccXMuWpkEvZPh ^(^;ݾݬ=:Ǐd4}N2@MgtN`0bh,s7y86k R8 ۸8 ٤){OA !2!epo_ȏ6Bm8ȕDTDA% &g)FD{*h&=g/ߦ#$AC }?P@p|;.Ll+J"IXI`eiA(@PRdbHA$^^lÏ4?A#JB.%6H~EH!u_PʟPwڨPtbo_Z(5!hT!`$ /h0"C~~|] 'P()"FB82GIP>^T LI .*h!d!E)zwMSL""ptkEJBhQ"LI(  8Hlf>? C!}Hw](Ӏ390*bY35c (+@6jQHRD?p)!GaB!L*<%F*5ԯ[?g%yYM@_}L- /b"K콊(ru8>N^ :޾|Gw_9sS*Y7t4ɻyؿ|(%h1E&mwbBoJq l<0'@˶I=0J6<ejEY7 |#) m^JP΄{z hx4Qh,b&&^rj5d<3lh@~Q<IC$ Ad|/5jZDbv)̪bG$Iq wQ""h  N{hQ=2'Z'E'TAD&[-IE܉S&TR#c0`y$~ fjB݌ #L E <(rlWv`"p>Cz?o&-]6̼lŸ~yz΄,D5^PiL1/#nF"0ı:u,- VP ҈Ǫy)F"i G\kۀ&R"Ze&ivH*Rfur'\A3z !K(DJ{\#CkԐl6ySzIL$NA5 |@9 bpsU)m QZV%rvâ!b!> 츀 ȹƬX2tw9 лO^ON8^4ldSi)4aLM7pjjaDH4,0$%Bk%Ab5"3Al+*/ qNg&!8'Do&IQuD0`,_pe0 Ao~ퟏxvY_A45TR btM$-ӕZN!_մh6ɘIԃ!`m8|.fP]ddȪDRD<n+ٺl=OI'IB(OX{ß/惒10n .zIMCsU-ʂlq$DL荒\ʼnO`dTD4męs+;rluXD_2I NFUuKB LN;\PA!D0wҡ֌[§6dPh*sغfQ\@Peǻ=zcYyߜ$ΘSThAQ6nF9L3tkX|m.S譾&e~sgX6|%K~!):1M )4N^gOzwguE_Ż9tNBX(12 .uM:L5'CY- PQ:\8wA boPƅrx&%.A 1+1.=CQ"#Ot&2c#2̍.p$k$lPc*!V*=1uRQqݞ{z|< {F$hZLADmaLH^fEXs!Ɗ iP53BxxyΓFg_Ӣ9dujW`d%K?7AG‚Ʀi@7$j4 XKVv J?xhɞFuo-J(LcG[>M#ӯUBЃUCW}M1$lc " aÐG_ A|g3LB`pSM(P"{yn^m *KDox"> ۅ{AOr}?_ڳ0GȐN4s!Oda?%  ?}j"J@" %J) (% `"FR fFa@R$)  hQh( bJJ (X*J@"%h" )"ZJX&$J b`i ޑ1D4{I,A1J%(E ,E 5KM$ BCAETMJU RU1A A"#2#CBLB)C@L-  U P@ 0R@3A1%PJR0P4BUC@JĢR!4PE-!B K#Q1jpt HG)0Yi`$!=#Uv$l`[5}CNː@jϸScETl!`? 4"oICq ʒK?1Tq hSHY4$Y$Oa_h&RP->>|^r4!dh=JKLM }T8ɪ*"(hjV~I@0ԢQ !$A Hh bӉhBGH4i ( )(!(T PHTA4# Je :אRt5101, "BTQ%% C(4/@" d! %)"X(CR 'er)-4D)D34 #$.4@! t @RJD ҳzc%M1=1O4v0DL^0htXHTH)QЮSBڑt1%L0+JlġBҔ9o:Vdd"$"?&Z 8qfCIvHu3Ncz<dz e't 6\;RCbGG8$(уfhv `> neTzy?7jND̡aS. dxPE8x>uMmBzy">)q e;deTXѩ,Zm d[E RMM|Gza=PS&O+m͔4BG]qR'~ z|!dL^լ:\0+ lƳ"'52#{֘S AS:ukv}&\p >z˴=V.]@SCf_ m[a۔睋iu&Q r̢E:ՎO09 ڇ|G1ԤA \C`{GH (R iI"*n 'RL;JZ-0z?M& |#@D $X(@)PiF$|R< @@rU ooh&'=2Yr]&A!pgZ**Ɣ̱ 16}jAtp͈7א(8!>j@j} &p0 "$n5fNs!(BiT0|sVEEcK F0\Q,*P<œ#ytv'mEJ` ƢP7T"Bi@w;R%=ѵoHiЦl`fD+ #)D0M\֠kՈQQ4`$OQ!! vDa9,_;6 QPW&@d7G9 x^iX)#B߹N*f J 8PT"&I0 2," (BXlPTCMZ2~\>G(, S!EUiFq=ar=ZP}γ ({:Pe*y>oq՜q2:̤n3F%竉fh1?74>!Mhj㜚c0-|a#͋뚊mÎ뎢JחWUnqז2 _3x|8 DZ2Դr`a YtAJVE[JF4c2X'DXQ4HedT#b'ݗ=[ G˻ 1!dP-~}Ա i(m64*iF[:hпCFwSGݍU(A0D$AKKFґ1CINIH&CY`bJl/ t"Q(+,` 6~H86 *(Hr`;#]!:7 il HjeǟeuU 2,R+d:̳ƗvY8D&$&xdITTEP=h 4"Tb>  5z] &"Jwt6fI/8 R5E0P/Q섛mbW"SH%>\4%P> $JS@] 42Bf%Rg2UDf#J ײ?iĆx%# !7uOGCpwQ43a.PR#F6TJXZЄ{i`()+l)N i<j6.4Wq] sh4k:+!ZR6[piŽ# ;!eHǿ0e3"o.( PѮSUl`?"T(6̐)\MF}=؀N1.bfH٣yS /:cI1f fsz'deWg QVKt'quy1h ̠0u'$+8d] F%1 Z4 F1r4,XCU >J/!75jX;S A"#2^40gMR/רǐ#ۈCsDxX{+ˎrM- Lܙam*X2@ `Hj0I@@q@lLB2IEc7F! "@43LS>nTpwD L%`]14c崒 '"Ra]UcQ9x 1Z C[yɺ hkF,Aɷ 66эگVdQ+ˢ{)K0ݲXDESu13X`h1%`*bDM{./ٻx+T Ti0H_/}E|>D]sIT4 *Q&'C0@6rs!HO|pMyk&4E6̆`yQ1V֐i^7њ0DLH1h ]3W m>bcU<璋* FN EKPN)x͚2ݕ!1+2+,\A!BGaӭ5l b4&o2P%*X`sq2dɪ-g9cY94<'r#A6H|9x]4`29.@8Ǒ!LР.1CE %Z\Aq&c6T1 l췛%G~S"bZU@%y;׾|ʪ< Ghjjk .X5ca"&R^GO<4j/#؅H*j,iu:J%(@dѢ#oHup); k F} }`J: G"7ь!GHgoh@&((8Hdc=%Ǯs*crp&QO|XrD~ LHHH}8cO@9]]&øG0#Qgz)@sPtNrE\4e\0tp]vA8ck_~t!/ŨрhD:>!yI#>Dd"CHLATg!٥B=w;4wBD\]9λB(?!3l2Dl|U&U_@Lr8hZ(e`) eNd7%~,& x9Mʣ<  ("&ޒ5B<_pz%T:Pl/E]-zxҍy2|R&z vCAM΄^] AL-P,Hѝ&K=y0㿻"x;}ct_1a(Mv>DzVrp M"1 )= 64zb]>`,f 9`y<74Og.] %5%աmd`LM@t8`9h֧D͓Ǘn/<3sŭFn6c}UގJ\ϿdVR&xiF"lna~ KDD;;-7!a*SyXt bA좘4䂃aKYb(hrTɯeB .cK'L&_P\ߴ@R[8,-SC'kHh&$ɿxuI>)>j@a$$#;Z@(nDT)@,h䰾s1Vcþ6/@'e~*|!ڟñm[ﺪtb;C7A>9"di [$N( )B-=y٤WcJ׭I`S!=z(kD O3 ihbǨ0eX >KLYp8^/[ѽqS)a\Hq^378/Xz;J+H1 &2<>G5aUҡC^:lW/G,!C@@7jP1:Êe+- aRP.J@BH47gBdO倐SDJB@$$Ѕ (@ 20Db߇E}?O2US7  D*O }E/]}O8$ %I]uY!|T+eCg\t`DIaJY,f]\ؚO)۠1&G1Z4DUvyY7 #( :E(`oڟ D> | :ͦ9C"u1![!ة1B( :0bS;? @XA hdVv"ErUWAgm?|!!NA’m`8BH `*!& A+s$J~,-}S`8)CE5I3!AEJ#B TDDP̍ (fd&:,Dp~RfR|iC4s .d3r&kkWA573!U6u.5fL hg6bSbMp8{ /d4Pu,:0`X.]aK "m6Q/VB,(gjD76W'm Ļ0ٗCfN [c%ы EΩLmm^ HWKr)&M.lF`c%!MG3;ø3NˣczjԢn e1#lyq Ǧ2(1c݆/= 6bHN*1ќم"iY%xWR!61:Yd:ve *i$sP~;aW0>Sk $Ce)6N)*z|pR1DcȀu|6É>90&h/y3M/,\E8).oohZiw2#q*&Ij(L*7 qH#X28.7i7l ab+Vr fKpmn6ǼE`h)aTCX$qw2c 1fHI b !<.'!LHz',GF93n0呻13[fT` VcLrE"P;!, #yz8Ϲ8t;b>#Cޙ #*֩ 5a b e0h]W)S>>(">^DƑy6>5H)ri\mC4q113_G}ka GQtp`KǖMJb66duT3I"fCt%65 cz}l6=oVv tQ 4y5^}F {灚:hv0|J V4Z-zun?)!fs|O% i7`p5@BlTHPnciF'_VZ4!II,B@"'rCG|G Ȇ1jO ,FS҂1* 2J=[XNL>t7N$*B ._`8pd*}uppvǗ]¿NOw AC[>Qa>F=p3 5Fe#p]]Pcf(^Y]:RH:}0Psin>ۇnϷ)cWC v'!$lySSjpk :hqi wt;:Eqh"B(*RY%h!"{O_!<w ) ~_zKrSb=wyM34F2Pxĺ<⊴$8)m)@f ČLID'Kso6j `8.I(0I^nHN5&j'hB"+B1(9!`%s(<>x (rݗ_Ms=G<)GQ:{|8c ~I<% MZTHPdW@[:NwSh ^]R~,x$(ATHB1ݖQѹi ұ-[,| x1hb! H`&/Pj;tFdiѶ1~ `>&#Ք t Jf=]tÚ͇XĖL9! Y^1#΍UB@N0!ZudRNvpyB4(F9UZs70 +$:OcmC"JaoG"MStV\8s CGo"\n@yHvvS$hHDf(̵2\uÆ_(zS{j/|g*x^08Y '@&;nD$ E}GSrkr+=QT cc=a= fTZ.IX")NtOA?)1.^ -h>cq)lqP@| &?:Ԏ`)smZ>RH@w2_PܧD(t`aވtm{t+?iOZK|z4hrZbMcT 'qBRBKuKP(R?l)<`aL xJbR}8= B%4-9RHCV!fszPXZ-FRF11*R4TQ!@46O֔CGkN"J%#T!rcnƫ Ο~NjWQ*fbba6بbCSnwzC<x<:=dDas Dg2-& 9c"G8!y>)sɺ%%fC?p#7hw7cጏOn4lCٹ ?DJ͐ߐ2<%*LYAK ((RTJ'm9;S{#sd$ѱmWcUMﵷ_ Oj8o4vZlF*CUZc3VR4S"K&qTiݝb*H"2j'wvdeu HRmTAPFa Pa{68vm#}yNմde2miA3bc%~sį U o&rF^mhQNo05avDCƦ"\>r䔞(6AsGh נf g^ 3`CPhLs EDI%cg?x+#O*i8wrp/As J%"$`0fQm(NLlyI{(YUPK!1k B&gHvf316GѪÄ!Fu4"4 D3: Yv0k%-#z󣻍)&'܎ݗ)SC<9H1D֘1ʺA(3q(dDSF1 vJc@tqքӘ °aWRVRR ҮM(c1E 6m نxRU{h0i hiD0X>]#EC)N6/>8G􆄡6 #0V>#A^xPKE}FLj9U3/Pb0UE(Hoc~^yԁ. X՗ֹQB[t,8[*% $͘DSTqOxAda4a`2.)v LWX20Oysp̋fG"@11y!X)XyhÓ]:v`] YDVHXJ*Qa)[Os\pq ϲhph] HDMs҃F`$rj1ʆ De U+R!'P $ & BxT[ڛ# ;mm+QqII0F ,Y[<1d #d 5Ti#hB6u>%.{kPm^!=u1f+Q=0y4U/IpC1ᤎtwr! A=}dK%fו BܼG L;X*T42@E 5(>mߍ׏kq &{0,#H Va݇KSFݙ!f*oLdҊKI~!R4QL`C|‖bwX")RcX}DC=Ā.[M 3֙шty>b a_iwivtَpLLDfZ5EE/'ĄMm !+D*ɥ jIM"#l=E?8%YH (0Pi@>d cI ) I( `$rB0' XԦ1J4!5 @<$-E >  (}$Ms؀[(nL4`Ѡ(R33"B !MRC*!}J=Á N"b.7S3z p'S#JxvJ⣉p0x*&$iI@CN ]qkc]M!)wWќH@XIԆGJL灆$AXBBsqFq48{p豼D^H@Y0d(dT=rL:$Qb/3@LIJa2 )2 IH@ I AC$qBQcPQ#99F#0F*GP%=(/J }Ll:@2!H>1(F("d< y.)$x Ո63Ɔ ?h?D eVh*( !(/ 4:Vd %@QURR$l%Z`$4QBKD3 I L$13U!cE H̥4!IE-J#HNX`i  O\E8|϶c89=>Z.ҝ'ϞO馰[6n K̂CfܚԚ0Pΰ^ ħ/nDYDO`N uCJfUvD(3 14xxW( pBDDLJP ǜ8GG$e+A6,HPs QBI4DAVǮ|<;&nR\2c=b7sЙ/6:MAa"0:yh4 XI];d1Cę 욛cyG#Q(GG!fBhI"2D-3$F6aJ6#8D$H!-Ah S&kS,yqP&:8##Gc2Ck Pz@c7dAIј̤A2Ġe ω]X50y""a($='xDPxT?Sy;>{d<8Bo~Tpa\))$)J|,:(A)h)uJPۅTJL4"y % #@CJlA&'u`D/oy{V ^31MNQ⁥Ŀ p8o83[!.ѡ`ʝ?mNA@ @7ҔAA! t|8Oa@(`Dh w";2<}*"" H')KHplC0ʒ"F$)kvݗұ y[7eNX1 20luDAD@ē9 "{^_p}FwQ@%ym z7T^D{Q(V6?".:oy1aN`?:Ae@8WHћ=+-!$*F`M$aĨLCGi I$"M凐|@,&ptDs:J$cMGAISRd7oWvTeR `bBbXdW0t*@<ԔI'ǾM"D)SK4`ЩM I\@S€B+HDFTǰ 2!I( f@Gt+ɕw0H*DBl'y 3@lHXhS@ RE*RG%BJCj)L"-(Q B˹!BP ȺBb]&! ZC'޲@=L8,S +H' 2Gi `461i T<C$ЇӅ5 SP9'DOHM@P08 1*T> NE~$D'DIy8U}v`'B(Fi@9^2 M9Iءxe$Ø:^MS%F!Tl$v9r^W K {yrv5ϐjNkop]dQ:ި1A "'f$XiJ1)J*jk  b;QA|68CWhhY1 o=v =P+`*R =dWTƑ0 'TP?  aC BJ@.E@P)XUu\JHf4D4!@A2u$`9Q_)#$ ZhӇ;{Xܖ*,X$)f=w {[,SjsUB?/sAmgxJ-Lj@B) M @x?p;EC*P|ۂJԈ\ECA3d o: !(@ d @,qWԙ >u*NVspl'%; C!O0PJg]DB @d(@(X= a{BT=EH6SpGM@ox;-㣡|駔Jpa4\aFT1f@R6fBJ+@f 2  PE sTJuQGH#SNE:Ftx1<"dU(,su}HM2((yVsiEdCP`,Ì>E}b hOC몼jQbmsfY$( =:[zxXCPQ,Ҵ`~\aaܒ aÈT] `-_ >7rn[( 6(U V*ak[hDv҄HaoKaQM,֠|mqɀ#kW8{qse(nBȃ(Bh1@ݬCԍxx1:hxFI3 N]G3Q)rJhJ)i;'CP-H馂($X7\mh\2cø 绉S%*l1$ vUisHs@ ]>6g)W/܆ފw4FȜS3>vO EȞ|>ݜ4DI)Dý<āY]DKKá$d 6#̘1vQH/X{O݌%" ҆z:3)Di䖖HޣqDRUlN<:bXHh: H**,KUtH#ٙwqw=xOa/-R=GQ)Kޢ!{P]R R=DRewQ"H0 Uqvy TP΂(Y0n+jlS|pq(fvDi2ɇ*4 L"j% qsݰ&+}L'?I &  ɶ ~o~M6D݁1L}~EH ?Nf&4llPuݜthj?D0$ge*ETq! KJBA'LEt!}(hП!H# IQďB0HJ򀔚+3'x?t@C3wpF< (FlUp>W~%A __'!0\a0uNta`6?G9 B+" P1lZ6ޱA{_zC 3ʅ~xC FDñ~}cs)|~0OHLLKDCDRKBJATQ RKLA@DI0Dm-G @V2T5MA9؋XvIAӒv0hbDӢ X $ZYJ3chMV slDm-?,A1 DeT%txL-ŵ3 U !^wX I!>2JHZ>~[3C@#23TBHē 3EHA!GCv0) 3bi ;NBϯiicLz~|S\DSQh*DB Ӑ3fʍ@`Qi)_N0~ A*Pj$n%g\ xp.1?}2E1>Z*<k`$~z&UF. d.3f6ѩ.8H>m)Cjay^vNvzL=<󞜇Cb(4'F=4/pKǽҔ)G ;(,@BdstzN24a\ OK?K"w"x,"?qP9˞Sõ@/.oCU~yވxOCNQ iL B<ިaƨEB[hW`Ò4M3 PL3{͉;IHX H76 =Oe.nGH `GA.]!!B-(r yXCDrȼ'@IҖZHV' ~~A>);iI:<1vA=ʝ`8.?0'/f(P@dJEiH)L~|CtI?Op @9?>zOO(#A2g)! 9U@wn cvv`""ד@-2;tu`ڤ"*"q`i2  cdѐ72!vJc R04̊.H E@8#$"NKC3޽]`"d d}@& TPkAf Gh|v@;7vMM@6!E`=WGg L$Dݕd;i0 P%ySZJH: ^5u(Y#$S$%-|L4& jx:iO aY[m r!PI82QUP$YC]0C*e$.8scԍ(HoK} g3`\x` E 崄Xf0/@lQf?'nM^sM7QAw6^nڪ<%∧f! iLvAqMq=42,w rb]bQ 44v)ey $@c.vcSWCrvzǰr Ý؜8@H?kwϲJcxor#&\N]`J32%QƓxHEѳZ0c1#TJẖ U(TaHR& hz4=DIi,i-EHH̘;j@iPI/E>dZpmݸ0v.CB Bb)e cC``SqIdh䘢)<3A։"1a!*[b\QSEPM 7~3=HHzb@T1D$fz\C`(ƓSL+eƻƭFm`8& v23DuQv4A2Gxc4$cd SA(H"eG 1 X]<0H1l\ ⼓qyY@8& >SGg14TҪ_'yS.@SXdZ0jH%ORbDHBy߈P:tA. l̶$PM$ ¾NE x@ (!vAseXֵnUjZ&”lm"WiTvY 1J##rm EτnS[\@D>y0k2x46H)SW0˧Am]bz1Hb6GkuuGB8e])Qא6rUJ;PGpI+)k$ȉL D'8[Ԗw:MU'–̦ D ZArq2Glv<`5j{/{LO 6ké +v1ۧgi'AO=N(D`U”4.6Sv14b 30RATt;C^ a2xX%Ad!HpE7)iOJ'~b*"`(QjС/=@p0=ɸ_'`?*}~x# MXX2̩ גǾ霳DhD : LwE. G|>_L18TC촏F<}/;:+X{$=l7Ba#x`<0ph4kHDrLH%yˢ ЅQd\6` ᄙ":D}**gqM r@"m$N0 :D <(@ɈP?oȤz0@9C . DA CᤑR. Gm1.(ErGl;q * ?_}J?Ɩ `"aR.2_*9h'4I@M$y:?'imk#DP[%p TASQ2j4*jXߕ3TgФ|\H ( NCHCk|>OP@|y"!:{WPMo#ӎTD~jc+T>~`a]ⷑ#LB CLQ 44)K*D%ĭ"U!RT| $"BI"JRx=rdjvi"G)& xS.3L$=⩅Mg5tp9X))uShj1Z1ӛgOIL!=S`SB)9S@3Cgb >Q0C @F7xCIJ ̣yn̐ZBR)"T$XdIBSH9T1¡)$I3 R(tИ "*N MDU\JdF\BD\CLE &o^x$ LPQUE 1AI R3@BQ1D̔ 0DI3D,SM{"xEPB!ۂA> A' w#AvHP1`\m5h,Ri0dSd($"V;@3qe"LXc&'Z) 868^@Yh^02¤AF$rN8hM8 ʖcfFƒexHCH$D)6I-j)- %$ j`h]̥0cL4D g Jč'á261QqzBYS)I8cWVx,'P"!?F<<.%v&% J -#@y=8q<@! 9"#Jx3-C"58Kf<n8*o0|RONEw}evWj"bT]*Py_  A̓}udg4? AN<29 ` rCZ>oC6 Qs>;$$U4GZrpM]FD^*㾏rb]s+EJm V1F0`6ڛ`^\ WATeȊPӣhcX0y h$azF*Hf^wjM:f )ɊYx i 8F5]V?3|hK4IH7TK&&?)KW:e0D\  mM8k&3ɐUVj: ضq3hW~'YMo;S- NPAb>䃝oP#ouˆԥA#G-'<46 L6xjf K8a5[@ 1RĐ9dMh͉6eF(.ϖT\ZiUSU1R&sY(=?W{!T9,J]hcaen{eH@159gcNfeͭi`Aeh>\m(ǣ]۾Ѷ&k['vj4q?[\P 8y>W Rmږxg9#@ R {?i;7 (d:ۜ"@`6l \U 6,`x2`wNÉ;#\)EFs B!M\c-͞L0r p-We<v,K !y rGp Ms2ܧˇt=vkfQ D03r&V%4s&fb#uynk&pS.U76+ٵ5 6GA g]7QN9*8khzS 0z2;sȉXj D`q!,`]-2*wqELk/%Q522߿ZF'kfCDsВƒlKyjO i=4# $Y2?{%|\ژ1ȈMnHC-Ng#SI-|,oP:;AfS:)bD|aiD㤃ɇxܒ}Mf5v9ոH8^,'fta0rl'BLqxsSn]ED&$ 1Ȅ !cK-֡ng-]p9*pi7E%o- YhLo%ts'4fi NxsYJ hvՙqe]{g+;7F , B^ *Nǫwz:"61&ښ,~:@JC` E5, ti 6O0` #:c ;$æwdb{ 7)᳀gON% ϟ/8fgTbZHc0]$^3<"X؊5 l ;^N{w谞xM=aLˍf)(pvD;g2=XV`>GuL:hrcYg9tCvE9w<6Ŝ/lGELl^c"rR"(f-ҏD[ : ȹG2drvS?  ##WD^0de3wLLHgnQ+C&4.-^3 |نc`~$c`<%An-. "cC}J-UFz] Q85O( A(yJc$^E&C'I<RiAl >ϓXk|ط=TKKPzFwk[bn { (kd.^-w#NY8svBn`/{i[wN VCJr80mDGhBsXɋd-pr*(jD뽜&%B(@QmC(bCɶӢgIc^jrŇTX;Bt*~rNឡNbAH xݶS⚥0ӻ!ǢqBO#W܅yqNR# QԖ,R!ݸc Z<]y-(2-d٣t1S<4AB艚יaA-cZYH>ܧ2El{ݬ_*}6`5k]8Fhcz3;Dt웇;i[)v|%pTp2@s;invxL>+kkomBP6 -;d#nL_b# G3cZ>. |]6ѨN S!0==b9Zr0|@r/ci,1*;s1m;iea=;vpJ/Js߸ttj* i=ͷj!2/C8H-72ђ4xdRp̶b|L;%kNCCıQNQxߴ\vfIH8 ASG)!9q@ݙ(.އM8dǹ2U_X/(hw“z/)_D]T"SxazYn#2,A"ݍMCچvs [٤l5ڰf=ǩiqVOʦ?io|*z{J+>D-jl` ^{PDDH{:3 \&MFJ0?<˫g#"ܘWFO^?n68lABcܐiA v8Zh4W55<;7|0.KnX0m0ehjc$%F1Mͧڈ 0ș7 gP7!4mt+}$#a@t $HOO)eo$DNp$ϛfgW;D:'c_Uӓ4r>5s9:CLjfYBŕR SC:&KA(Zʄ _N5'J4>h8B9eĺu<#bN'#.Hhd``n =LuܚC|?0&T#Dri*)'YC ( ^-7RɺF)QA7P`tZq&.@l؃GF1*`f0v=lz#"wfӛlM@jʰ"9 "O:P_BP9[(&#r}%ED134>Hyy /MOR#U6 ,O`4huJ(pmIbX6'zZuIEU<Ӯhpfb!a N~1%(\~_Zx1B dcp=rvw:nmz*-lu C|`rƤ%vI'}Dn$64p /=>x"NclC`A!Fi\ Fx.l66!IU `pi(. ù^<=n@:4 6CrCWJUOٳDy ,EUBU#34؃ 9(DFԅȓOGP1]c/DЉ$;Iݿ+)Z _<*f`-$JI4pR.I~C aS /* !MʼXF<>}; 1 H{.sa70Jt8<P ooa唔v LrxSx|ERsHg?#Ĵ9J07j3a BHs{eOaDÁTJ@@J ;[Z YoYMxAP:ab;2&9z`6ыAnx!Ze?P$ _n("~v>c8( 5⇃ (HڂLi&Pr4uVJ{@>!|S`z"eLLIAR@E1A <*}rvdWqCWD{w~k#̅M{#Q31 &♋TJ gGjקQ1BeH<%H\Ͽ|8,o,IqS'~'ıjyb5bv D4iB??'5fS3Yo7u&!!~سH @1͏Fٜvrrz\HUK5.rlRQ=j:f#%17sP9C@iq%R} "$ƍ%"D 9w"'}wL˲XèOecH ]I-E,"L\A@U4%(z`tRSBKD=) %H|u-4#QHPTR1o[#/3'h>yliC$ S@Ĝ7b`}ÑR-4HO i pE=+u%29|YNh%j̃AFVJf4;=iRy {S;ǯb+h8{$ ,APpJp޲)0y(T1lLص ƛKQ-jiDUB7X  o P"-sk HCFVq%QyIc(͒2Q@F fAk5r)Ch,f]5[ Z`jqd%eJ6 =b#ُZؽ<=Ɣx!Nv=)>T*RR&K?`%2ew][o=)*ÑL$!@a KUitP*TUO[=MItΊ!XR\;3Pш[hHxs~"?ax0lqJ0xx|0!AZ1S }d3HADH~A8\|0yuapT$O7~.b P}\ɟ# OASN풕q<$śxL|cBkڕ6=2?6SnU|q#& Ó˧)ADTDPHRiiQF| @D˺Ҥ=?P)BIG?!Bxy=^UMS]T(Zq4 BW0AZCѓ|URi㠪LI:eC]!C)JbdMv]?~r]R.b_^==HuI|a!@D0]lH'v/(݌d`z0(m!Uy5ኝ~H'J$i̽;͡xG3Kl9u=^64tn*fLcuN7nq z WxI/P 5lB6ӫ*6g. Y_&Sf8kf|qjֱ^DF?3y1NG3QtqeD#+q),ѺYڷrT{'^fZdk/ O]xg9npzd!g \Qv; Fqɰ:kco 'u8ҽW@5=MM9]sg$?ONG__5NXtemA]3SSevI^ƒ'I/#pL<ø sP[rCW +i-ʃ}Z0 AއY5&qp8Q8[&8` Q<ea53fvkpeɃ1ǚz a^mrsB1=Ȱ$l:u|hTgANvhv>w}6l(yOXL5{>EɳxdHN5;; LPHþJf?2>1٨8Mj\mlg`"  kS6xdG`0þo'(n˜~ v8Qv&`Kmژ_>_G6c%1"2cLӪ4>Fޑsnakf̾1 娊)(0sj#2F>_[(1f <]C ն; CX0&WsMZ!gݨ>525u# \45tFqZ:_]V%:n<.aǜ*F3>uqDiqwuxŅt:06keIG}8+9Zn;C֒TbF sdԺ*7S0z0w>߸ȝQa9U:ܱ&"b. gic<)L<>Oq3H4 ڢȝx^ht;ӖvN3ƋhATxn^piְk5oحe@m}+$?+qW >{ ÙĎMHzu$&tg ڧvfqfXžY:)N{a8Rȭs J<წEƛK@0bqd0;0fSeKGtI9 bJunmjVk a4eq\hv{b"\+XӶ3!)4ni x%G\N5γ=A7Iۨ|r&2茻c6p\ :CZv9{x9cY)gE?u"Om7tu}f]6KH\0 -Tg aW6'vTs ھV!Y: ⓯*$Ծ iNNF7iS_X/;+CV(mc| ۦ)#~1.s䎭ɬ)D2ÿa`NlUamj a|A5Ř2#8>R&iML6Uŵ7y˷6zl9 g*\\%0`[|vt/^3nKar)&mۭ <-SwNrg;=7{bT ƑLNa3F0KUx&罫$4^ý_gLhqkZ36ySnCQ:S#iƟ>Vц0ӎjl`|kЦ<ٽ4aQde{dD[<1c9_SMmFlr 8©s('Y4vjxq9.P-]4 U 43ȹLl*:5.%M=c8Yb:ޱZ v5+RPo5,l'I6ވ=byhO7eʅ֬6o;/ $G@H[S E >K ŹF7B23C$0\wSvIY &be(CpvJJQ@@V uTPn`a4%Mm`*-odb͵G! ie8/;`xa1+J3߸شcl[mgkoJ%՚ԘAf9&j%xA:i31D yGg yD~%2z٦e_7pQA'KFӡI Ȑs"i)2߳϶jOK97Txmp t mlF0q% Ak1{ S!)˽ TR=1%J8aa A8 ޵&Ujݟ',3m'bhdbB `) `SqObz^F^Dz=<8qPqU r/AGIy#Óp,l*RR&61ZRi+lcw< S4hꓻ):7h(>a^Ė67_UǪuѫfvY4MvJ<Ni,&V(-CEYMӢT[%k|22;VȘ&& nUQƈp ecLcR&d fF18jilӗf"ƸM(E+!dU"ZpШéZ 2RLGy˽>&0V^ŋ1ٌ˂* jJa\ccet=N+G*A(AYPI(@"j Xb&)(}<0/ 0t.N;BU$}d8 fw7#o є%wBqDHZvIm z( M'd")$Bi:ZS",^d(@>E8FeMm40fM T9'-[ݙ ^|F]CI'3M7i @ E}Ea\X1 +Hb\! EрQWX18&-jZfqf%!gЉN6Yt JHx@BtXk FIPH`CHHiiCвzU>k0hL"l7-cQj:e4M  q־e%! I4t2qmm#)9䎱8h*\t90Th1_X ѫEnUzEѝܕ^J[kyl'y#!*#)D@0|J< q7𗚎$ϓb1"SQ犦`8H\`pRtyA)G\bj ωLY jMf u1KYSn-D=Be c8@cN0/V=1 ŔHh kFfx\#[dX&ۣ&\>C$Oh&cy6/*zHn<0G JbG7ROG4Dr"Jx&q1OoQCx* ;q9Ƣrqzo*h| nRy+y-T  =`Ѯwnd{ݩ:;f+wvdX\hc+nt}Q}S昄z?9$Q~E커D}}HC\ãpm67~pCz:V *2! .q%I!dI&J6Ɛt1DI2b &n;׈ieK!M)ꜨC+Q X /D<1G`PmX"I $,6zxP]F"J ͂bжו\. g&{ɡ P3{S P> 1MHNahD=)Xz *@ZbCAD:"C?ĻA +4{Cvr3#ڂ(vy1Mg)6Gfx+B:r',:D; Qhi }-/,~g?cȖpb?-uW V{/lnoʪb/G x+"R8ã(@@# 4% L$"7F!/w&EpI:F6xC״ xsrk)7z:+8ú ~ g!}pq j;!8Gyz6Nw. "Ć `_N*HB#8;a=dBG 9!oPgc05,HI2f骀t"ZtrG@3 BC@iRHp^dWd<]UY'bPSOu#LVF*8Јd 58WtiL/#N+x)$$hL&4ܗeje#e娨Z2 (\AĊ :- j9Bc>Sƥ٥ 4sw a "&máHxȇgJg$rVLTҴ5 $|́ T E^m˹<”I.!ťK1т\ȶ'e(Dvڼ\)8}J$@޹dtqh},8ez.h5͂/"a Éڤ8f1>;p"i3;:,D₌:$Dp"Du15: c >,_37m:&2u`{p&6P>f& YIvV™8e*ggU T%W K= t;omiÑm z*1˂ u+~l[yi( t(Qy: !",>hxdx*i1]dx9\+BL"$QoeF jVwغixvvśᙼNRϳb4lHjDE(i'NO B;1@6e&LAPbBIɅ`H8 4@%+ĩ!LKRD>{ B T i&A./UBs8 ^4czOV&3Uꆁ'=F㏫Ue>$G)I R|-3TyT;S!:0uM8zps!ݩ amd̷Y3 r>8O2GS5ܾ}b>4w7a3 $uU#r!WP2aO}jw *f'IbS A1. WynuM3}3ہtp6@9iNK}%yВu 02w0G# #" |iLb>\ ܉cIqB+# `R*2YAuB$GJaidD,1c"*B&,1SINq\&~p׫ysq `DOLv"VQP(*0J5J$HEm 3_iH6[ RMڍ,AQ$@Dƒ5GӶ6t@S^ NdDo7 @JccbX0葐BWz!} {:?I>2y:bwQp/LHD M_ LJB$ `0ϓ@YID=xl`# f@(Z%>{ >JmD;?V2 H cf_~ZZ(Q;J;K7&|In CHeZ TTXBxrC'{u"!0~.9.DH7hL@n|H"X)-~san$Xf)"h֔q5lbA. ; D)|?PIM==c !$b$=Ru&D ijci#X`& UwC{  (<\@=@*: /TS3Nk{J bDl_s -<Д&hL0[KAIHI@a|#e!e$b&(bZ`/ (.!Zxr}!%MMK2 &I "c{c (f@-UC@R›%gK{8?g[xL5T}iSzS3"S^c> 0p!C N%-wrt`SAGMHCYJ>>+-'Hdȭ,)ZRd&Ѥ]3^i9U;l`Kgq%% `d^ai|+CCi!NJί.<ӹLrzюVВ{'frX}GSp&˨NpC;ϔjhp_UPѠH`0aJd@JAPKqȘ1wUA"*1|=^xNo^4U+E~ E4{KWmnX΃B d~.V7_L?گ~f "Iˡ]fӶ_5yˮ.BI5ً|r2yWp8jPdI y3|j.zmfdXq=m1/;' Vb T`sn] tflNPa][<=zfQq^\S[yvy2.j8AHˣ{fvNwCoZBቶ2338P1Q`b1"*D堥lt=g 1 ؍>F ,ypx.؂F~Rbi[V#bXAcWvGՇOt/`K06rcZ"X?c4Bk9Ћ-תɮ:av 1ma(V)3&`ohd\i()"VgR!xtb/:l圲ZUWr 76^w@aL ]o C '&0b@hz"6‡㍪ ޚ0c6!L'`PV w3tI^!0&ь9',+hnܛ/^8✕kC 2DN7Xb%cC7 s ]Ջ\q_鎙6 k)Vc1@[Ek|K*UaP(JB)8)޲܄)!q[ގjr9F3ШW'*] E&8eP2!B#i6r!li[7T2᫽`ֵlNY*iC sitH7Hb$001/؄2*2P p!r42|لڑf 1=]ugBA8@ o"U 4! b!`uk:'" XFwhÒF!bSѕDc6YɳDJ=mgb Ru}椖!441p,8kOl[ԤB\ehi ɜ0pCp}gqY' (BFw'!!С !dP>dO1&q[p$(زv\&"]qBr@!3w эlhr.8YMDR!m2:BUi=~.+l߉iQE1SM -t C8ʆFq!2Ƹ%;5tC0icC PP$imgSl1̪"qh%p3HX2m蝖͗I nV^j:&.[$sB`>PZĦ.14A -1!qip: 'XTƖ NAhTm aOiNi(@4x6V66>E 3 g.9X0ܨo ZkFWuaSt"lr2#Hl!T*˼dqjQvt2`C?9acCvhD.Z͝Lur9N&A܂䛏e4זOGFxTA1q`|J(Y[h[<@yLH:#jщLc >wA6<:b-$ 5aUJU)yb~RdJw6q,'ShaI<^f4CpqecMeZmlPH(be\$6Q c@@' 8$+FÁw&R0qE1 I9OEiWH:DJ]#JB4(C҉H)ĠRF”&i -br⽪LĔq$SPO3 TTQ$0@5Qx&X%<!'`=etʔ ̫qoE$IPWbjHC`l}{dA6tq^ojiMpW* RpUA 4&'95i%U"kgMbDO-AXnVx* (Sd7i cP%лB/`џ.7~fn1_-"C|QB yZ*?%2L(-xj _/}`1e`E yY¾DEd$=4v W,j 92 PN7"z~NIrb>!rryA]^]SҺ>,Q !ℨ?AjOGs`!X+x3jqܢcQ$dw>DQث1. D2Z]+!TfiQ:`7rr` fbG$#9; ώr2+諟mDvnby&TP'jܼ?FGyvֱB3'T% 0HůG}qKZf]?vrߞ[° eB0P tdUxardb3 @c6*AA7V7b Fj{N`FQr{ӑIdz&Ԫd0k-K4^Ppz{s<A(T)Bdkx4c'K |^x  (00]")(p\g$2s1ƫGuQtށ*~yj'ImSTpC=#xIiz蝥ŸɮiN=4r?@' p3T:&nL{ak[1 Bt ɖp&0':&vyy.!y>?o;|M۟ (sy#Nkng!Zk%V<zD@l@]| Țֺ="3#aP8q\>) K\G9 s {Hb h=!9>w'*s}c&ny+—uQ}ENS^tTorLW"R$ؒ(\q l'cP\7kG|.)h%H'yj|~)gB60[m c1t MG,B2W{6V-(>CƘqe\5TABQ=dϫmYUas 4f\+Cb=|5;<(P"`  nGA?U~&4dmA3[@6گhf v<2wɚmֶ&%5l[u5BLNWels]}#C X"O'/w<7g^s|voi+WD_l9 1@bɖ ni^O 1,$%WWϚ,C_jOG<4bexh{սpG!Lqfi"}-Q 4! 㰖sbK܂*Z glfIC-a E֬m@E i mLC[mP*NwAf9\KArI$R̍31{׷>EjhF 6gr!QBp坘1 f:x oIl[ dBLɓ0d <ѡucf`0wN1(rAW/| F-]-՘}E6&˛~!`2ܕ, E5 = ".RVP9p$M'O xWY瀳Fb" z;^_Oɇ{~C޺`;g?ÀX7! 1ofy&ȢH@Ti"4N/}cWۃ%utn: '9WiJC =| }g>|ӲzCt3uNW!v:!? ^:`?}G_ugyFI_А2[yyD*Bgx]Zxř@iKJr`p=I**R K "Mm[-EkS- 7:Rj>-oы=TQ5JM:~,UsߺN UUJsh^eo[w>BO'/kU? Ŵ?zF"T+s$Ú0<ѯ]Y&׮;I'&8]rlOt:A~-wZ4PqT1 n 0/kJJxwȝ]b; TS?]=*OCȇOK0yPR7*=ϟwobnX_1 ow˼zWt .͂~.32oGs4T('Q:s~O71O :=]'Aa>n+|kg_{n~{m*Y, x>ﮄ5r(.s㷚ݞ vnGШ(arl_Y@!޾e @ⰸïRLV2!Yxj_*Aa`H8P3(͇l9݅wo~6qUy7@-Z fJ"@yCS)k *[3?*wCXP0Csjů36ڭ~kK5|1G9Qa c" Aq! A򠰒nGq?n/[nkyj5lu{7rգȂ+^hpcvtg ~9:!r0|b2fC׭za(I$n }hֲGs/Hi T*Y!=oǏN.}^LC_~ʸnW [~k4&~G.NM=wͶv=v|\Kh9?%]og4yfeNq4|$8kD`M{sw<|OBj4rqյ|p<pQ,(v_V{ÊHm$( s~]v5lmyч|<˹!`w<>oE?߷_) ugᛮf_S~2s"}u*xCy۰c.)\:pRP1yOl^[ck- A'n#^׊ ERc]ރ=dƍ?U5Gu۫E$wZJD&}L24oa?_"OD&v:ݷ[(g:ξ=]5'v|c1Mv~ P"xOy|8C{0Mv"oDUuꎽ.<9*?5cniϝ||qDLWx[W0ëIt[GpkQ *Z{m /uYҬ>:W eXr}"!X&o'i+$_*k &ÐwgTn|,iF/1 ~!NxtWR ~sdwm\0[;5:sֱQ%jr BbI\T,"|'9eߖQUȓsea-7bDAw_ܢs7reW>? NNJ#0LerUH](nz{ y& .z9M?)B'~M sx&t=d e1}? 8Tr&p?mrbKdEP1,Qj GKx>o*ŅԺR,{(9A$o¢l%gP^)P›0`¬C⇔hQzr̆Ff~Yn)X727씌㾐ɰ ;w4qM 6{U{zW.O5iWN3Ne{|+澷_/N8{gt0>:$`Q#io g9ÚA܌c]Q]\ާaD!}95#呤i jasqse|C9-@FE%ZRY8&_MRc FGe A ]{<ⓓQ$`&Y> 0YD.;PXN83!}`f:P 0Svn63<\bq3P~Ÿ} >?:G7@e^AIJv~ѺSRu3xjd#2>9](y1Xq|,rR|Y5&ŦֽQ)AU bO{NsPP$RE H5AAHJ/${xCДchd4֚F&ъ?:LU'Ƚ]/ct>X_^!P`;w㟮,F}y5 pk?52W\[om1&Nַ"!5.0LnƻAԧ/ 7E1 $:٣XgA2V7o3-!<΢u6c^ ]+ x}HJ׆gJ哿N $dv8f۰.ݾ gkkݳXzոZF!Ar{_-R?SM!;{xnv)oD,pOG |' 2 2nC0#@C"d}P{>BhFSu+lהB>{cKǟ%={Cַ7rDT@n_ ޴{A@U =N@ >+T^MkٻN(PĨPQ 4|vٲ{kl fGo#{wtN7nM5O[}H}VPyL}:ϯc7}|rklm4m7nmVUq@Lq7wvV{nj 5h5Ph93Q P[qmKmn;k6Zfhʩ/l2Z-5YtjUn>EUldLljHtd ht uٲ'] iJU $rr0:(r+UiE*q0wM4]ۻݜ󳮇vH\TRzǽ@tנ(vuU%uZ-h9w{ il0 1A]d[yܣ5*>fyz.3=w޻}]}vv[WtVէnv{46mUJ)^+FmJ/j }x@|`삵kk`BJ l9맻f퐊U*T*T ;eIږ{;gm5{{kkvg^n{*sj%wq.m7v禺Pռ;UP۶/vۺ[}_8@7X\} =4TuVv}2ݷ}kWN@M۽kw3}}+kuNMqi׽ƺ ڙ=5z$-19UDE)Ktmai_n&9G#_Cokܚz2WSe3Р 9n"ҺT op DvZ= 'w2sivc vJKRכ]u:T]15-vn۩u!-mjؠSmW@fg:;( Z2wTAB3iu=Dn)Uӆwsz[zg޵k>¾ B;8R #t nvL`Fqk$T Wvùër*};ڵ;g:}kEfʋ&9=3ȽRځօ2vYTií"= [lg0+Y㤐4\҃m}zoM嗠TGl C[ŨZB7EO"|RM)w53vgOo:WuWZ=g;βv<׉ơ$/WomG;M7(P3F@Zf-t7[Re֤램^A=T{/ub>o*sbQ>SOnF59BℐP?b"{L W]78I2?M;sD;:)'Url'.WHKɢ!!ȠD '@=\~҃C AAg"PxMȤ'c"/ReD( dB%+x)p*$ Jj5̀)9.E (PPHR%"ҕ I *BRƓ!?Vq!@JBR%+DKJARR ҤJ4T41U 0-(# 3E$HH%44P IIIMLSBD%CJEti(H((F4ENJ bT )HХ<)JSBSIM!Tٱ4IAJąDCHR+BDP,TMs bJ"i f&"\L"ҴAAPАK@EIBД=4@PBDPT@MJĴDR#QJ(P~2N#rADD04 P4PTJPBPR4RPPRX"79SW cQ + B*)mȓBJ4qU~`K$p% T$S@AleRNJD)R@HpX 2M(DD@C4UC5A@APDUV%n6-PR@A ]QgLIQGg4At48i-#YJj%4R0Iaˑ(ՎzyrW }MUZw({Nx9:;ʶ\4R=ms"Q UC_xYJ?L<C+QqxsڕZ[m5Z{.,rrKGo09El:Rx R]0z('-3wa 9i-w6!(Ӿ<Ͽ:Z7|{1/˙hS`b%1@tYbW @W2l7|F݇Q,>]Aa7/Zrs]ÖPE> )q7ļ+| mZK#ۮvfBHNv=zꓩ{#^ED`tjx6k GK/<{mف  L=G%xؓjrTt'sE[A8K0_Bßi]!ZafF=ѩ0 QcLh6G@ 4 ~0J-"8AP4ixEXtHuR0 =AG@|g=W|^@+Hu;~)W厢ǚx?N-s8 L aj(9rN$^fU̦񁓃1ţXl ˂cv /%բ"1w[K4EIP'WԶ 1)G{]jP.R6ʐ%8=dMPJf]/fȵV'~ 9[z6] =@BDڤ*(.-y}.1,cL!RGcrd_S.0w\، {E98|53\b~^yTZ !X.!%#.Eq._- cdM:o'9D/ȾLfKx><>%QxQ2H Yۂ:GE;' pL> wb@ǘ"xOo+F 񸄌Yhr&]F @8a><{2Y, Ayyb _> ޜwoPGȚ$լ _s;Ag1dt6rčLǷ,Mtq-K=uDR3i\>)`]=aLQ O֣+-Y?΁Ҵ >#$x拦[ :K8G2GŝzߟզmUn]kۻlrm )y=&v+N#dWE ʦ aa:ÝǪ]pŨ=l͕@ K^\ 9qI"^xPP% J P K6|}wzm)G Aϭ5{ED%|^Io`gry@ oG-&JPX\ " _ T=]ْ@ gaf-@\g" p#<-]@X{ga'̼ ~kyY L3^h%_mj!qd?vh,vkk-z k6/NcxiApJ_D9]{o'I˜f7I߲]!cGK?PeVAʼnB. )fhTS JmR$:Xx_oڟCHDKRK."*рqD _=<$+ВGH a*& ba@R6 W_M4'0G%̠(Y _[30ׅ}d7F+_Kuf'ƣV g~oR\YI߬$@RtZn >煙]*S=BNgaTuUbsZYI39b1b*y8n莦@TD\A61bGW? b=;(&#v6AV`U0po\% ".")" VH hj"KoOmi >.N d\?_B%}@ :X"O?(yN9ڙuT.KCa a>4=)MT3.)C1P- {*ZVFnu4U@N?L@R_M7 I:qG9j^=, P B > |wG(Cv?'r>OG4?眹̠$fb }'?W_/o=?'{:/U0d" os: HlC%iA1$^-hwԯ}Oƈ~[6C)?CgO=?'?b5n| *RGnX`m|iaM=Œ0і# Me:_+]5 fSUY/'׳ S ]ˍ ~J4=OMRQ@";]OZv&CC'h2w_;_;ƀ(PE20g.Gjߗ#+ta œsĄ3)&#l9Y?au'Cg6mGN,I%mjbnæ*A2pbfHk(A_MAQsG#d_I~ y?QA$lcP%sVЈv-2g^:xHzrBb *Tj9ߏy>m~wǴOgoWSU<{_#{{)~ߵ?r ~^63nhꧯn !嶃9!eu>@Y:w~KVmPrCCrɏ Uk*g.)ΰ8لD7LHDوöuLn|B$)HhģѮ)=6"ߗ)s>>{K0 0CEQ+!,'߃65'#]"r[KLz J74%WV;|UW:p?dռ831'Vp+owYN&f_L"3]G^GkVĤa(<2>'U5.TB7 ~@t(v\GRqqHF:Wuюg)0k9h@e٭ TB0J.fp8gIoUNR ·2|7k΁=ϓʺ4M jUD%a:psx PNZj; jB,l Ln=Ȟa>^Mx2$OP ! TQ @35ns@QÆ%:2Gop+Y@t(B`:ExhSq!`C#IITDD104 2AEDPE%0lr]!붚`gx(8ڎJY *FZ7%+Fpf +gi='^'=^W':{\P=~+.B(,&#ؖ$*-da&_~aH 節+!zb׽I{kNe@_6 A^g.Z7':FKf/\@.x~bQ9*ЕA$1m4Dm0z%cv' CMc ܈܂~>;_ nNnImmKZ"ɯo ӄphvO4`&&CGغG[6ڌ 1@aep5&G ??Τ ˧NQ7C4ro2X# !Ո @9oDqJ}60ӈ6vPg"h+G@ x`$x!Rxr/*HQffC7nlnn grq"壜!M$kՋlɼ `5Av>2dmK7)I8Amu!7/`i,vC m!h3!Vi-9m#G3p{5GD֖f7sW\M'x```PRJo(:Z﶑a'՛GySɑO8gZ"G«{^FǹA@HrVœ/>&h|tb/,,=sk6ܸi)rtӾ,B̢T:.&^ǏN'i( cңDpc}yNz+[&'u`( i)iA%歸lRe UT!Zc.^rm[\'{= Z+un| <^vڒWSFt{oVq-%2yroy{ۓ!ݱL&BqRX zEamJfHe = C@ޏ&F9^Um(t&ĩL KUU6qpyw`sZWWMJ ̈d՝`G-U| U 7GDƒ<0B=r k!>aYP㾿];;]?$8cvG&1":əd?{9 qẀ+B.=.7=JǏ"b@vUD@EE]z,E^騎\Vu{wx"DOY=]'n=xw F#m\rLJ{﮻Ey'lp'U#q`4T6,i}ӯÒttN"w[n෗g6 6#Rߟ\WZ|X]Qfm}Z|^ߎ\gwX'ddE-z=zq:+_M:%㵁P\(@KƏ'X(u Lu4F< 9^?nǍ }/cU{VAHpxbyz+=}/a03tVdzGۍ=sI? ǏtJ~h r G=]Zh "DGxvk>°p]ᤴw %/1*)B Jc%VIQQKEmC F/x'}JAYIAHɷw2\9wqt<9#n8+(ƫ.Oepv 1LGB 0EHD1&k&~?P\1Exp&2mUk (1>+1pq)7vg k,wGD澒,+(@@ h>Lp=aţN.yȞ8}`;gRԏ'иN4I 'Y=-V$~7x@MsGZ~(>(fٛA9ؘ]yp8˼zȇG0Ch$1RAZ:d2Wtn6-(859E~jӼ ^SQ~WFWכ9mvϩ(v_bH%{D<|k ą:G.{r JNyQHîni2汥ԇ?Ya ָ2BцIf-ŗ7Z&GM:O=?>`j$8~Y`RxĖ߭{W/a,Ԗ%K!lC\\GG| V{]zĪ+4)!c*N] xFP&\)H(ۜ۠AzOy^<Ǵ t/ˡͭvIegZ99KdJSV\\腺+hE_Rnͫ:ØsUQM:qS6n5}Az]EN%TBm/lNܢܰ`3.x91{w$0;TWhz ->ɀ{7Go/A0a?Z0ӴR mݣN0H|c Ꝥ7 WՆyZDr6!Co>[X2|.azyǏVnQ#OqﺵuﮋRŮ)^7>"j(R{аQ{0W' (lRM O&ySdJv =ΛS*`s2d@}[@&t(ȡX赟^5r/$^G~8Q "Us5[u.+Y\Ό׭6ϊv\tCVQk![K;w6lUo(˰Π10qFy] !&L^s|)Eae$p%8s!ϲAEy#}ǝaV(gL"yܒǹ䄱1zo dm]]kdu0O_:P|9/ǧ ݳf8(5)PHGR+ F9<_-8o\U`*aIlervE,2ycz ZkyGX͐g 7Tv3h&OM@q,-Tf3ɛ^BHh5k}%, Axl(+UʃpTRT87:x)8 n%3->60\8 汇ɯ W<#w:aV?z%ktptxf6ĥ>߀ {HaI|2pn|i꬟K>D#>mG5RS|R,YޖJIjK?%UAMq~\vܱ)N*:E_8\{-GU")CuۅXiUS`ᮘT<3:ٴopcƎs1+EPndt4cDV /?<}opūl%x%-B^C9TWU%HSM<憺V-ڊ2E G ˨|)"T&ZuB*] Ҵf_` c>|- "P q:ys=7|2aՊƟ.n[M)eAZ<x PS-c4&7x#{qBkK.EH$cs77{vEtTsZv/8J ~2L#ba#뗅wd:8"|e1xdA"qd7(61'k9W-m8/>&ui~ɛǕcO}0kxrG?|p태/61u My=E\)qӝ,D9Lv۞` < VHT*" O?d1M AC.M򂷬ҫ#Ӟ|!Q9R;PCצ*:qHnMtxc賋wiтO*75\ʠiUG;}_ֽ{쇖RZ6x/)M21YMJ3{&\2|}8՗fǺANJLQG&mܭJKO[`6lr{8}76#)ڥ5TlL81ڔ%8{=Th߬UcMFa%Y[e$:Hvhk)A8{T\2;4la9H``َunmkɛu К0jz+ *m-K󶭞Z?ZF3+a$?!:as.?F,-a)Z|.5Y'T1@'7[]մXxY8n;QFW>\ɐ.e7l 2R >2W]utA9эsX+ݤ<׳WWb:_p)O'2ѿ\-B3nyL-3mpF}N涡ڹO[9'%߱ sal26LSmc8fr§Ko{|u| r&ap3nHHTNu7knP%mx30(O4yAuؚJϐ`$.k^@j=jC7NXMj)]vpjm`[.igj4A'6;'|PHL*a`.Y_f]C삻fFH9/DD+ˌ LgkT])jsL:Bv_ȣR CF5vx@SoDwsd1Jql3e’o&;ZQ rn/e &,aͲD@}-q8 z ?"Yj"u>z q3Q~ml\'@O׸k Ӛ:F0KA {WzL!7VnĬ!ox0s|X9jV2o^6!|{ٍ%j*k}-B6! G0Ώal4w1^)q sTҺY$8D_3@3uaQTxVӨõt`ݱٳu|w3v|"QYN|TLa7ysq -}?ۯ7Wᷔ'lbJ֌ytADD\sq&G2 Hr ԣIrk,(Mh⨀CnLy ""(!()")(hffbb &0I4TCO|*!ABJP%!!APQ)QT}d J :D?#i""JR)f"Y)[$TM4B2-+IR&A XZd"&J*`bI(ije`")&(*(&J"(b*&IfjHmB5,5W׆0S$BKSTQ0T_ZAU%3MQA11PTK"ҲPO(:#P(JtH??Yv!6v%4&AO"G̨DcD4QCEEBQ4QDDDPSUI3U!14L`E= (`I(JJ$ZR%ZC@)dևҔ*?fGJHP"8(`Y`"!!%I L*J@"!!H)&` Zd"Fdba(XdH (a) $ *"(" f"h*;"e *Rbb* *b_vMEe%tD/HHrJP3s9) BQ2NA&T@H) $JhL(}Ic"uzp mM0AF66jwݤ$ d!hJ Y$" $$iJ=WT'<" 9;;U}5@@'6)?'١Һ֘: -+>_ ZQDPg{hX> (Dh+e".xxE|[0..mc'8øYnsFuC`?72ɡBWI/lRP'!)&jCD-(v"|.۰}Yk7cxrHr *Ox=!UPl~~wQҀ&H #@?ӱ_XU4XA#@^caћRdVlU <D+7 [=y~dY&$td[HAJE0_s!F巺|d R!ixa@9O Hr=-`έ)v]$xy};2WOGowV4@Ӏ0`5 (M ( Kj.C kܦaUoד씋茓jp[\1 |CvY l,+\_(jԏYpoZ7Bi[/bp{<a9""iOYw4hX PTxrR; Ў\0@-'lۼ ~޻"5"Tn{ez@=K<(!E̍.|G5# q*>1qC0$0@T$=PJq "4 }ݝ<=|UsܾY8s`ID9G9cG1( ,J40y4 S TC̅.݃@yG/d :9WZe@/* nĴrU]v.\lΝrHm F:E%6M0BxG[+M9UQbۦ` 5!d=@& hߕE2'PIPn'||,PIN<;?a<ȇ:[; 5=l"!'_Ōc{ĞЮYR~ׇ^iVܕTٛ-"52#,/5(PD`uqphCJz<ީ3A Z3|>LIG >Rs(`d{{ ]EV+wAțkp>) 4U i^&th/1Uwy΢q<(rE=s#=ir3,9U-<΁>h Ou't_{%ݻꎉS'L@tV?|x!ӏ[?3>r;߻ H`gx&RNi`Nl$Zq^z @?2\996/^b9<k! | ˨鬸w *sK!F8M}Zg;>TQGnPo?!CDg־ov\ۤa̓UMU{ޡʨ $JދL6;.y4W>ρ4=WKnGDKlP]ChE[Dz_b-$qg' <`^EGOd22򭚈-fv7yG˴DS7'ո3$PJxN\Yg!D X}ahwmz7h}|S@ߩm}vѨAWn_DVr4Q`Y\dI97_ֳ~?%n|7#vn]m1xCD9LX׺ŠN.z2Px%BdI N *l')I  H0|p1Z?.yPQ9r.)u[\?A̬3(G?Gكd圴eȲI&Hr@r) Xm6{q'8s ;>˓]ۛ$k=)}f'w Bt.HB6Pz_ˀ7(j~ Umo%C-')DC?"d)@ w+/]8'5Vs0s}pk݋͚s3hmt*b؀Ҵm (R,'a7_G8?6(=E$XMOX'Z_^[CFsAnѱ !8ܳn# 3ߦ!,^5u?x4:\8JB߯rT=}7L߹SyhARA9w]ޗa5riob>-\<@sjl-@<:G$[#D Tq$2ä8aLSFr8v@Bpl*SU4|a` V47U?TAbٺă3ƧW G5}[4ESO >4iWMګ*tL][s,}7ØʈFz ܋<=Pwto.0@>EAȊ)vURDJtHK7 1o.FhC, \Ͼ[DiyRcdC]a=F+` ;ө^y1|t& c~#8!09!sb4K:2ʑ.|S|d^명UY?^DtSOSzy?ZmwͻO^b4N6#q@}$pfGC._c_P\,0^ׇzbOAA<;y}}'zrD;:5zGv3tvhA0 !hqdżt/#ss=ɻڂu!%pߖ }/ GNo(␟qv/yLϮF*w|"XΡ*z3B/|!>wRc!D[4*hxrTxsx!"MZwTM`hLDAgs0՝J ?ݶ N0)6҃m(DŽ=g!f|NDJEsBqp:GN2A*=Fs kc,j["rw9:xxZR~hͽzoj3/.ii'*]ɷocN9"پu%=pPGWԽ$^S ^ɳEFs}r  s$pxXa͏RD{cF(u;q}x>*րC=CJ1UFg||@8cn ] L:RPE>:ANq`W*5@=j>VX..XcfhǍ;"^q/CG.⿓wVJ@+:ʄ9 V ~oNaw9̤v dL#4ؘ !!g.@# t&.؟b؞3仿~A&g!%CkVF@ ^OJ+y$}i7 VzࠅRT8_ 7#yQEW7>i00($(vݝ5n $X`/7iWQ0EFGCHHv Gp"{})׹؜1ZLD16j鋔jHa5Aſg/Y,QTU*C׵19BAJy桊]^'KyRZU^I2g8!^.Çt7l :?d'>/I+]rR}Dt݇@unuvP~_מ3׼= 2:Ú~J?FRVjVt8g3)>ҊM)ڳry{1xϒ[qň+p`b@W TwI$co Vʛ= z\_^9q8|.u^VFNL55LT_X#ǖf~8@ Dȟ AG٣n~_x00mWXFR`Plg؟?ا'y:+cTq/G d}#Nraxcxl܁F%2U"BqƈPlI@Vs(Ps_JB䜱րIv"c (.o''fΰG(|G􈉳Yw t(ٻlQR )5b"MԮKO {>/]~nOc$'Ě{) RZSq۔=='8d p,$j(( HIHjC݁>⯚0J@Wyz:%Eañ J`ގ .D.Bkl5r FZ{JH>7\KQo”M0{\S$HA5R);"^j(N18)뵾w<='YEk8 8OALrW_0LU[Xy(m̬I4tpvF o!@`HT5j!ܯ|H[pc'DQ>a;}wۈ w8 ܬHPrT48!pկz{>?yzh51;8D. #ZG:b7b8j?ut XƝPbCcuf Ɩ#4B"++[X#okγ4_|=(]ZBR 3"_OkNJ-瘐 $m<,!hY9_-O(Os;ק@4B((f ~ެ~VV]吵^Av$hMNݣ1Tr9f>HwT*EBB,+H~) ¦?=ʹ.|{sy7@Su8d Ǣ.EMrrƦݿ9zba!z^3-eu BS>1=L M@|l;TRMwߏzWOSjSoc茌_nH'>K}퇳zTʼn痜usj(@"FÐhT:+f߻Y 1O~_dQV1ꝛtlNKc;~Q{=4{dμn5CBMxx}_P$/9)u~ #Ď@8s땧LUbkL (I ?7snXLo.]y`DP-S wM>xdx=ZkDeXrD!?9b.nScf{mIqp$ BV"y5 ·ҁ_Aܼwf?6oSґe55hAFՔЁd!_3UQ CB(_H<?OMNd!Fx}!|Tx TMFTN<B|9Xij#`.3Ut8UPO7%ʄ*qh4$(ۂfEq)u@U=q-__k}GL-OpRS[bIg,I9Go_saVݾv w X .}~_D@(τᶝ*^)xoL8~/yKJ_E >9·g sLKs+I8vP쒽 uHQ  t>SX+{gt<"5NR<Zq'ղ4lm) 9)ۧ'*J 8;)Ȕȕw5;9 %QV#!rV_̈́2؃)hڶ~`p&) DhT|YdXmECr"r* &nmvyuZF#YMSnYvai0vzPDx>xFC9 rΜK& <8tإ3qt,]_S#Mʵ 3-ڎ*\զҹx z8$Y(E5?E:"Dj<@a̯s'Tݺ_CdD鷈7_nH^NNSYk3^~m~ 2}AT/"j^0o$[V}em]HlDڞ,iYX\Cc 295w3l3(j#PyڎvAROƯIDNs|=,8dVb}}Ye#5C\[ѩ@D78jGZ'Шdt)SAN.7'&}q|ĉQ^ _`{8f\GguKYvu?J'087Rݕ*9[T:ef>=ugJIUX_#.^FS 2Ӗ7 WB) d;qH(Q&Hyh2BόLBT@˗j:3,}J5HRZIsӱ'^2^6U'F:R0}@1veߋCe09º8$9!9-sdJT˜a>-ݿM!uG:NPڡvP/$ޏ!ҳrF6[[,L;$L džI}tM\|d$&0LĐ oTuLdv[࿞_Y~۾y=SXz8[/Cؓܳd cbHQ0 Q3 &N^BmrMf:A2NntQzH{'1߯҆vZ\0[4YDH̄z5DABB34 F Pv[f 7yasz]I+1rWv;ʚD'$D-oBY |r<٢@kb}^u(_v0Kh"=bM۽JtՉgRݐ=1!vB,xǵ~L&Sx7콎p9џ~}>)4[5̉hy#ӽ4NAѨm~+D-ߖa6aht$x}{@ (||}gh<zђ3:Y@¯rWꨥCa[;yfrOJAxN;,OŠӀ#YCk6F#&E>w|rXm%cp) VL` tH 16~fRAC OӇӗ/TE=Dsc:DGp𗹃OCں^p >BU|ܠAB+DDDP? Ƿ]E0#/|Kf{N`3ד4wdhw|7@(N@9deT)׮c E ̝@()[O~_yK3?%vDΣl\ofg_A<]̹1uL0R.U#ʜ%p`!{spLFhCh?1"[{um߹ۭV "[`Üc>poEJG! CxttP02'aZt.ճLiK]uԈDҩNQޢ3:Ԫ=;xLH.;0$~_͡9;p N=xۈJpVSUAE6vڦC^q#4k*2kTߝA8̎9zs,=bhMn&M h-Z=v?fܴP(iAfvE g]fBlV_I uRu@)f}r7he,H|^ p}5\\;sS!J+9yp8ȎMF9+6Fzj؅S-T@N*g G'fjL2%8"}5(܇"sdW哌B0l`ǃ5p \6&8uŃw̅bLGRg?.~(P+!@^`q~%x#x/~x I=Ցxָ+Od\qƺp.7ڌ,K W;|9Q=< '߶~Ъ:+jX8~- w2pVރ 0^qDrO2kzs+~9P8q𰲢P ;MNxdS+ups/8L_wdUzp.*2Tu|nQC6rwa%FQq)m ١Ã2G0Լmȼecvi˳’ дzй:ܾi󇬑EUg9Pc{#D2Fyu]ښ"Lm| >$iÎd]g **Ò㥚wиH ?4ʘ%޳H?2 EAy&J5ffv YbsYKQqHc}uN>:"p&=s6AbhfURtQ6M5~eCLCK."c^Fz“σg?_C{̝Ɇ3o]f\FPtvk@ҳrĄyH; Qɨ(2 8W95D_$20ʅ,:Ww~ {bltxo8JY"7{IG9yb* !B{)8@.t\<8tC@?/6rq%ˑarA9YިPL.K꾋(EC6}ogi_Ϗ|s:"Gpݼ"֫ŊxC,5|d |`j@//bC& ,N%zY |p\f2឴q9Z;Ȩ Pv5#3'KXm@6`Ydt(=æK(2g1}k`v-Nlrx|.1]cms \so|w?VG}w<]cJF'(C}x~\ $'ܻ_e=ܮ}lwtɛwf죴U{{RB{q)#)nbc@T]=hKWS=Ѱ)Ҁ`5tv>ṛ^?].9a7k]ϥ3U60.|yeB;~œ_@8dx;tO[!};<0oʑ/۷I$ 2`Kkl{w+(&ܐ>pπ'p坾U7`t@WN= x!'x176?:w}[AG{r2vG)gkP vQϢ$HH;h8c3`b%<3龂iSgGUU>W'\}))2J;0& u0!˯W[P@80&G!A,+F$+ndraSAmp\,5mn-P[ ߃UXuT+n1Hv,X6ґ:!IMe(C~ 16gRSPJ1{7[džNK7EI=/lpӺZu"te^zQj(2x20c=NH}}燸VhZҀry.%%-"x)!AE<_{<#.IJ5Tq&gkߖ8^@=~$xIn#bFYOEE=]@3P-\%( MuJE"p˥A־R(};g֦#وx.`+#QN>Zi2i[RA`c`K)T1(:_ |I5[[U6-+ P90[Jc:CG唑J78:w-aZ/!%u]\ 14]+ 5Q;ЙsK7#= galnxg~1~Xw@Xwn2s7["`s0 + whLoS3?w`Tïfc!waqsP&pb ^߆rkS||@Q>Xa)uk0qUNks \~CN d Ң9 TkjMGnsL++T/&LR.3Chno7gnl8yrbdp5Vs+cɗu De5,q169=9[n[ j.~3sk|z/m4~=&XM/ʷBdKQ!- 4ҟy~]@LG4>5k"Wo;RCaJBúj̆UD^cːJQMp?:Y,WA,AH!7-,Ť/΍c L1[MmՈ{†VjI`9!NN&ȎTpGN1O qۣҧ+'g`}+4"L:V8:ji("v++Y..[,:qj c\zaokUKӎ$4S;|%4:/$5uy)B!Rsv@W()(MOE6 !p^2 wh#pI'GPv, PP׳`ܚe+۫l#kկܢ]GxZ;<Žr5=4ێd'`zM{4=@SFX`210E CY;/mFȉ ]1̨ČE1=.[Yʖd%0*DZ<) 0]~ж1LO`9n2>kԪ"dQAq lqHxFӫts 4ĪyA.JۖIh{8]\7TBJ7=;g!IX2!C#fS-~Cx`s"RizLsѐ 8Q\i}en-N7OZ$qnLj}؝CE>x|o^N8_1h}c$3rr8#ucw^ gZG3QqCipv.V<|N)Hz$\ 9 O߬ZUy>#.AfJL12.?Fp< ;1' ^EL Qwkqi+Ed9$Yr>!㎢ZCX3#߶ ~Ѩ $xDWv`;q,7z՝x݈9:**#GՕi08Vp㎔N2rr !o@@l447@PRphῗ~IIL@?,0998C[}}4AC!oE2yIRV!ם0bYPFA9Ǝ!o2FPM=mn1\xa,2"2` )솄"+Ei&UaIW`m PbK.\ 9OrʹZB!&˥n8%PY}f!о*R1a<6 KEk=:{(#'7#6J,)M3{ǢuDVal(m=UeP)]@Z^$Fػ(nߌ1pDQ+l*N$.n]MbmrCwbD+jf ZNQҾyRyw$-VR\CATSq$G[R(B,'%26'a[aՙMaHK[E 52W_$  mK032^F؂XS٥q3 Jr;^T=f0%¼͔ErPTRAV-ylٔRm5YfGlDz3(ȷ>-Q^en5î7 ><ޗx!\*\Ā) zQcӎjE$}\*'gP!֓@p <*c15|NV+g8Hb\^p~nJF25Ҹ GZQ+  r3ې n ىMʾgc'o;z/rXa[ۯzZ &?6Ϭ{{~V';[/ 齼 jӵBX0*ہ+oi}|8Mm}}~"x('X?NPV;UGfYOrzp;B*mwhim_N9C|zl1.,-UϣNI=&x!M4u&<1#|a/8ꯛ4zld!C&'_r@Pv2M4(˃p8 Y_2 )y',81<atÓ2qw(n}?^Pϑ<x{ P#u5;QeκV<39p- Cgj^ d88\?#ҳ;%ox)3ȇ̐{_?\K8/A+20[>$qU#nMKz 1K٢ !l4X8 P)ɢ[SC=x09H 79+5lt͔w=~|/0Ft(sv df+&x6SE EWV# ]۰Ctf?iћOAM <_\xVIXNHƛ>A@D`Q\ bMCN¯M.P٦zbT ]Ās#@o h';1 Μ!Ss@sڄÉbY7.vK!Pi%Ah]wR PBn9,AМиZAu8O HB:Ĩ7x qAwq̈&ٌJ-೎.BF{@VՏ nݪZAJ?Z.!>'CtDk_&Kn?VE݆C|ƐEخ~)mr hJ YN\E @pMɉ8^:^S#En{ZeZ. *P}ExI_L?y1 Ց lگ=,ۻ $+Rx/tdp:T?< 1b>ݬ욎f+ȡXTqC MPP2?s^%o}ϣI` > o4=&㥐5m[YQFM<9.|zaȪ[pABar?dc/! NzUob- Blit# Y9hFS23< `ߟ2{F*F^;c;cU1\,^͓:2m!D,@Cj1w΅j_.}jDQ~3d!=XwuEA1价s{wUmUwjP}OrMNO xm!6 2aϿ;^T]UT,]jؓ,8Iis#fօg DDw__0+Erk2kYm۵G˕-NJ*rm;0:B'Ty3HK>v`"3ej L\o0/Y^ ݮQ9k>+xzS5Xƪ M}Os:! vMvuQXg@ĶEG:B!K`s1}uΫ; iUizPx)}!EQvt@[DEDNCp^n2/_/ikڢٛ/u刡E +@R#(EuKI sFC0B.0PYKT ID%qGSY01b(' jaO2s9Gv ܥW*JJ/5- ׷9C1 B@e%bCU@L xȈ;Dv 6>n#PZ~c7i :m4)Vm-d}̴0L 0,p?Ђ(ҏs+U^bA[/<"|%ZLH!B82c/EOLS 6Nr{p=뾪h97Kz݀yR0\٠=GnО[~Q@|𥢃-ԁozGZ=y juhh-Xb*sbg9fO9൭Onqwz~y |HݯszzjEw3;v ,{NG`u[EyCuoA[nqEn$R\, P`0/oCD)U Om'-f8kФuKPxQ },# {Q6ʁ uG1<}->H!40Nn8>Veօ&dLɀs;& _ԈwΠ {Ϙ鉁PvCHM R lT;!{$)wY v?|VM,iCka~DPp j>m'RCH-0EwP(UW&hdIOC7W6;s pa<d>É9̂|hsgϳD=wM("K/wq JX䏴0yTX믯ՄY) :rz֥kʵŢ, $D+9#IO ؑ?ra.VU#zT-̉-'E ?rdJ,EAUCo];e]UPZX؅cHQ{mӜ\EhN =@hH#/Qk0F;z ¼ypV5KzQR7B0+RYpPP3+ N=ik٭芢/pΟLBrlk{ĉ25慕Z8O3#w= /Iba7TCYڬ>Frp3$|Vgm-;8)% [Ր882^۝A;-ʤ&8Inx`Yĕ(krhh0ls_FiƆ"˩hjy!$&ujtCSx䄏lz6x]e<}{OWԇԐ8"J9:77J: m  (2b= ªT5ֿ+gfj_J> kQf慻)z*)z>ۦd00Vxnif|&z< /a"dB|(IfEN@FA ̓&YF<.;Z AC:1'N,GF߃2Է K>tlSV!FL*X4v|2* {5b-D|\BX9<ׅĿgAAMnjtn|vqnH{Nl228mހRP(w (9„#P=zvhz7X#p+RþN+W "ψ3%fIJn${goX2,qa> lC*c<3:XWqRzBĞ~zy֞32 s>jޕFYM`1+s 9#. wR1O~a3PA+zHq2Nÿ|vuUdBji11Cc+Y&@2˘FHpՈVь X#%#u:$c:? tC|UP?yC_S%Tͥn"po9ȫS'p/ Xqr :MS LgڿK_p˛K;v/3ۊ;0(Mwhr,ѴLβ1k$u!J!`7=Sf#Kl ;6Ha3#Q@(޳H',1:8MCNyѾp<#\X!{v9@p H(8<{` "/xPP _}aDHYZuƷ3cۇ~=\4o')Ocpx!5rt,@&Whŷ׌ dq(x]`^*Ki\ec%Ρ5NNյ!=o~,K`C:c͖< "eg L\u+7lo+zb5.l2ePHkު3{DT&Dnq60s.PoD%+n"c6xsSžk> /uviC28M,h5|!wCu{qՂ2c*zXˣunxx<~XvEupcI557VU^ߙ̙ $l";} ;Ǭ6k|i>VpϮy=}{q)RH03Dz/?dI!$ r+e 6~7I<Ɇ7x*8f _M6|G"IO_{ڟ;f=M/ÙAF  "+NrmކPWM~!ֆ_PhC.{^1U01#k$b.֢ui V3{2]KaA NtHQ|gI3uv]A^_H$o:~Yf|+@Ś\h1%''^'XV6,S^qqRg<ع!3aC.B,:>Ȝ_~0Rk5a,}srVdmJD(-:XfPhD,IJtSGk_aXq6YvƉTQTG l!ŅlˆNvR9;`y "6 +9a>#X] A&3ĤHǁ|65l!JYnT}Cޢ8\ k`,0&%>sF'q~ϊrvG=!ϚTjhb&ڍ*_{@[";c4wwѕoKf! o۱.}54P v|.1YhNH}1yHpMO 䘖UX["F sC埐0jqc2,7ǒ9 (#߀$vf5`|KI5}@i*8ŗL_+GwQ=ÕO*<݊8g{9(!rޯȯ`TݬKl:8(tt\0Eq "&>CǫO1h[nPҙ;d) LgXS Rv6l 9[ !ǸYch!_I~9ĉP"]uV1n7E<$𠠜5)-1`MM'$u8{ Öv <\%TgtC6.Yװua}Tsp^;7,QYAaEGU ; N!Xwηg#_YBg/{d$o# PQ)4U6sY co :5~&ct9L߻,Ɨ'IsѰ8n2_='1ÖC>> o;{MYVoNJeֻe _VNE%CP^D\A͵Xj-`}qVۡlKP8>H@?A2C #,+ҵ qmك)F1eӳ1t&q!մL?LM3Vl% ŅQ~۶{&'D{Rf#&`Z=W5R4gBMU͏m(?=q X}3g,?\IKx W 7RV"%&^1J7n)B!h?u* &wm"-YQatn$XhсX0h=M˸ȺjDtH%]>AI\SGwI{u+Q0 9N>Ò~y~Ѭӧia>8q3 *` DtpDβ;?3Vp/AGŠl|+\}a=(["Z #[!$he<5{C |$+.'Xb|>qP ך pLITnϳ6zL ' DǬ>퓍֘&:]ɧ:]f7YXB #< [9'+xC]gy%5V#{G.x`q# Ndfrgp%eT_:>x;Fn3p1.F0? @=܁C7xPȞX!zg[z|_rWX+;RFQ]B{ bTx}DF>N0U['81\6E@`ð l?24Y"$\{[3R ]2UX.Iইz\TlFŜ݄aն {aҩzۆ,< 9)aAc}"D W=/t *(Pm 1= c)D rUYhP@B.m<@{y郬vƂC'e? ɂΠxB>$z~(ܝ8(K`$V$i%$s0;|S#Sps؊@Ŝ \quvʯX2ivˎ~qDg-BŅ+cu[ ɳe޲09"VjKd{үO/0xI#,^}˾t=D|ǬFqixLSiو K+{!aø@nth|r¥ڑIEou0zwaA4["@Pva锪@r}22C_4#4b1>"HE, ')QV^SB*vSNodEm®kT0Q^Lb hY"PaBtmp&CnT7ASPQߔuaAD^.w poJ S(s)^ɱhK渠NLv>zx>yG.>29\u|;s98΍XdF[]7f :XYMlϽj nw=|ٌߪ9 ]4|q08*x"?`/:V# `,G yK1c'h "%EG˯TXP A<4u΢D M{S/"MDQ@TP-fC6"QnQz1 ӿqG!>Ghѧ.L|8P0N B!CO>Zf/d lfsA瞦&' :s=}ά?C1!Iٵ70xzImDS/ES]xxd*'ĦF AL|GR7}3hl'']f)pCH#/GLmBDgv ޅ+3|1#\b? x" |*erfw%kx=~)Bk6>:d /z E0 ɊoSjwGA4 &C\9TASB-o~uϿ. 0 8nѶ,AW Z* @fnZrs$E.F7 C"}Ю&Mgr,ڵ뭉o" E`[%6L=cng?%\,qbhorAqVu HxBp=l8~'s"9¹yf20F(G4|eݠ[AIAp9BX. p"iv>N6$$2iziBw҃XA7p ztGSY ֜&EF6D '9o }d `B5b Q:VLTMx_HsQ (A͸֏=.H_k/&XB$d'ߘM{B'*D,䪓wխD% X"Egql6(6 *( {gG#n5`(Q \ x\42 wI$s^' c5zLS<K:AE <# .gpsm{3!qZ=BuJnjկfEDP=8O29ģڋ*/q Gx* 4=#6;Gȡ,9!*` YP rwskhA!Px|vq(xȠa,E,%c#R֔YIQ3n,YBtvA[DC_1džZP <^ Jlꬃyt2ld'C_p-0=^bR)*&F1:c!VAࣨ1nFG($ 5*m!@+/@ K=%\C%vaU0ygݟ8/[H$?SwiKmj-լuٝqϭulYN]gQ=x ue5C@a@ GDdp4-Sg8(0ygT[\s?ԿAs撾x/ JfD6뢉rP@a-񛀻-Ш\έ$ϖ`P!/(ˆlEJ5v3x AO,z Y3$^ugu-&P̊?~Bc}%+SM4nbg!sˠo a({ꞬVFR-(0E>Z4c.|3V6y/}ˈLx_Nlu9-+|wW )Cb(k5MA8\=wA 3frT87s!)^ߟC=pbcr  o峄9Ue+0R%ea@\12M s$ǖ|K4yAfx۳z8GMWoÿ* l|0 ^@*0:jOPcVݪIt3?$xC f+lb U@JRf"%X^GYlq-ո6[5d5a@+<_-6&;al&T1*w xŗ| @}E,p؟;k7nd6s,g҄UA"q 4JIirRH03; 36OWn?R:`"l; ɕYٻy HLը /fQxFȺ fd@JX,(z惒Xa'˼ b&\_(i1ÁqMZAv͒,Zjfnr)s^?Ӡ[H<&<$`&Za/WA0;DnuÉqHk2źRu >wƲ=bBl$$jrhjz'P1L$kfO[a0H+$`pyXbF\ˊwZ:M|(66`S6H?݉vG;X{ggOۇJ$wk|sn F7xc~/K !_v1E!g( j9΀/ ʣם+ǣOn.X^n6ݻ޸m55;)֯E{69_B! !6zY< oO8VCg!ݖ0rX.幠 fBU%̀6FX~&_騹B qAQ&,#EOƤJydrX{9zoi"8ƷԣKC`7ˉ 6s\fFNqitcQjؔ:QLFjˇr5zsq~82"aď O5I0Is¬cxPGO—!'#"\OAߠĬ&dP=o遇V:#B% (Aٹ*!T5̃S͋81.("cuf"lW+7z(C:CWn*1F}RlS߹5_8w (ϥp'Z ԆB r^q> Dў`zTÏʛڤ"i.^#2+_L )#z">3]Ŧ_e(y)sQ#)uyR(y B-usmHXCOhU9(`;ZduO3k8iaRi Ѡk?K.x8$thwN8~ǜw'qdäpi0r|Rӌ9]"5bV-'vޫ{4Y{Íz ƶa $qOT^ '=8RK 秶C~n%F XP۝E Н,u۵Xc?9EMO01bA$Q:]@9;7rVJD}th=S:2 W<Q>t;rTcLʭZ0K,pP`-IB҂&HN`t$tGF. w:"/2 z8R]S)R T뱏FFGp`I nr@<;C.m]lqzQ%]KBoUg ׻':9 ?=TW }"#>(E NdIG7^02ʒMFaˆ$dk8pVÛk7|@qNsj0A#&Ex.f(Uf=Js_w깯yrZ45#Ǥ;(辥5.22gnt$ysMF&F@F2Z]j1w{2NkW' !| Hg^<[sb QF,Vݓ؄V ք"lf'\9 ^DBo}2C$<%$fp,{@d PjN<Y:/ѧ¸zhkr:*Q\9~ K*ݰd,G0e FgW|W#p[BH<#ݔH{GgwCd%I`Φ {+dV?w]E:baE~4GEETYv?@Tqjk8K}N&Կ̈oGǍCgs \ՒΎ;cqVbn_8aMQ hyF,¸tOGcqMG`|@2orԑ. :Xt?lwO4Q ެFFȇ\:c=+ z_ EE&G¯cc 2AB.+b]*"1!|wq,@Hs7oW۵$$Aǻ'ugbӂpbC6pXQ*P-Ĉ3D px.8l승 U6UAA_7['^O F }Ayx!a=f:҄-յeoxsD,p5lر:L {L,Ӄ>/~*2{,fi|o{e e:$#D;qcs!֯ 86>+!3(рz|Rt) n勹^)Ur)1Ue2t0NRKTTc4 *RN9H5tvL!eevgmzG̣-|$56QeYBV {(# mĶs :v~`Ș w"d>70?jmX^ i s"ɀ_mSꀛ;B/IFMͧ4M w6+?U ䷸HΡsyqr%X/HGdxI•iԉ埉Z\?->*c/|xn 4qsـxRL]B!d}Ug>̎&QmQ(|y{^(cy?v6ڀHw]es,&mH8Yp (b+@u2!Xa;"9)X&y/su҄!QXҔdd7'K=-ͫx6澒غ{(}g.i}up"Ky]ï$;C[gϛUHHZP٨h6 ]*Ȼ:,g)'5JS5kc5Kl"B_ncd`wl5il#^0\l\ه{2d0}WHz{S@w揝yia<^IƈnhpDbi:'%}~ i;ܰ1qroWuS)xUF3P읓d݊ {c9<2p]!n2<+iƌ3t;a%3yM㉃zQ[9c }@Pi;y^Ɉ(T)rN / <,]38F n= w^mFqMn! 9FTO#3 򊇪 ?#r=N'㢊(`ŀܻ"* 9(9Hw W!<V|ܰ\e־,'H\'jU0`7kf2,dWE׹ۓ  B)UV@<zޠ}t 6ΆRzxI[yqeԮ5ܪ΃td#D,` m{^nskqT'p=&p7$ًG~/qR#Vvr#SHtH\C=H-lxȉZiug9bξ4I|_g<^I!?2. $>s\#{z^\D'B*eXx0 8c,Ծ(90qJ})tvN #x7!(t!00Η&>' D.K+ׯh&ݒ[N('%J2Xd޿=7KRJͽmF8V|/uŒXp1Q q4fU 1fB):ﰳ L4LuKʑy&NvbJle^.t$30Ck6.]u_/QAGQܬ#vcт~ q<5{9 <]7U.Sܛaqr#L0KH7{3YN9w ϿZצgfnnEXϵss^Qk25 ܢĜLJ$"tP#@Jxs,`BD(@NhrՅzË)heWXjl]6z)UMxf_b}p}{{^"f҇|ך3U3M~fpCAa&_BR(8*Bn'e[_WJ#w3?VPF=f2v96]EL+NM K÷fE  `UFʏH^ŅhQi4<]Dsp :ODW HWzBRdb9֯-PpΠri2׋E}ɢpQ péx/y6 ¸ђ|}%ii刄}"!oywʟ}ϭ*TD>_5BO yb^_BX{)4/fl0ٮYhRO>#_v3#8F#4k'ƝZ Bd|pL?!=h?%#HFÆcJ@Y\J GY" A T>2c!^挆VA;SY".oXןuc ] T*i{kpq6"-  |5-K6 Q`N6l^*˷m0?;CxM; z9ge7t҇?c$`8n^DZ5.\BrĹaX K,QD3KA3gZ+&b1RΙ$}2)hX_+a.xgcJH$: T\87+0VC "rw4%SB#½+3j4T㌾57BF>gT@Q d }L,N>-1tW/W3 !#qM6f!.G`U*4=Ē"aRSFT.'C]F?NX^?ߟ}yq)x' F] |D^rO $ Poe-.*O_)o@>Ba5/E^ݚamm 29< 9i޸4y )ro?v`g5)zb2=E(ztĢx:p'rHZ;<#E0D`ɧ 22"2뛝w}_mp`*v0Hu5Ȫv+̰)M`5ٍ1tpd lNU t 'ۣ"YML_CTck8ypᚊ,PjG%htF✗ud9(Ÿˁ&b[x,R8`l"9&z\aR50z86HEfl=W&A_(?<5>'H;[sp,j)+ X٫K h"ʊ,җ:l@QVbS FԓNQlT(ȵ !}(w5'@0~g$"%#]A#b{{ F+S5!*/,yQܖrskmO#o˳ɺ]*)›'6Onp "p3!F`$}[oNw wVm]XΫol%\₴bƋ s Y 50Hn $J |@е.>]_y7k)EӔ\X ;U7o핬[lEIc%!ОyO#9ʹe^Akt]b%9 t F]dM/Gp7j ^4Dh˦^[)ݪ$#gbdtj]a!]eoCŕB6h@߯w'TbOvv3r6. >_,M{ۛ--ng]$ue}@9D-_삹B(6hGՀ]ځo"I(ayyCUlxWi~K"eNA72<]9q$Yc*4Σ zjEܣ&VH`u!N A1U(SJĶ_Pw܋3mKxJ#9vy黗<,aRa=@\k^OOY@ $Hn"pqNr"l}QI8FFN`DBG )j^ 4}ړkz1]h+ڀtKx;n?è}x {$hahy'aJ9r hD  >lņ^X NHYxb̊>!ݹ\](Q2]Ov!.YڄJp7Vpe<0s(Gd׿f4j(Xڍ| YC@("'TwK $ԧ= .l2/"QO.;$@{w_|@ ·:k])y0= @$w"x`8b(d( v$VGƠKKyf!7>1yy>Zq aVVbS8 MY)e" H! `CΣ!8u燍DGp`Z_qAbZU((.B3IBQM0 \00S2CHĐq´H:W B"( 6>I/e$$@&!͠@i<'9{9,aב AS,4f1UI1R B:"ELIECMA7Z%yfJFAb\R$N Ě4cc&C#K2J&nBP2j3O j3xcK>YDzaP6 CD@8(O%u8zwf~/&l=Dj_Ll ,Y)H!T*r*v \'W-s_w{"}hrK`_7=y{}{2c"ɪ 7(H}'/λ(s0`Ft-'󟪝orM z:sI_#Vbr|O Ŏs.?THtTYJ"\a6ɼCD46/c~zy xWdC4"wMUFD5-H,殲n΁pUVf6c̘ysGFi2kRD䏸jɔǒcO U-I,w xѪHN!1f<ˋhl4d%IcuQ*uv=>&tsL#{2!zQ7^FM܅zZZ%8K1W@xw*pX>5]3+\P!7#0+v ϹwBa Kj%FaHɘeVU V_7Ɋ B,?_62>dןM(=ӯG&f—F棠&-sW˒G+L/$ jϖ{n}j@Ǫ8?ȿ;2 5^.udn'͜B go/P?8[]x[4S`dDvJ.ԹP⏊l'7z4#zsRȂL2wS=)`\A7 }3b4`3gUa쪢 B39s&ju 6}P=0\wiE>\/$CS!ˌs/t1ECG|щ~i "l~p?s:WX1=@]AY^mȃ1G-̓377aˁ5{kI;3،z|QYZb%#M  fOL[g_ H*hi^>=_~x=05K,?^8 *_}Zʤ:9Skdi3Z붺_hRT!Wc`/KW,RC9p4ږ%&b#02Jdpk[i1O4!F l20f8Hd`YG݊XŠ$4$ig2 ;4Z@W =dVQ7D7dgG ۵ OLgE"8`R D ҆5eY(r"P:GO~lpWuȂ*48Œ+|OC A0?+T$4DL ;!?D|`}~>b3_U!Қuv`նl_MA@4hܷe:i_˰&„ 1S%se$΋ "H$4 3E[l-Mîn8''4i3ˇ(|nLFn 8GͨV֞UL.KDTKNe;߲y_46U?]sTD`v xP4#8ث~s 6}rO$ү?{8TP (3U@',\'VJea8Ubz-45Mct+c饘4l[Wk_U Gh')p]LJ1[XXO- 4A]r&:+@%tճߠ&#V=]XbQO_:g&a*(.qGy!x'Ak+`uM0H0*gF2 [; 9x!bGdi9UV\ \8͊1O庳+Z*~qRE|u btL?4x7006} 3[>Ǘw<!ą\Lp>@~ߎn âH;Y (݆7UBǺ!d];Zmpz2k(L 0'ZCA2b,Cwv@1!1-{ҊY\M 6%I1)hlH>{>XtD@pO>o΃r# 1iB~y8y3[YE]1Bci?pO||{=aԟ `X"*E-h KS~}A eE7cAU1 Y>\y,M4hPFF.?LE?DW$I0h( &"d+ 47W*6Cj@2,j\ ΓCK~ 4 U6v3IAT5[KӠk[ft&RjEVGT/OF ebU/_~G tRJ1F( o4/|j46-@VU5;FRmmDP.pؒD$c:t;q6iJ!{'f{"0먈xN $Rjy͊Hnϱ-4e_ ? Ĵ {.R;(j)bXyhgѨm21r4*BS4:q-j #5t 5\?b:[4u7+X\\s/MyEMj9͚)͒?-1"!^J8&[mZ di&dsΫ{sG\F|}h;aqAf]Bt&ќ 7?H"DNZ쵿u?\|F/qSS];-0r9h`R@ߢU(/^LQ"/@m^oA+AlQ/_Ui4N ")=N;=_a׌czȽoB~m<:kI:x$G s b> bdD:|/ۤOߗjY!p׌A.>OHtFjz딜a( B߼V9i\Y[s~ra}=""8a<ɦn]њPMvYy%tt#C]"^e!Eڙt,zi?ܞ>oЋҨ}aT * P  P'=Ƌ8Đ=}=JX`Ao/hEך鐂4:n~oMggI>_}GӹYW](;rt7qJpΩONzhwGD$~:+:e|6X3\}Um d2o-k)Y>,߯~xMywGV8 ;`h0S] ; @N_ҧȮxʛϓ,9TL56'.=s&~):Sv6p>ǷF_ NNtF e%2H #;y8NK߷}N|TzmuO&e72d<<'q 9$=?;Ԁ{m3v>#' G3ml'ohH, ~UN(N>I?#<[a%:_M4DTISAaߺyFAqHFSSDx^^nᩪsD""a, I`UA!'p9iC0{; Ow1@~nYc)$$h*)hJh &&Pw˒Ssr&h(y<`"AEPDC;oy @E5J8` @qK+>Ԋ_Opէ7'FdPAP='U ꋘۤ^J$wϭ$( u`G 88^/Ǵ356r"k)FWPDWMgX~3 X"2ݒ-X Kui=ᦡ\M`xgG?h @*t+?A:0tyF b;X __pE z[JÆsEć 5`r(OP:LYs wwl9:z7|Dxǣz%V\i2m<E]S( D r8EÕn_~'`#- ?;֖8yޒftm`G>Mhޥ(Q,U;2u3Z{z]%)T5c>gy o:<"O#鏇x |Lɑ#ݳɪxFD rsz>Yp'i&ZUКSjyyS?7ߧ@KD8 Cgh(Rn}'7yhy"Ҭ'3\nWE>5 ԋthCe D3<ф{*Ǘ/h~qPRU?}O7h\|WQ0O"bA^"}$%p͇1uME'unT$$Ӻ8̃s"HbƂT4[IfҪ 6f?W_ OOƵU`ct &E0DV2ZfكO= 3A/C|:-j|ch9|ty#yRѾ+xHqx:eDMNq)Mv୺bG^öͨ`Y>v{$}~jDhJ#C~ {2xk%X3%KuaU<Nsocb*'4FH6Jy_ x:L$$8HZKsV`Q4R=^8Azr}g 8BG{տ2# ,}rT(^g|>t\UE\qA;" b;;<>o7',I uejU*aMtMA~%bg P$$RTO]Hܥ8XxR)q]%*좩U*5td#gdCZ " JB {3pC6x!R-pY B}|F}1WU+.ΡۜuXuA9Fm4:zA>'ނA7*?8#Pu ar!2I}M1*jH/ʧĤiak{2C2/@"H:vU#7öD\x @]M&l4i?y>ޣo<~oxz/p! 1w 퐝Ҁ+!>O@ 0D 27OD@6k${Qx>gK?G:@?O>b`MmTV]#qb5-5HRpd£[` @ Eut<6V2Ua“4Y LSX3/Bs|!sS'DT+~wRk!ȬE) CdRuuQ+5ڸ^CDA! ۯ{H?#y\88}HϠk\wrd{dnb_͟63ƈSP3fx_ۨ&9dz`եէv4[$O1$=}\>U( h8(L&gFF>U?j2g ?zbс >`;&y,XzvPJo[wNDm#vp]X:pٍ*)Ȥ ktRFVix{0Οcէgzu՟'zٱG^9_D7/384;Z_Ȱy7)*DFb4hJ\aH4uU3u7]k0ǚBBNAi;=FAcӿƢ䝿ّ޴`hlC#Z}lx'N'<9o70nﵰ6 ]ӇSMcb1)wJnl63f*!S>\fȆdfԒZ^hŸo4cFa 9@ ڢzШ}f>M2["8KFtQ^^jq/N?'=iC.h;؈Pq/su\Խ?XqdWI-bynMOQ`&MWR.0#rGOD֫\ͥ3y9[lQ^ŭG_T m=)6&{ ׮&8("c_8?oU<=B ~p`I\kW49\qxi\n=~M:s{_WI_mI)h9UTH뭄e'|ya~YYQ#m'/<ް5tyHs+;_7YPf#W WQ;?h`6 GqsTre^~&ڄy&V{q.ýg#FUv 041c#`B|i,n" $F8 Jǐ ҟSÌ].ݤٙy~nBgm t9F4>OZC)~j׳]"i~Mq/?NgTCgnj:U;1RA4g 6O'Vȃ)5ɥѯ7[;Iڈ>s>o{1"S.^~ G|lHKMH o?QIe!'6RhIs)1 gq1k!3.iFa(3T`he ״6Iwt$5c}vEjE2h]wBY! A4{ r>75߿ s1*zfT"1yE`$UlMSҰM`'7q bxK6'SZC /)Q7,| G(@1/UGRscd ()ڈMEOWHB%?-? f~_ݯ\U4IX0#045IlD'&u}ߺhPS(O,Fn̦.J*Lx?ue=zcZ> (8?b(Pˋiն1iҪ.Fd<_C?/iE <&a>?9O\VZ*v=D)1o `p@Dx|]VKMFݽ_zBH/HU@ QȿgO߾Y&mOeʣ_CO@~*q^W(?]mXkca+|J&g(u~o$u`Zy9QO@>Pyc~/NMGL|{B[V( \DP!l?4J< :p`*=+z< .ݚ'd*E>߇C;a}XŽSvj2ZP0:Hu ϐTߙQ: !|IHp)" $Q+HZy6C5*U9D܎Wl ;o_삠VD{3}yzX ԃx-QՇH%~9h"(SB{RPiu"F^>@*iC+| 'ݞ^m<ܺjj*w =w4455 D}o=ogWWEe?9 6Q3Ԡr꺬D k QzKjʌ@m#[J;Vv sBAU (wa|=cÛv;0;˾01qx)LdLM_n3c#8p:*ޛ⤻6 'QBsziiÓLQlt=J>X8wQd#{eR-e*r8Ks '/#Ƨ$9B0@YOC?qor|/\?sצt:0rbGP'TޑshjQi=A`L5xU ݋<\?~ByCV;V#FpهL+]urWS_̻p;:鲷jw!~6k+MnV#TJW7s " I6{#ח|lk?CMo͖7tbLrisHLhO[b/qd;σ˜ j5B7ÈZAKoˎah8DdA^):|.'h H$9xxD5_+m Tz)Y UWl[yYS'(QV?';'71r 4>K^A;tB ƽ_/葬E8CI83To:Ltn4([Uľ!_֮#K ;8Kzguxg\;uq{Qܫ0]p{{г7V8CaB7A&yٌ/nܮѸ3n8?{twVx|9ΧJVt_TSy9A˸!3;wk:savxyآ^>w f Zo$;/ RD[Md7R^Sgl^5! jr0 jAV!a;'M/l-o8Z]߻~;6AlYBQuuǯힼ}>8wR#Cv[>1XghϥQ~%,!+*UZ9A*>uA oSwEtPQ[j#8Ԣ$+1XW͂b>2 !ܲpXRNׁ!N6gЫS̉eK3z9-Sܿ'?m9Fb`#?f$0?nyMs)!û3)*Ry2c x:T / -87{*6z{{8vȆnnI7H8]ks]DCr+,mpf{[kt}c]e~^Uq+>-^45gW]M^调d'iRrojnß tVUꖨ`o7 xQ1X^F;,r^ ;`օ NV,{ΔΫy=ʶGxݍkC1Z3j;B_a%Kf%S5QvN߶y?PCr|_,#iv+oPu+"Mp,v䶏;e.˦30q\Ls1D:a5P꽜o3Wѳ+jwLgS-7R"Lvs vPSy]*K^[rMn5n69խ|n4Hs.}nu F?NaGIbC ۹뿨ߎd}b}~TqUB3qr Lá(}ܯEB([V6B Ii2ՆyHb*L?L*txpϣlk!GEo99;U=`Z[ȅЮ5`V".Μp.MʽMue:xJZz!'lӁ C=Oj?gGB ~1b~3 ˪OJEuINa]Ȯcai(sR 5?n.)TJ_H]y_|;*V#]sq[KbD( x|o:"Ы–@68kg`=nB&|4GcB9 X- aQ'a92\y xkvx]H@А}ПaץUrxk5P{=m ] Wf$6`l)p6lotgDoU!{X&{P٨ly_vfYFt+I5m`,a瀻>3b ̹ 3C@u@IODusN'=rSa=s?#8m;Ti9tE<z><_h wd  ؋ Av1?p.U^,5Ym-;G4vE> * Si$ըՇn~EeFT(1J?RZinb6&{YŚHyw?]JMKJgG']D??aϫ)"UZăIwFN8!Ӡ,=<>~a_[z Bf(Tp׎| |R6;8.H]!թg;>J?^>Φ Fa?P3S5ᵭ0#@H")˙7ɠrq΍7x3m$J¤*|;y{4a\h_}/QAgh}\q@hYyU29E9{`ͣPiȳ*׷3 Ŝ#]ұt@kq.󵚊5.sZw Y:K P%C1tIbtB!Lњcѐ(DJ L>;~Q=>Ou ҞvQ G3=i&1o?' Ԅ]_>@ۀs)64Mn,YCteS|Tj;J np7X1)?Z=C,0YJ [9pODwo[Bn(,:b-@ ~"ǭXU >E:F*{}~j8,tGȢ^иSN'tWo$K3Q r1*3?=_Z|,6 GeM> ܡ&V#ljvs T)S!vJIx={ڋ>uc`n_+v`_s}0_9'M?O;)(d?x!ͻۿsrn(i<b;e@MMrn $D?VxA۸"=cZAyTCN]jd;!*?A Rnc$ hE E& & q𣾲 L:Rt)Aٵ.*q'1 goDvUj@0,"~&̅b &h1 .}ɲ 8䎊"bdY  3Ss tD$-m .Ѐ֚#>e7`Flk7P!]}~rZZq c 3.*3:8h}ؓd;gfLk CF p"g IC& "nvgUHz`T"^t]@Ն!)h;R(h0Ne+:Ryɮwa6;N,-UA s 2(:3ǍdEU0 # uLS'8Dt!ycm4' a\&ֻX6Tu6yjb馿yT&'bN&4|ovmGqȗqDֲ*QOcK `y š %k#EP'?Fqopz,^͇j$=_OU h0Z= w . ~"/%;zy ;RJHS\Lkڧ}SmSi 6ݯݮǷv&_-vGHG׼_l:;NNuvB tK^b( hIs>G]Kٝ +3Љ;Ur5`m$6_vâ !-%Iӎ?6rT/T"^M|ЩjT!Ȩ_CpO:yS< zO}N$q7I ϋcN+;D#myejyKPT֥)P;gyv. gy 'qyxۈ3ڏE;.! C6ylO"@R by33H.LꚚaY @@hsP !!$1+QyPs؞-}yq90ed5c%HXpGkC<2ToVz>Q.rMvydnI7^&Xo]g`[,zy2ӝ07ӓ (l {8T\ ,veXfF k*UĂ|C<_sq ; koYDyLHX^$DɢM? ;bvi3Sm}hqbLr;[i}? 6gEk r #PGe Q9A}"<9߁M|86C槎J2DgqWפ{[uL#M|Gl&x;=;q꘢vcAp" ~ ! @xrd7/T5-5;<F{?O"L |a']NE` Ӏq)_t3hl':@ (PPǸ+ 1M{G*S۝,7G0}هWzѪ"!PGp&f\6?_gD\\w_H$J S1kd@G\tuC qzQ pXt B:g8˱ 8worbIQj""T@7 `qroĝW哟nEP ;wqyveͲَcz a#LޝfKRfjF5a\a t͖h;|n0#Vk{ n L.)^|MjL/I !FC"bu> J8 jj H|?-үPTnHJ.[Y-dqGu~Ҳu(D7VҨul w?O TMi@(wKZt}ZsSZnŽCkW'S\(#0:љx$OȄ0.pcR@LD?-霈#\!->@"h1rU ıf 0(c"64'0[ t6j)wQg30 lso`~햾qeFqyS"5I,Prg b **Qg> (OFHS{P .P:'N>i3ϡ-ޙE@{;|!]8wSNvQR+0}]9 ) ␘AH=aYqמCsB?=`QvnC)`t?ސw7$`.҈G{/ߪqvE39:v0(VA+ CDRdBv]Roc;Ua`DpPrwlk(Pv M~' 8$Ge ~;1]<}Ey7h[G]R&S2 `Ar.q W{q NG8 ҁP@F޵h6߀M atp` p_#"3q"w"BfJݘromPA@`Ò ,Gsz &JTP rn@]Dz7_cQ.f!Aٜsoo <13Fc'yC!$тHz(K4@X(A5J],4;TU VLd(LC Wt<!P0E֬^tA@_ /S'<*3~"1 (#Idᣳ)EAwZ4#JCi{H<\d|p+Gh+chI>|ORȽۚP{omHQn APZE[rnh֭̍lIV 6@[<CF&S< A*"mnnox.`z^?̌c|^|/]G᫗o[㫬o_>ʟRfC|hbHަFF䡼J8CGYYI?8QBYB-5pā|h>UY^ p !Xݧ yt~$~|П["~?d, XCWuI+$T Og}?8Cq'1uxov>Z|=;$@,egYAϧ"O)rμtvK9\靼3%N7N7-".%On{t"~zil?LXvY؄P9 Axnkz o9b7b `Y6_[I||u_;HA {U:P~S̾|h5i@GDޫ5moRÍO m\J zxI#nM6xNF*dO+K(`oC}z$4 1UzB]>Hh"RC$?AN:xP̰0!Iw9X|x-PTrl <)vbmnn*nJ*kY{"n?Q}:hؿd@~4j{SC\: _Z"?:Ac>@p.!*p***w}oY'P }G8Jvzwfa˹y49`|!4_َlX*rTg3)bw=PͰH-&PZPxU)glݴ۷nCmo=Ju(@~=~c?Coq){ ~&)=~bp 3+Lrq2- @" @DDQI:d9r2iדqj /<^s/'H=/0Q9C/ :O ,ZYa}Ϧ7G3iRth5&rrQ1LBSN,$ q7,^+pd{DT14BI*QF8"drA6#l>]-DE9+3AHJ'|Ri;s:>53Gx,.IvO (] t\*: 6jlg džT ^ 2DGW G}pE8(O㮂Lp*E]]*.?٪,%EGpA(| sŮn<~Q/3HG*6pBuV)D1眡AdH9)B˚8 ;k0tEgN`Vq8 By#.=p\9?v4Wkq XJן 2Ghr:N*FqɌr/QnR|/*ryv 1HA @]PSt*)8ª ˾eAѱ88O- 6pQw:J7O\ \ _g8j _[ #'헝YcS{ƺSt 1lGI+zL?/{{|Pwɐ`}{ޞ'c^>5~x/=_/}]+aaH3ò _n6(?1*ڂD*#'tr=}\NW;3cw[G7*\h 5Sysy?wdn7[`pGn޾Ǯ:CwK^.r_V=)Q ?J=C>yCf]Q.'w2yuS]Z Ѐ C@0VSm02|T4p "$t\ >^h7cG\Dvdya^]O1 hx'[!s):'_|cJ+Cł%$UXMp}ik Γ:g-p?Xu ȟaܕT^F(o?HGAHY5?\Ig HXٛk!w{kJL]X^Ob>h/ƣX"~boT,yGؓ˭|9T;K,) TG]jd*Gq }/ND1.ç'#X%6S ͉#z`芗$y]& t<|EfzGt ܇N'^&Wԯt;uOQџ@#9 VRRG-;W@\%{lWQs @~&@?0?smmgs`ɡaJ$I DC -i! ?ytut6pŒM&Z燝S>T u=/ ߀ >?y''$!whhj2)N(jy]/ϼU%@umdНDfx*H/;݁Ѱz|_ˏ:|r:cs!qC͝fh4ɥB$E\N[/S51Fx{ l~fևӛ b@ >Ihq%p /A};$$:*C#dgB$^~E]=0<ĄJCNqnu>zKNWNfzG9?s!4x_yq?1߮c$+]4W!4{bv,[}7M;UShobfigS%jVUhGąbW kAḦ́ r`8يc} @{ `^42=3^l_ ;8I8$4۱2F.kzIH?ٿ{~R!?}_PhlB_ 'PC!h@M[0K+l0fWC.DVb4Wxuk|Zi񆕉Aj:QW@v`K?diD:71?ix]!Fv<15HwOBxAQٖ=tu :bv:PA9?.? XnMDK(n``'rPI4 6!8fԫ;U6&xh|rx?j$<8xaAjp_"9hba;h GBh!(wQ{&Fo?H2BFs>םI4~Lޑ8@R@'~ <@?C{x|nG&%J,' ,Lt*^? <[A 7#E{N%7}Msj EcE^ D]rQ7`7ZEJ!Fzy5Yu>Jige![N?H>T\CWGXNUGalMPXe(g^(&Rr<(v Sh4i)!繌 !ǂ/P9Net3zG_Lsjpp'i -CaC$s=B P:Q 1OOڎ\]xd?j<&hlC@B:Zü0K8Z44k-Uvi|WR.7haYPsBLHPt!Ը!}{*pT#3$%2~~1V6m ~Ή C b <&Qlopp(yB&n>e/Rn^g38޲jG%pNT=ؾgDh|/bt|:ƾ=x~s;o1CN=B؉w@2$O"O`@5@|"Niօ\*ژi,= ؂|.\ N` ؑ?T Ԉ U՚aa>=xz}7`~`CS:t>y7q38opzyɑ :|f˄_& >" h4I)4=l3+$bwz}aXQ(!igыI->S4&E+8f'ޔ‚i$L0] *,, 5]QءoU@MC!d!W7>CΟ~/vnfBѫT?}H_Zk0l]h;`M"\!-,@"R\o1ZZ%G]:d)Ϳ"'wv%Q:M!8|R B3_S,BP$e4}(0"Sހ7ȾE??? AT+Hy `/=6x/wդXy~ލ>}}_Ŀ/색 c(EPl3Ri}dTXc]ad#/#uDM<ݒNMI͏K8@ \CS N1 qN%T0?W݋qݸZ`y뫮2/|YhOÛXR.O],A=;.ڀiOXgʞ6[&h0<ۙe$rnt0,C>νB6oYc-(ļ9]nӤ<"2NJCZ~y };m"}Z7׻|{N kO wc'<g@D 4J̫cߞ> sϰD?;yPr 0s+T N_QrX1BN쓃vG@8qg_w3ȃ.  tD=tbuEb$Fh4𭃕 fO`L h9uq&v<23 uh &`HĈ"}ވ!OĘWE:{3  v"kuyZ[֐_JA*L9y%e>$xbkߕBG>|k̉М%hMRဈ5@4">OPr"< yxMSXD| BA{n^z@w]'=q։GcXߣM U9l8Yaf\j4b-&A8o1)T.t?J=hx|~63 (2uEѲ~͞uX'EC E3)f ؞3vwh_.r:Q"̧$oP ;!!̒>`$4_4ڡ;Svx" jJZ9*E4!*Ї5!ʂp&O7M0A(Ku-o otb\z@ :&#DЂ{ݸ=FK #BZ˒+0a8|1<`{_o.q|mQD+2IBydrm|=h#I6ޯJ}߿qazǜ$ON埸`d @a@ӥ;uՋ|!h:Z_Pcw>`ڟwp^^r˘RGh[ѡF ZZ!;׸_F|S (ESP8P/oz5m^'Os<=Kf3^za_<"W{ JN{~ޠIcCFPI3>!lO)lCO:܃g[Zy ̫xb_S-؇  eKl-ηMC:(5F' 5avyk?H!]|ͳMb)С:Nh޳'C_H:#.;/N'Htp:h_~x#v &E7ʘx1xqכꅃ<>tg k=b-$ =&RtCTI.!C".)X68*r^?6^3UMφP 1(TNOԐ?ʞx~RX7n{g&yǽtdGI>@HdP)Q˫A>ʟ|uU?OԁQ J^geD3!77nfP,sc7HUOΞa%tG9 T u<#_(̬!{GE^C;1yjtJlr#`bF-/h%@2 !w ߸4D#<GS7Pʓ ]\*6qmNXSh% (M&wc+z73"e>.垀1, "IrsS7?|;#ߌ}8ڜ̈́ \w;wNC}0A= Ј9Jh HB`ҺV7p mx C#[mNMZ;ϤG]m/Im;9Ri3$:71J1yaf"{x6i\"psaJE^ (˂D79eЇz;Of!bU9t<;q8 ȕbK$xD^y o0sG!qSxtA ] #cgR~v.'מ H= L;Pg4 dC=~ոjp,,PQ`(".}Cɛ$EȁC=-xiTPo&_<,7sGdsSR"bK_gC`L ( W~&?;D&hȊ~s1>4!9.G7π0%>r>?-M='a|4m(3&r?9 (? hҾ9?Y'|ETW 3!H;vpxd!p!1& K6}AJ ܫuzQÆQoSԦ%sܟBA )]iepȁ7{H|!bfunlߔ@8m0Mxz~Tww TC~Ռ,W)چMUWQԶ_Tɡ&@"p` !`'1ĂB&XIYI`aHY yGox1[+yOT̞'{;c9ác7+偯~hc{',B*|x=뫡. @#[A5 m::@IҴK%&@B(M4FI&D\/Vc, I&?Dc;hè?~^ہRM?bG_ˀd'^; 0g| _>LÍ[aPc,{|ī n?|G5eۋ,gIM1*Ƞ z dJ8Tk;.a|߬HxWPkcA{1ӻ/_Q$B/f\] uwxϖ˹ISB\ [YDGYxV\LI';X©=D%i&F 1 fr`aa8vڟlO+ V\1yG>9: sev}(@$IM-,9B9i.@y.D@~:A۱77h(HV.IBPr$" I8**INv7s<.{@JȟO)=UBTI0)jnZ1Ӆ 'sf19(mB4 Bh6,(c.}%//d!‘]Je2x/qS: r@kߛNa uΏ"" "'wc_Lnx):O3 AKpcݖ?א) lD!Cp@t>xo/.{i9ყvs')<9nI ZOa9yqu8>b;MGJx9$#{:> ;&!>C;L.QAŐݓɲh?W>n~tl<{gn=s_Aovb@g00Q#?>e l ]` MuOpV6<! W`?u?c=|?GY>wW $ĝnC` Â!6&Gb !?9Wp<';~7d Х% + Qhzqggiyf?J& ~AHXSUOȎ6]&6 Wu嘽)79MJl.CQH׌vpMjcG`T4: Ȇw6Pn] *@P$sCw~E2 ਡUG`]BpBۃ89(}Rh<>o P^a L;|8ߺ 0]+sUW:= aPuߊ(IʸܗϜ5 ׶QS wNmG}k?ޟ dD6؇2YP$Qc6C}.Dy.gciDCң_ݹo|! #$P?Юdno|_ s *Hh&:H<w>]OCz7_.С^^!*uUT[MAEqUGݝtVr{|5#8ш{KH2}~KO2>V7Օ !,rOh6lV1A: eϴ$5~$?%{$N΅KQ ︡ck+ |o#D< 4$N<<80ƢdUUMY2Θ02hOZ=;y6yPf,s%W7G,=ޚ- ةH9%#6r8ZuQE.۱O&Z$S ($XEAQ ;~cuoPP%.(fQ9(?q0{.j!(V,[zߔ̶.ݧ_WD͜z3 u{,( 11}2Gv:ZQXUEDvs|VpXk\A,=a 1=Y03iz)kxs~9zeI^h2kݢ im$ 4}n ;+6 :}+1R r4,DD$=Y!;3k~T=Pь??5gP:jpe2]"/vgzu=L}}9=aGG nnHp`}zN܄"h9  (Iϯѳaۃsa [/9+sZOcJ+C )s:%I0!b̵|_C$}dp>k@?|B6b`eQ"$PjO<Y#$Zm5&3oyha˚W0Hf^_d\>}$boH!KNJw;>R%,̛*$I'!@0IAIsl;Dk`bJ}Jv B6 ip*:X<%Y|{0̥{Zh1H^yکi%pq_y>GF?mpՖaj׏7٥ v{BJU  U:J1*P90@t#ոGb{(GE@3:\Ät~pܚF'aQg2 (3VE$* =-ڊ! vCL˝*5WW=Z~DU:-#`kue9r>lf $*TJ;tk;Yi Q2çz|=TCAD~f~pIvYAR*s&8B*;N(99HlIۀۜ05)N7xPg\L{q}:Y/%VMP_@)~8ë76?*Q+΅WKK꬏G#mX}uT`i/LF3}t 6 i Ƞr֒mNugʔ^|O|:=gY3zBvC,Z@`4gx/ rȒ${h ]l[ve a2! SRg@@zxR ^lIH5Y*pf_+<y+ukci`| ̘8L7N~J1qKKAF$Q5o' ۿf `w99bv18gc%rXjяiC @r! 0fAG̯5=yKhA lM`<&(j+ʯ0kX2Y]OXekwk F֊><>e#07XF+'FVʰn"50iU1'ҷpi7Lu@H-~e\}Hs5-d(AyXm`6Pj`L`OjPl CC:tKDK?s()a:rQޠ&5>CvB⯴IWTyQr*\* (/h7ky ]M]NnTz37"&A9.c+&9ۋ .!ܣ ʦR)u[뇤\K l6|> 8VR'n`A{ Sz|G^a'[!!+UUZ j>]o @D xo{c|(M|-U=-E L0]عbD # tCocgjr†4k)0[ $ƺ,PzB #ӇT}ff=-G$)Qˍ)dlZR%A,#Ą1 \Ŭ'MhMKsRookџMy;Asu*T3F6((xJ11o+\?@9kDyK^D`̛鞪+9U PU ()_.i9>dڜBDq爠wdѳ`k>q"94BExq$-at2 ko =ݐڞ^;pG)x@Ps8d|'=H( Q@( `YZZ=1wi~Ac\p #t. șA!*5kԘz(6_{43%4чiNL]OfOc&Df%U|\+'{e-$2ׂADyBܴCAlVJ=SGzi4QEPSF. fKq^TI<fff( tᚾ٨w6:DP_OvATP >_P`%]Fp{$$\hB~-o_ODzXY!0(kws%UUs^J^[|*}[bl*kiɩ ,! FKēG<)d( H`Q:TB(~хR+Cwux ND;\CX؆l;FA*rOc5՞~&G,wNzS =Fvc?ǬVm<P5)^ Jr޻wEGMѱ쯤y-շro=4|!οCD9n#@z=gO%_F eFԺ6RB0~cS_t>١.E>6n~dyT^NeO~Dl% 㑡$6Q|?Ut_(r?TkOQkAQ Θ g2?jk+s=qД1g.;nu }:vF$PCh^A^0 vXm9H옫]Vj%g%MAԕp8;p׹C~ H$ć`E5gvJ_o?xXqB kR%T)'<||8Nɏ GHp1 К:9Ô pPA!d0V"wVam$b&~[|487`ji1u!`pFAK @07L8MwFggݭ__vbߟVTA{C{)!a6t@@ɹ%QAo\&u[0 HvHI,r96$yp(Za*Nܓi(kD,*U)Dv;'HM0YFNz:'=eR&2|x`s L¶4zu 6kMȩ@ȊSkƞ /)iM!nT=>c6i]nN(ds3cRj#loG&qP@եa!r=z{9q7 ߑ3so~&4AP*sEK^*YE>Dw3t,^CA5g3>|S #$BZ ibF\4\x9nĔ:AQpV]~egS"_GZ{6(64T8MBsw'1UMUQL\h-f4>>= 𠦂") ]ٛVM5ȩHӉa dVbR)1(`p4G O#ic*AXJT;14b_|?_0AK|_txFӨIzNCHE]HϹ`>d Ў \!M z^q ٣S 5(  œ) QR4(czȎ@Ͽ tJܣ)|SH1E8Db OPIBODjh ð/tFC&CUX~Lvg'6i 6_$4&?/oJjÑ oCP%XSy |Ƿꄡu?uӱ!1zl%@a>SlF!܃PC "qƿqs!P>1j-Qb85SW Hul~s6ЗSR!Tߐ1,#nZNXodci2JXJ-`:igXdO~]1] n@造2m?N: u#swFV)nC겂e@7@@hf@˓y|-7{r6̟NV~ G?2O>)Zƛ)PO(XAI;hmUH "UNA\Iː "!'C+BL8J)Chƹ*"Ӭ~*HZ "\{Cy!ysb ׆6O2'( +ĐMp s:Mi$r0C[?eSP)~Lo3`Jڸ#' Y-"Eb01UFA/`e'F)fZ/`OB;T' 3 wnxugOQZ%aK8K'sut@y{H{9#8m0•ax\z(0<7U8sVA9mbdq2G ).J*"IX6\cr>yMFLu佮GPCT=|MQCDQD2 邕6606@D:2napM݈uu==KD3@R+U@U _P'Itɉ?tƩTFy隘 ̀~ wzƊ =ϬpgWEwvyshM:M,z\>}y>`7mOeo.^b$Y5M6W|Mf h0 Xnk\52qwPtluU赑¡mJO؇j~I _}Q}IG? dFPʻ'7LeXpws`Ѭe`a1L"2w)}I0ZC@ZZ:xJOLSi2!rUA򴜾~KL[KF 51IPL@쟳SE!n,nDcr!F @fF b&Y.Oо#wQJe=p'HUf"t%iv(tM3{ 8ϖG%@X5^J5lO[nkPKia2;ha-U#zkP{qWe\ziBŪZM=67hf黬џr )TL4cxggObõ'm8ȠzMPx7ܽ{QFHDBRL>s ;:'C.5X # bY(Ď :}. r**IDO0)m+- E=s((!"AҔD%HU@%AHM {2(@C9d`錡Z Yӟꭱ cTsm:!Ba"p;X zP>Lݥ)^DņSh821EXA5B"JA#P{ D+?S$(]ppn`Ymg:NHЮ@RDN 8HlQ;?6Y༢7)]Ʊv1:aD <;6_,zzɈ C &*0K!"O/KSX~KlM1İ4h>%%^aO!@4 (1Ԛ )>M}:y5_! %mAzD1LPW 6ẗ́RRP[Xa̤Yh3^y bP rr0C U|Am{ʝz`Tzc$/:Ao J $>P-4 58fý)*I0Sh5޷/@A,H{IFjuĕCC|zMz RTI]~S Xrk WuyGOye3pM]ѴA @i ķ#lxF+S,"!׶TjhYh$mD6`NBFɂ'r0sUNЙQ3^JƂ -ƃ",47eYi+$<5kL VLP9Dg<<]ԯBTX:.1zÉqMb/$B=;hς\!?iYGzD?J`Ѐߵ Nv+'ly! wxB ]e~ZRCt+hFvD(qrt^({E1\ wi@sI:Ы`h!d*cʃHS<م?٨~-<+5@3GLE˘K`$=$E< )?(Px8sӸ o cPlxvMS H{͠e/CzƀNDX^}S)H@JZDVN$it! 5$D P=<~7fVД:!Tȇ!c@\"h$WB!p/ EB CV$ M 8]|}.  靹T AJ9_mO$%rtH5Q?ӄq*v %.ٳPU6!c'>&=FzY4-6!bE#\G v,c$OVX>T@~: E(D<5>ihkyP0UI`p〠b8&G3n8F 9n+**P# AjSUHpqS8dwInR H{EC9V- 89PzwVC8kz@RFzo9|U- @&t`ST 4k{6t Gty- SDԙu)f9if K~/ yJۧם,+[idhA킹Dö+S{$1mRmVY& 9N32 1DG'T,Z)J_ %ЄBdf!8Q1jW akÔ&t)8E*#If('QD΁13B&iֱ#26=R baShgܮ%ҶQ%aH&Ee&a$A탘6ӹ=^]ףĉ<:<˘3J/{zX^!u}6UQf 8%⨄OpZIF3Vɀ4 ITW Fc:m `nb @P&lDg(c P`pŌ'd ΰQ>!qEW"]nOmm6֬M6pSpIJ ars{6a8g3 3P(n|zTచL)z:=$'[ LY Q b"XqYc$ rb9I38Jb`ҰGQHBP *DK4]uJ*> \ dbF@ "Z!@d#srGV8KDU}v_}۪W?lnMDu fu1LLZZm.YpdžӁ-zCKZ]  cZZ`4YWj!̮ 5!,=_|UF=Cc 6Ha{7[TGUG{s67vsz2$ĦU25䯆Y\r+lgż!' ]\FZک$ƭݰ Wma8 bFш U8GބmRMW̏3MmOYDf]P.a! eq?n]`@W)IGoaxN o KC&o1)0K!B B>f1jA0%( տ6OWb'BOxu~wVbªYQ\+?Ibsp2u Xy@ܗDG]4TfTtRO\pc ize)$wcRкS '6Cb.o0awq:?!u^תOr:t'3rA@4&C!H\_/~1 #5A۰6ѐU]`R q$ݕR5q ;U{JU80tw+!\3As?~= Kυ9#9FfD t/پw3}:aSh|LĤB'X?i)QAT`"Ɲ~9v]o6 00x9s8Be A"o %x(`(NR?t_^)~Ǔi k;s]/&Q0$#TW;0(e-Ć(YOǎ{Ωhb-W E E,*ոIgK ;T_"(tD`WoVof;ۆyTrLB{ riX'u;V"T<pY6]ҞpҦ@9y& AIt;[F @@B2M yw_3ḏ߇I\(5~0"`4pxKDF5ACCB-SAIĢ46V9 nB i6JA1'!EeI:C!4K'Ct AzUC:""u.C`H !Yh*;t|ܻX>y2zBsXQ8=i"z<~r<*OU.q"@O7Uu^0J&W낍""3G)THas~ ?=#L$-pxC邉+ 'ϧxU+]Ru `EUxk}T] "]OB+j#p쓘]sݜPg$5Ϧ-أ煠Z3.0TPP pBt~Ota?K# )g΍e׼jV`R.Q5rtEp"O`=:*`CI\]A=r ~OfdBB#c[s.ڼSz<v8%ΪgY ['!Ri)  \?Jy)ГTs|=m\hӁrrSixf}ByWOZGXC!\3tO\WzW=|nA>HhCD:eJA GRDrTCw餭ҚίivF"# LSs2:bLHK$>V%`ٿ)R2ŪPyoV&[/~M& 6;yP:10jx8z۶,朳sCUlд6Tu2f|HHh92}Twqjoa^tJ"WMsƵa t4$Cܫ2 <:-B"hfQ@LӁ 7j|ru}9H^.]?-qI0봮 *Yed'#jETK?f,*FViۊc8N0Fnnr|ᆭfI[MI&o ԉpK}|`D)2L`菇`fENGMO|u 1I D|wda NH0%1uvVZIRBI5()bRiJ/||;Q  T$כ i ='8Ԅ\ 線}q‘!5C@} mA6Skk>/gOIX Z6 EeQc4}sV*ۗt F\,[h4c :lV%?+ժ0tѼbF[% eZQ2n(dYX[ # TV۶"0cM e]!΢ ɩuY=sE\̊"9el֘[YZAmU`dN#FaMH +GbU!l޵ &qGB{|MCw>b̃2ӄ$))= tC9yh`h&HҲHIO8Xm1)d9D9vt!둡{ akUE':!u$<FdB 7;|w,k2 *m9\LmV3:8yLT~x䒈M-xzzp߽])F"(06$I5GO~1N|9].*ӽy&6 M7$dזɃVf!"0RD' AM4 064;Dd26h DD؍fI[%Pe'! ]؏?&9" #I8}&cu䍆?P||srKw0t`B=xP%f`T`PdB߉G;s(S1mȏ%OGcUD1-g) `6U:Gl&u l[:=ᜉ.x~=IY#y zdwan{==ԑ\D9Θ\u1q|Hm>:GuKSwX)Tb!}9?4:`9.7YyrR`1Bd }C7EmH:M: 9 =ҙй/F},2C``k;}7`,;jW,E!>JGr V$ӠG߃tdMB<ۚsQ#B&NZJ(-D.!xh8LF+fBDr #rruTI8OMUW: xp &K R~:{/#hQkP5*,Q1}ACNN 7Iܦ G!?F6Jґ1*Ceq3t((~!v-tr'WX(6r:!wL2O=NAR$v JiCZUڙ4U+h&v~o|r?=SۜByb‡l Ewh|nL:`h ]ģ R(p(e:duX SUɮ(ӳE9_]M{ #8̨R(Bax}:W67!>x1L++RvĂ۫I՞ AJ !B'dwy㚚2׆%Pw5mYPC#ۤIؖr""B Oh?~~if r@ܵT(?N莌F@ IIŏyҨO+5 x'/j,AE!ieO7 ^0l?>X}|;&eJ3 B82yS0R3:;.U擡ў$0N߉S~|ZɓT6Zz؄zQb)1#C;$")}:Ћ*>7ڷ6x{FPLg#/4h9uFըwvs )XxH"ğ;u =D^CgqRGBzFC@:^zbLp@OJbU Ǥ9L "ҡ,Ex#?ad?$HݡʆB&?"&h"(*NnSC M(~P$4xyL̼O?90ur`}00/tD郆 "DBPR$E B[C]cgB4hyCG0%MÉ260q4լQÅ8!p@/p}>`lh7#\CuWÄN HD!-Sw6Cz"D ZuP QTE-ƹ#S$Q hɣCQAP-("`0{rmPC4i2%kJcPNn(]4Sr4OM8( ( ~x R$@R6 =cd{ C)u!B? #|x;N[XB0Cր8faA\gJ'؄oU^BM6/?8?O=a1%jR p5CFӦ{@ \ Ow8C(A e|dX>6J+Uv*bgԜ*+ PqwI1d( O> aAN~ sn"﬜$ ei.ŗ1!ؒHA@#Ry%2y6r.!xq("V`E M"dif9y'=Iz(Y['`yZ"!#56ٲ BON"p@#Trq O$LC]p 8)J8h "k?_rzBd4";ЖLv@hsвł;YKT/{s&$(bkh:| 5k"Z su  lD7`D=x}:iiݘ028Ǖp>HGZ<[s*5ݎf1.|([Υ+Nc4[tUQF&*Jb9CM14- STcP0ɛo`AĶɱ, h=1b#1( Ɓ!ԛi BD8BBIS[q%bUW-0I-);h/P(0fl 1[\D;7WNF#rSLIJ$Q!\Ks7Z g %i;ƇJ&t\˪pƘS-A2qFR% BjۛԾwcdc BP KeM{Д!  P-Ě #P}{_U '*+h XN3-Apr0)Hn2&f='͂ cT@B!N:"2ǩ҉꽛Ų2B NUA̤OmK>4~a& 8 qLKH~((J1qJemnOoOf,0 V/_VK2o'N 2HXB }~|@ D(vDT]6ypU; go}hnp *}$oBp}_!Wƪȑy))VND  v"O8ڋ'P<[]yJN z\4퍢-2$|?dfaa=(Ɂl8>B٧~ǔi/YC|u]ס.)V_d:B3wV2{.4e;3"àּ]+ NE[VHt)ic#@W]9򜃏[}9ф15TZ Լ3A J(4n'7X A-޸\e-r!w%6O )[oX#7ٴ7睍@̎i :,wCuX4a^pM˓22 S_tqyk |دD&H  Go`t' L͒a>bYAʰ( D { ' jj=$29I@4ܸ@nhCNp{` @nBa8X$3|Ca`$ t9SQٍFh"8>y6d<^G5`{+=}nnn+XLшUk p8MkWH|o{Td5>j8h)#zvv?>aB~Zr`buYzܛ| d3=誒|]>ku[BBh&6k7zٙ͆ l#\[ż#T1A[[pZ8xc*WvI_45  z:"QSp^F&* 4ѰQyrOWDA mytF$%8TKD.R?M:3& >r{$H{ݕq,DQBDB"oXi>t`<̑RyL7: #3Ibв%0Dx /:vbDIqR;#$2,aeb'. ̂'sՒvdISli4$h2E!q:(B@Fs`uruhxx\H4VgK[Ys0ưG/.!a" 1{ p{S\;y=ބa d)xLH=>6O1;"|X>P=}10_<rF\[X E@p"KxD7YI~] l ?bȔi -<*TN5] Cz&R1;XAQ:y2C6[la7O~)n\0#c<"0vC@OlUPYp,4pk/"8!O{HpP,̗ \ߍF3pݔt_p6At_LgӥlxDC6A%bwtFdklkOF4(80DG006򣺨/syˡA$.zPԹb)/damZ1ECLB/83 *8]juYKjQ,054`a]uZPLȡ iiܣm&lR l1+"45绒Gz̀۶,ŝӑE05YD il FКI&klX4.Hjc Xp ,aH= tjy nDyI2g8Io+׏% 9]Th{/V6)zSA>  cՑ>1X72hՄ`F0_Uy{~zuδ)oC8w(8EW EbSxϳ-ؒxpm"@LZGjێ:[XR.g'&*CQϖF2Ǟ 244ðG/za 4PWzg1=9 ucBĠ4 Pjj^("(1/Wx1ja@|h`]n۾(3'm. rK3:>Y4Y]@RVpBeߞCq.)ژ#v1|;Mqlnȱ;xMyk̵QES?\;#$)T4 T3ky&u")y * "p).A&v{pw2mA$>:7"N˘ 8&BE?!+N1wxa 3ZigEV! bq:y݇s!.l")+!5lE߃$+l3gh7EB +>y<y8fV.MNMOA1( ww,y~C9-˃טlS06ypƣ X(Ww^A`' 0AG40SO2 ɼ7UT"j+X3 r@^ .< 14Bvðb;x'lә͍/ 4<9#Zhv糹*N\RдXGἆܸaqzH<;ۦ  6ơ!$:4D!zXԴ\tX!^PJb(%(00t)(Yʉ]pIm$(^:΅kb (tԐ@$yiֶY[g`aS| dWvna#9rqo?,HpDV[K Ⱥ jd:'K􃫠=|Ib QTb`gLg|L6MgPΓ"XXᰜݮT!c5 &G^}:Pf*վ`mN$ mYNwYAҥo]w}oJk'I@6-iLrQ\lS3a֕E@='xi*= Ƒ'i1D5Cgd\ECGD YA6 h$xqBj2NnRpq/N_aٙ0YIh80ETjc~^Gˎ  #@ IAq1$qbJI8g l1d-yfx4\\-s37{tNQ- j$$ࢢBX~qu݄~h=&"%YA Nb024Y 9;oӋ໗q8&K/2B\D 셊 TgW|7D^TB*5K6!^FY_Z7l!zƬ`LV1] (&3t@d@H.C ,tEs 6,=>F-CN.P$p4ᦠ*!",d@Dh6'&11 @ΥD`@G*cCܐ%ڙr$P!^>/iښjOpVHoÈ >p8SC*k&"nwW!T; ́/AB`; ţ, E2N)-pk(# &bz_K+)`S\h fcȆ$)y'N A@C K*cm] $$5a7|( f_>'[t1t;QW|l@ksXKI13>K|o:q{.O8ה o8;vlEi! cl]Xv@e k#D|\(b+q^':CdуS8uI>nAsm˦.AAYÂp{qUji-[!qhmÌʵ55{Ӥΰ8b5@8D -18!b iz!{*l 0 (HTw.qFD , ͔-4泃A/1=kS5)505aɘ@a6nN:(D$3r 2*9Cg0M=(nwzg3E!,(taf} >D"oV΍>3ӛRtWfHb $$ kP@ I_2$yL3C%K.i, 0l:`v1ު1pqRI۠Y>j Lq }t5f P gbx!sv· `0arpCb;\^-6kEݞp .5 sOW|# Ȇl$D4α`$Zb@6dYfZCHa\led5~24J:@hg9ؼl0`FA )_ h`DǙ0 ,KF'HEXEF|8#E ఇwXb[C׉mPmGx:ʠamw;[EGqt\b'Rus#Ȇ2l< ^(׬7֊ھP %'e<3RsM]tEʅ=}4sq*Y|OuxƑ).IjG֨LHo-DD7wo 8훰#.o˥vs0`kx0N=-緺ՓTx<*pZ=n\=fc4M%hf.u:b'TRVAU` .I ٭b1\ :(7ĺTp]jp#1y0(֡sf+veR%,2C*9|\.6R1FkzņqP)$4&[UFe#irz͛H//CW&$ٛWt`8}qNHq.ES!<9Š; &J  w!Q^,J` >#-3 YO4u͌F&뙎MhxvC307_b6[yDHc(+Up44- flG6՚ݼ[YyYVX"wrڄY-DH ]QE ƭ `83547@n׺Yo[ *"xs4L+LPV'NwcG8 [XXmxa: sZgUUB@-@h9hFFMȍk&ȧZt 'b؋6wOy;c18ŞQǐuFNxpo`ftIه"h.*\̊Lč ^}CʾoV9p yNTGlooTFf責,UK /kD 0)1vX ÀN8Ay E]uqHz d9r a $HP@yKUBK,&WDpآSR3EX9υj Na6y5p;QÁIsp8p @\}%ƛ*tq:3o,c=_9@{&'f'4FDKgJ !+doo ])P|%n 95mP1G;fR;瀝Q2;l].C;$z d8kz61TT(c?3RYk< ]ykH zr@2 p:p3DĽdFP`,#F*ՇT08LIU{zLuvR:ᗯ2n B^\N0Oe;؂ q/ ̹""LA , &R ofM;FYUշTE1%0i] sQ4WCӆ.PqH[tQ!z.&YCzM[?$ßpQr LGW;3 ӵ`VJ<\:XC%cxpQ0:;sRH`1^*.)_KB$ ~.JP:vvUqB6K3@2PrH͓1%3>لAEA|RPnΪGGR/Gorѣa8 DC0eAz>Ω d}Aj0]uKwm,r-{jCsl2i4M$e ΁5уwnawB.Wu"Bk`fW~bY(ATr(JcQdf  f"N'Mh*:1B%f>zC l(?K@dAH$gcHp)8Qvb,&!"(!nUQ4H% GX=pQwlxBDaS=@1$JnU 6]HBhZ*D4h%6EIA=A&ySԔ%ܺ)! .E2'NeRSBZRQ*Rb\c"" Ǫ}[F @; ܉qPˡNT  QG6!:mWdÎ6(p!8]'4!A!80oBW\dxsOtLu;Gzn`݃/6z/3wb;5'K ݥlM-]{$=~i,~@i!({ttDsr6D0$/ ʲ2gX~8 }HeU$,9}PZ/2jz%pfd"S)..`^AM:]y҄3w{⁲!&|:>O't V/.&. _>y.zʆ\@{ S$̦mʫt_ffJ|:lefR*W )~?L],!F=jHi DDMj9y:Fc~Qxt-X:{u-['^-0H9H|'~?]BɂEldFߐp6&1&e*3ćXOO/l<BZ(h7䒑4xUUPEDS0ȔQTrD….M DiS /F%??IY=d%7xt'`O|_6O4 #$I ?Mjy㇛RvGofSמHe4IWg)Te-D|tQ^(9=9F@c.;WnAKw'?q8mYV!'۽3lɦޯyIEWc o>fe됼4jAP0T)?-m޼9P}>қQ@pMm88B̡xH Tp["`4 nSYg`)?;//@LysR[HPh/?\9.v2C Pvnx4$bn:GDA T.#AT:؉vh*}qB^ `y<3ɝIC.54:ɢ@7[BoPiopˈb20a$&] 5N-އBMEѵ LC5_i0Tԧ@Z/L*MDHS :S5E ;{=#<uеFJ 1Qn@ss#;w! |~v̸a8f㏕8z|s86[Ibe Rrጨ*A{ PB|Hx6E܁Ê(k<| !4E ppETS)I͕1a1{U L$Y$2N"-$Ax3MP*MIo` pKApGkuЌ,;@pYU(fI\u˸p4 jRI 䁶\Me/0‰-7z nb8sCD @2 gH ⒲<nh3@[C32>"7KE(,fAh>M =7 h @%kVݱΑ~SX݂9l2rp6~`=О">=cSl X|0!V]f8#fKk;2XCx[AKE(ӏ=C, -'n\ h8#2xZ"*&CQF5K@]c[m" qΓ\& bÁeS䂅tG542R3K=rQ,(] H4h40Ɗa~s|XQr!4:O.@ PbD44*3TyUay1qC#N!J &y%5J#ଏ:Q"HH !c4E(@d< ,y*DptӉ{6o^-Bb8a=#ODI-o8c/@tzSEB3"C?8N:#߇;*n!]:J@.ү> )D qw~$c'C0܃4 wzށ0(B+>Oa# \Ή`>xatQ7q_jlN0 $Cv^[cxQ.C`ƙ!ފ+E5FӼAO9Pa}~nzAqT[L" EޒF ʈ(ox Vs$ocz{6 ,ͣ?(ɍmL#HoOxL8g# >8\ }$h 4DIxXNL]BF&%|:;};?)F("E= D/&L0& j)/,A y9vz"SA>^0A7G$YdFc6ypr`>LZ[a09x{%a(c21$Tԣ Tv"f9$v,-<^3Mjg죡h8EI ZJ9m?9B!N돪æ?hc1i$zŀ}t;f>58)F+5J:7!‘PC+-*W<49p^Ƕh07L(P 9*R1MN*`7(0/ qYI*i"C3 /͑Hh9x4/"ࡹP0d{yƉ$t12M%-8tڊCx#DLC4Dg&-v8ANv⯕ohy`|9"LDg-8i-}Jt)i?IC+‚c馬brIQ H =\+.J:Nx.LAIIۘ\$x~>0"w'q8:QN QDADg><c^=DgtTϚbr"(f|J/7SpΝ3S:Bzk&zG</<`"}:2Mr^"ĠHP@~ner]#UD @A4B@8b3@GA L@S!]iL(,>.aC꟔nMݳӻ9&y Yi-]%N 6x΍Ì2/Vɱ#z5 dtM0PodcsBhiDL\-!Oggn˝<FBYe"5YR e&N3k5?Ĉ(# ^oHٯ6w|k$p<CI)P2JBFHvAGXl#R"]rBs]M?ɹټxVkS2| $+;1LI6YTѧËܰihs(]_. R|}Ggbb4U @! HI.6v#%pVLc5Oxg73).l&վCK[ yy @)̬IV1K9˃J2O#emZ5ӷ]d*=YNrva7@w$:ilLD'0;z,C+ ͩy{-%3`{6a䕰L9VT!1c;{Ü$Q1Vh)¹0)G'}cR}#Q>^qײ/ 9Pvr:OPU{&MK F !CDTCCRl6ɀR+.lplAb6wBa E6iATS!1mM,B' ; 8-@i 6 0ɭjȰQ 1)vAn4B-#;o`eHj >O=TPCPSQ3d?XmpdNZ󽊣;ѯ cx#x.`p7! CC&8I#÷ȋ3NUF"o}ybHRT(@C51+AEGH|-)*ģ"@I# u[>w d's0:MQ`0aǑj :Xꮣri FfۘVU }tY++39/8=ˇ@KĉxΏ>b۽ID?M5  S Sa/HjC?r$0ayrêDZT^lE"5]l`  ҆ su!P9WFHP 'ÀO$o~"K}gQx )(K+Z ֊` 4 )D§j|/)2xC0D$$@‰}J᠓h=CǑ6#9cDa66 2guUCX<2SuXbHG6v']N?cB.+8!4I{sj |> :uRM`,;->'y3 W*Tu4:sDsPqhFvJ-Tyd4[Aob͊C}y-dPtnNMP#8a5g@70^U"sd`1v~@m$ ZƮ޲6|aH6m͞bXas>Gp/smsN,MyBw(bלG: !2@=8,]h{RfD QpՃ*ކ#!\;{E}nǭhlz*R  G,:0C ؁/u㸅Z`GIrնx~nBJ@Rрm_V<^Nڃ2G3^W<$^`6JM`(iϗڡ:6=8ćb 30'%"( 0B\*6:i@@zHH>8cJ|1V<Ϭ5ץ^ ߯pȆc^U\g8 +oX9D GFU;")a<\.`8 '|DDCL'urziѤ>VO5c8AID$AĄ H!"%:i1Mz^75-#DhYOKx@O$dB$!D/}x W=+KA\Lw]|HBd( J=>$26cױq @uxTb)ԂfD_>^Δ\BS01W!BBLzq`)IS ,(UA/?~$~B`Xv?\a/`?D|76qf5p턪|!߯f߿^oek@srs$.\8:2ndQy/%bPq"<{+_\_pz%J%rR@EArBLO(p44/ys*Ͷ-8d_$NGV4h^H()_!_:a7}z{A ]!NKtо4%e >Oq%ZPhV`}|pA$##aA#z{^S\$*U9Gn(D * 5J`hcm8" ƪ4 -#܆.$4(0#NX'. [fp.j-lIOv(6CyP薇&@1m߯Ob" H Pf*)@!y)X B*H[cKUCCqMʓC@IːQI&W,<TM@ϒJR?-j_S&W`"7Һ\Ʊ#A /3V_HJiASPɾX>Y z'`$qТ˸Iw%C QI qǛYQMM=($5oixRQuچHJMu @ {,A5ݤb45KgQ$q1 4C?D혯\N8('VqhiQ|BMN Pv@80Zϫ1Aڪ.!U܅DULŮ GAw4 Bf+lJCCE6Ɉ"h(mM8r [!ӢH (ävHX;T1+g9wj儣w`D1LE]Ʃbb;y]ƌ<4nOx4ss8C.N+&h9,шiNs,,LPQlM5W60G24tIQ`nnJmFMQ% *.H0%S t|J:_xP APDEQ#LPSA3KSA@n)p_7BPRQH l\ ԅܐ^RȨ9=ns  s+ˈ`Ƅ@L-$WzrENjbI)X ((V&()B&Ph ( !` )j$ HI h!A)i*h! ($j*F`((* JZX B& Zb"PH A  G"I@k愤w*Kɒ6ګQL<삆}d(t0%_ѯz.;rD]^4h($`gr(Aަ (HB u\~q9$ R9՘S@<bAAB (<ـ0gۻs-BٴӶ) k)R  xnYUzJ陠Nb'݀A1dcqUʊRe@)H$RIt P="u?՚wл6?.8saapBs0Bs&}X؏[#]I B@DΈ" d(BŃݷ p'@099#^t !\taq.kmYm:&52e5L6Kh(Ġ|0Nu}" DdH@D!6&S4Ղb h81M" !7!HԒJ)AJ J!Hҫ:ߛr:o;c 9 3EV|sPFjzc9]$xE%) dYY9fT hKnMV6;pDy夽QXy/Y$zDh tԩar#:ja#od4}Srne@qѲ97m3ޜC'0ft5* (vgx'QV;O{fZ!) B).m Y7D$ 8HJI xQYg<״G&}yFr !!w`]xʢrt>:dd`)D"`$s} LxNN=p?xG ,ZrY4/(?3RՌQ̦zD"5 <}5!'g_#ή2l8c:M,'oku$ѣ^@*6|z. PԬc󯣰€hy{*R"qpe4'he s9ꮌ|z"*"I:(=p,{<@Z_g@y $)2\8+Bq&qsH*3]5^ |Dw$h\<Ч<Δu!CxmH.J$0e]ad:6M# TT>9tP~A`'cq.:JFӯӵcg,Fd5vc|?]Ѕ< 甗雅4?a8S׶U>AZZTs'N?mt%I3OҾ@y!~91D0`ᶺfT~ɔ^cr qGC2Q7YD 4ig%F'^!>f`, !AҊۊ_@MPOE=G>BBlD)+abLOaHEY'F*"oW5>FRY۝u%O=FN5&z} q!>9= Sf씉ɍ0  ;Cr_gCIg eA[u7ko$cgq#N;FtR tn`ADE&}K;c7{?"kۗ V>KU ;qVnci/I55g~?Bm炒.iƒ8u9T$Y~J ݽ&??l~k,<e&$%_s JJ+'kSֻa`䃤;"<1xZh$ACc7!Tg+wr9͒"Lʲ1]N"J5dF\ 1LN۹9$!JuwL&hqS82 |I,Ium_c2N)",*L@3h{qG~Yڑ%"%(f#t |U/;Ǐ8̩pXֶ@JD"Y%ڈBHÔԕk^79>,CT ¡qЇ"cY+08! @)r^FޘԜoS37"&C~Ftvm~AR1EU]'B dY&-BLCC|]; s՛{ HCxPt)3L (HzX|gY83(#wz!#cN,F8'c,`XcoQСy~a%rO1/& {P5׫C寢.y!H<1ӛ lD`è!nNp() FW(%qԒ_i HMu5JmtŽ Fmu$Hqui F-sA>4-rDsj*vJ$(t?I8ĠrSУHQ0 p?3,vmc< k=d.SŰhX J(r9i~8a7d~nvݥ M:^"ҏzzu) 04G-8 Zˮ})ou4y{`Dcll({Ce0P+YBY vI7ڴ~Dxpޅ Ҍ7@*!^&pHJn A.QbNd}d1l. b"BFմ=MSLyr""xa $xJ8t wI@(@`@`⢧^} c ݵ>}h@1"x$.Y!ww}+]%( =N80mg^ڣX ;$OSt$@C?LAjMS&y YmL*e$԰8΄!o=Fw;J*$j `h"5hHbt☢QI L4M4 Q6Ho*03XC@~RDpr qP$r%)Vdn<#M v!g~>;u˜g1~fPs1ys5 ߁rqELrTQ@h4iB%PRI'3O̍R+~c0w*[(E?rlCI 6Tj>?lE,E+mB{ˠд3IiRi &:3|݉Uo]H7?ӎ3[,ֶ$3~ .cr6q 8f`UHƾA{~;(M؂`aDUz|04Sqp^,7*,,iZǎ6-YXZ[ӄDQ%c4M!B Ы)3Ag7qb(  $i^u)O%N56 ^ ˵;7EMc!q ĪtB fG`.oK4d{lۇ\[XתrvN`F=w\^X EtinʜNP9FЍI02 h(PmoF9 ABTdhvĨ!iEVT'=Bnb:+^s1= v@yn1lf (ݍs4Apr[]`Q'ZZ܆pk.78%IڷrJ[ X^6 HJ%Mf4E֬9-P`#CRpV4VO h<,qhNܛc45,%Q6 UcaJhӥ=.;Y\%|>DOga{"`/`޿ c眉fIa,wy(tTUwtz9_VQD$fFpfWM᫔} Aݦ81\v > n-M<4 ϼw\^t׈m!<"vElLYHCժm Tә %NEZŸ $xs"AA$.Adx2[jܧg(ësx&)Bpx_?< 4*P̥)Jc+ J@n..hW{NwdJQX" XTpno# TȟM {te wxaUU#f)xP_t$zÎ9"g0WL ]nV1=鵎#A#D[^Ą^`}諾_acX 9[COWgEf gfH{Vi;q!1Ӌ~9ӌiW9Ls:-l.}ϟpwq6 hiC|>;E Ilvdq NbkɱF VҺSDRF(Yu9pŶb-`a!3˃ܼd|fs-[jc ҜUjM9-$ *R:2AޘPc2tj!caX=Hb MŎmvb(ٽ-h1l$Z@NLc2ApYIMT5a2+Gʓ}T-1i`o s̄ C.T!cIp94ӑtUc3̏Ӣ 6ZE)]-J.;ET޶Ref` V#@ AZ0 k9wc'41g 6\yOHBGK A Gȟ{В^:u+wjzrW`'xdL+"jq#x{3@֨.:14`ĞB0bn*Wo9rЬ0+ꁡ݋M_`dT4D:<O hvDݢK6N <ΙEeD$a|<=A>*A6*b%5=!HRid5HB,|0'u,꿜Yj$m?ap {<Ψv*inA\!T4P. !* i79!86L Noc@i!|_hvAé0,hi SJ4\D[/(ax\4  h5.aӸXn  `7͈Oc0DsM!N/2B`YB)B_jlXs.Ped? D<1 >ϯWnjDn,H,8I`# Wwڍ Q%M^Œ)90seLG4 o{(W&ŶMͲOgSdop/G;T-E>SfktO4?Ji m; `>t ؤ@~[Yhv;u ('UۜXzy,=⁥p)$,=?!ǯx'ǤEm$uhx0!SEy<JZ*7Ml6 M`H7$xGhŪ$ ) $INICCKCo[ nՑr qyCyʘtTԗ9Kt6< *a<2n;e<\-%ۼIGLk9t @2CV"i]cLRDutJhqx^Z+处勑{:: o$g!?D=jUS(R)siotIj@b>v Be劸B-eXȼ]pšL{1A41 H*R5Su!S u2HLL$DL*)Q 342ÙETRIf#}dMDiI}6#|w!n}1)%}ByQ"n= é@tRtzs,&ιf1LdtǐϿ/O[&t=\î tÒ9.j6m/ZD)$ש20<4=:r K.~EM!>3/DfndLI4jwk>bOE:S) n78hAPāa}iCW E{<@YC-i{(ƢLatoQE.XqF(u! sh$FiB bFJ"* &h t"?ip&UWm5dfs 8C)'s5#F 9JHùMf3123mXH6]^Xuzδdx4@i(8!eL%328i_GfU4diX A-$pkAM$nX8ΣvEֻtaQ`=b9N4NGE}RCHIL|Hn D`l1 ț=ͦdLu!6o &i?eżf < _+ՂmM=fcUtd䳫 00eLr#U3n&E0OF5q'rH Lu(kF5H@X<@Y>P38YǼQntgͳىMܑ(k{5& 40β::&Bj@ctR`}2.Ljz}2gxx)r  WtG!BabQ" JZ@ bJHBo7 k0p;Ϩ@yq\vAUQ- U CR UHDySRS6CC:};}Z|KuN*ήĒ!U 7@‡Z+ittJ5T% Km {9>Qa%eߨX0B\(ܿVPd50w  ѥڽC@H`3f2TpDT^U|ytЦ( OWp: }<= l^F$a3E7kR * )^F) N'IW9ݯqt#̩y ;ч!BpM4 L-< 3a'sL3 `7VcvnglH@7a7Z2DVjT^zh#9$Cf2t'G1:l 4]:] qhv#K|Эa(!SCF玂e>}v8}P<3̐txOL|1+n"kBQAH)@x$Y30()D0c6V$Q9̝qޫ~O:G#<.=p2Ee\+ ܜDϱ("i$dOP:;C(K Me$# 61 hC@PT>J@h :8,< x1"p:<6-QgouY3TPCPѱ:hnJk>LZqfLO#]Y+k ցPz@86GU6v0k 3ϗ xW5B [12 _p{p'_TP)B}ؿߢ$q#df?,G5gx/<*i/ڪ*p3dDV|~4pbuP'0ۤDZ9'm6phbL{6`L@PHġÕ*iHPfCtRR5Ŕ R$v2w,@r:1(>xs^;\=\BʥVր7ѵX($QqJc)F(1V1mBZˤK~trّ0Avr_"" mVÙjKm*nANńqjC9pM6^(glH1גa#3'7Ą@D \!CQ#&I")No,x:"{2N`fL@HSn(H;M]@^l *Ȋ0FGU| +[dabŒk2R8ss0iѨ3+H m " 1§b*5"zbm{Kz1q = fD75jnH"IH!XD(k!( <4kLn\VӍD&*P(՛[m<÷tZ@UH44ƴLd.p;JDGde;, Ȗ0'<@RYwe(E( ѓ Xf<|lqtZiK*#AYhNWm-d P CR zQ\u|-rH 3mY+F% 5S{a7*EH4T{sct'9Μ(U]o y3İ̌@ 1O9 FYmA!N)m+d s5jX`Rc, ,HlQ%>`afuRpCe#=8݈ ϳyBϗl΍kUzǫ0ACyrč<ܡ7hRHr-T* F^kȹΩďN'U5J lca/ tS; h8&'kǮj;96o jZL!haBn04Fi=+JX@ 10PQhF+ NL2 |  ;&x&2a-6| 5p.H ]DZHHI# m((*@cj Dk5467℀F7g _az> A5PS$E ~9'IF&),9-Bh=ƴ55 GYҕ*xq9fߓiDCFLFtlN sXLJ&&[Cu{G]xU@$*ND oXAXa$), Z;fvc(F'1VrQ5VL\9U8BÆnE ( b%FЖ8:%r|afcXxxI*sЋČ Ѿnbf*`(UQq ܃;3[d` ;LE-R]i?AÑ: `_Kgf lm(&ReZJ:ըD %ȏ0ëP!XhPP>Ch)yv)JPҘ!tdy4b V!4R PQܦZ`AJ46*ҽ'JrY$;%{/%b&f!fz3AAC$DAvO$v595l܁%s9J`=IʵS!h W5 ^a]"_.2+fػ%Br)1DrX˘e-n$I҆T@c2ˆ %"e *j"@"(t; @,S*DE0e@ī:p,>rB *AyA 8'*s1<8 tpc`@8#H=r'ӕDL )ѹ:$.82 ĻnTДPL!PDU$M.&4KV B"*oy93*"()kg Q4@E R%"`%fE"bbH "lC4% QADADF,wn i)0a/ǿNrQ6@0orC.&1Y2@ R| gT\5a=zw<% 5KQ~__m>qg4| $& SG.]1|ufMle'q /G%)dpߤB@Rv/׿ˌ`8v4:L@|#>?FD "Pi5fr8՝l_iGө}H7h&vVcP'>,mtܩK실=Gކ6k mEr9*ď~}ҵ~)>d'т`)((Q!O#/!!H4R{J(,PR4@4 *BȢ`RM D*@ (+JB R%PPP % M U  L Hb@RPL@U@ P#00RR P~GҳQ\E*$C0!S*!YSQ @IqeP7ݠa0\$NJPI Txa_[Tcئoh95d*G2:ST49^\6ṸՠADMtLm&m;xW1Ϙ>J' thbwݙC>xSIM{7O(3"; 5IP5$48!#'Obq9jp$X$o@nմ9CNJ%:C(*Hh *%rȤ)S@::P7+(0^*:avHPU4ػr8*.j& d30F8d:R h/DzrnZ)F{gٻO +SW 󽥈le"Vo$'5 >T lgB]:W"bH&hnWƀfb$ݱѐ~bRI }3 t@? z4!ŝ5b]dxjQdzk6 x'y2T=yW5I0UpP{>Co8,A*1&? ].?4+گT>Cx˺EsyO* z `&CK 搠;$_*Ad(H'm]!A?a iAC5)6*G1+ԉiBA!8!JvNla&? G1'4zgіSN.9'aQK?_?aさ50!):-dXC`goGޟd@,~/ Z9;'7k׺mQMoqdJ 5`80sZZAR; 1FF֮{6Dܖˍ#E`(ћ땦 D݂v?S(zHy|O~/ڱNPёFA4iQh6;y'!rDy:Re7)j& T7U \@8*f "'8-;<)$Q %$H@PA9`4!0Ph0>GDP?Z<'&HJ j Y8@Sӡy'vb;Hvh9!0uX(Bvx,=ڹ؊X5I Zsh2ZM+ۄP Zb: vuD%1hr4""HvC7$8vp lt-emW7wAȃsQ[& \:F2vnآ9fh7 3I 9b klC/ MMQ@Ѷ3sbi]B^=xJ(;7{byvyIIsln Ml"!-)Xb38N(SYS%=! J!Ei!2Nhiė m!0w áBCk(4)JP2͵2A@ga prS;Zj$*  As5E$KE#CܬUr^t_f:u8JC0 }E'7rdDH\\̄A%1փHv'9]X 4EѪ]:MT% IJ!%"y^r s/8KNP(Wa|;<4<9 M9uf|Hn%6µ f'9uT4~K(']e"E TPU!-q?l)cIhE9,Ff;W y| Cc, OtDI$$"ݽM_8 ~-(^SZn&F1:o|ziۧV϶Yi:%"Ά vY6w7fY vDT;W `z ?DKlb7 vA-EϏ<)vM,@ G؁tRC+1 <-SZD9s7 .ÍlcΥ*bSb,iϞ Io-0tE ,9٨5/_;AfaGc!g})yCt7nc*`Aq.xgL3,l)5&fh }oc=^ 0У#H1b6Q.ܹvsVX]ʊhSSb/QǤOah}_Sp!z#~NgOJ VHX~|[Γژ pLp1ƮQ&q7aP. }:]ͮ 0i H? 7yN5%5 @ iıO@{g`#(e JQa& >^FUgUBJIbV9Kdd*?4 .XqAZX`9t, C9 f\i8%)5X6 b!8RCJv7w=pt;Q3D>鹔"d <^vrF%?:GP>";&OSȩrC4 !)0)F/m[*dưK ~oCy*(bhh18t71(DSUڢe2BiUU hLlh4⊨m YU-Q&7W' Lmhv 6PJ lu9ЀpƌDQc&`!dI!eD;C(sA\}Aȥ3 6@RWA_t {{!/i?iѭm䢧0]Lpj^;O;zEDDA??jG YLQ;%-@siπHk)M"gq732D $'ȳK%g6 nDnhiLr##y.pi0-v`&D@j|F8:~ipw"G} BPr4!3l8X)DrќL:L1 d^=X=0Цc2j Co/Go08[Q С!5)B`dCN}0[1(C%HOLSD1ĂVlO!cȸb8Q`Xt5(ѥ1ʪN0];"%Hd B JD*ET.M4^F{TtD?:"F#B'`Q@BR4+ ' ).9K{`YV14`F zvj=ؤZ9q#$D!`),IHB$a$giTk粕2L2$R $(VhH2d@b|mQc]x鶺'PHRdb3V0lo~tzzFh|$H%@؉ql!zأ9(Pd%B2}eZKr԰Ѡ1QdMJ}p`| PL SDa'[0 #}gb/RV#l-UTuEQER{pj# 4l`l;v-O{04?M PրE(Be$C_F>:L5?Qm1rQlN&kWu4tՊ:fi_H~14q>.ZfcuƥԤ)ЦAk%,ޘbj3cmóC2 lˑ1>'DOt'jn`!C 6qO9/R oFo٣h4}sTjQ].ɋ- Li4K=:݃MˉR)Psʼnv&:ru)b"M47Hn,FC?Hz!˜r$IQ$-dMKiRKM?K8 TW$O ?#'{Lխg݂"pz|nT>(&vD< BZh_fҧ8F4 %%rD%rYP ;d͹9޷JLDk@,5J"︥CGahYRtb hJu)zzS mab M=Qe)!Bi#82"Ya"Ap0gXt$5sNW 41~˜tx =wSv2Af|w\{ ='B@~_a ąҞ`;iE O|U^ ~E(i 0Oł: c4cf'$)hQ "ԯn4H T<;JOr %sÏe^SOIQI$D~юhpyq (P&(9pÌDNee4`6 vS0̯# ĖD*3`;#T Pt)c> )zPj$f ?loWd0DO,wq4% (B"*I(z5)^*`S؟ H$F1FA"lcm;1&d435!v-eӪb3 Z51_ɦ1<+iPΊ6ƒ-pbXP(1b W9D̍lͱ$ZiHd_H84\,0F6?d4E D$QMT@Q>hlqG8Dg4 @y>O묏wgr m+Y[ i**c {aأccc&L1VMmnU֍A~6ȨעIad4)l_ޭe(vMO  H*{i~~h[L!؏dߏC n=ƁH~wi=y%C 1 T)!d dpHTpPr8Ao0'y0yH CZU 3M7(ةAة+tdJ27#xDk ,cRa2 e#qI<ÎM^F 8`E*QLsNCSJSER4Q H%'=,itCi4aN[.uO|k#>X4D]$U^l D/ |?l>Pdf~[TJeLU .>};f#{rG]*)1+k,Eֵ"'otp̄mch9` gu<3v1#fG) A˹70J4wu2ȺpTjk)ٔZXk3$4{ܛEp; 1PUz3j9_p6!QI* 1fi `4Yb`xydg\j1(jJ#_x@Ne*]\ CfۦazҌV#0pVE݋E3] '<"#?FRfW٢|8>4XfiɶV糄 oYuԸqCzp51n88j>t[wF vXeU8'$]Vf,8k^Z^`s x56)xp ,5 ĸjo[jv ^vSrȅK`x6(v@ɻ*ݢu=xdw ?#؃VEҺK)cE4?^ PO:( clQWd<Þ!Aah2[ۻ/D{̓1VWJ9]Lm%+] I/^fc ȱPS'1L0A O!_,@mjq*淆zp_+K91*H xA$:l}ϳGbY9^2i13T)`C/sL3vucL5q#DڲMZ'˙smGOLlE숓cj #Rj(b%]yuT' r{3QR# Ka}KtS_ "jDD責>i(9̚@눑89!o(8ߎ֐8孂CAKH,nq9;*/w\EMP L#! #ҘMuIbPm/A.|k!qS&t5g)]36šL0x<^t}?JT@cH!AW H0PpJ$C <LF fh#$j"0緁CTԴt.yuR"pei׵;8 6UJk3|9D.&+]rt!D_M{JrH`swxމ\ V(7Jb `}?Qg8*+1vGOU˺!Iȕ:pO6剹U a;W.&Xd nR QD@hO]OgAS$$RWPI$V;PP>-:Y !B>: $d  6ɠ B$dU(?zHxڔiH`! @FC`q (l IdMy rq!/O)U#i.&l uGG7zG=i`=DQU idJ1.0< q)òBBχRp+ eep:s< .΀(H擉 JCO9q IUDPC T2xn [vb* NsDX7$\eE1vw 8TZu$`\݇~:XNL{)6 6 t&pe#bNa=^| { 0OªR1!AJPLB>W@<2`zD4a6 ~^}uyg~%:UK1rw>@;s p?|kuL轁M埞~Ԩ#*{9pBtc)bI#;7)j~8@Րė%A=csWv H i ns ~^*FbT ) U:Is]4."XUpwL :\lIR8Lp!r* Y Hn~4OziX6d 0&ZǕK|7?MsyWf!uaO&Ь:w*blRiužNKpArw<֋;cqzXVo)aƯGsaL<7KNͳƈ|zo{&f45bM]dr4n! oơqanOf #߷??@Q_oL@CH >p9ʻ޴ E  #es=1ϫlc4HbW%V|;^@Q(g ԊuPjDӒSuUDh:%\b ڜO#<:p v3Q C lҪ~mR-Ԕ`,IlVj iЧvpbb+CK[nq2R dF2nHIέtfwEaS \ZW@_(|4:scɌ ZM6udJ?_씔z1((!Q#c~zhͨ=;, y9L偽ip"MBH*"e9>E  JMcT`AP(F5_kh!N*& ]R@$ĔKH1b-1|qu2r@Usj 8GYjbyjF91PŐ1ESbf ,̙\p QwUc͂M&DU DP /1<96p'ccռ0z6f !C%[;nG;)5DJ;p*{n9:H &f&,DV[cQ32T!M5]u`l`43L}Ѥ(d ZU;b;q&9 Zt n؈Mø-ܘ䔆Ds `b4DPA0\w{#pt]ܹFbCm sGw9U Oτe0%"$򊱉cQj "رRF"ȇ ]6>1$A¶qf8< ePS-FNVn2Ϗ3muFy{.rͭ9'I۲S/#r 14m˼5!7Y4{e0 7Ob|W4fұQ?l!.!n(j5 O=O$*&( B y AbtΡ^A2[A E(/. قIwkAeQ>փRu uڍZ8MCCWQ:CTT,;hp;q;8=iyx>ݎP !3~d%-wTn9q-ȃܶtJ?)3VIq _sb%%ENnTU.φd>]юi$MK_N^>I8CZsa4`F 7R1Q~8 %'j@\u<%"s1xt;E|g~\{ Q!:7{ss&C)aB[(ï(nz`)P3"HCK2(څ@tG}f.(EU?f6I"@}w @gN:\`6! Ty!=Hj>_2J(%=Ys- p|JM; 錁(l,(t*2tqҠ~bq=)iUCl*9:e?$3dWZ!J:*pHF L%YY<)H R!?8;( :: QZ` ѠR/QW FpzzZCh=s+S1clfěb5FYh9-x ʔTΆ9 <ٱ hcDs/)6iXߟت` L5)N=6%Ha/uM&Ȉ ~H"X>G;:fH51dp d@"kQz-QH RrRN8i@ 6Mò? '&&P@ Q8a(LUnj02bnČ21*V$Jih"JJJF"h%+4A %TR N)Ĩ5A*z^>7bq ;-A0"RJ. `6~W4Yr]gռh Ϗ"1YY?0(_ $6礱6P AD5e aJo?'‡uAl)iB 4_B~d_!v:0," hPb&)"((4&" R4`9M5K2"|HzJTHTDKׁ$;%RE5S!TDҬ%p.! T"4ȧ0E:[`wB? s`"n7H&* =K ܈P@Y`tta<?Db ='$(O NX8 L PCR1zD_ܪ*["/ݸZ`3NG6׵<~%#3)ڞ'. OXiʆaDaC!O:P,#@VD >,؈5G Hnr8Fژ;Y&8ʂ|x H!Jm0`4hZΞZ BUT1sclPդ *YXÕH$T$LN,IrRR+4-A+`l*LICP+ Hl6Q$l3S8ix:K`Z3.džXIÃg)%RbP34id+׉.1cL~ yj8~&K!ѲV!.۸vzIJR^c*|1y@CqNq@xg75$hd. XX)e`h!jhܝ0:D&1en15(f^bkw*!ـs %8 ~c2?Q`=y\d *!a>I>'\.Bu]tX- JQ )HrGqa\=V Sӷ$!IK"j zĊ%ܗa ^Ű[=m8$EsfXXfDViX4pi{' }oE 9-frO[@"jkCBrJ`XLG<&yb*X`K <{ڇu'~h ZGw,p]-hȉF66朳g }lcT/jyMd^ w]ZjP14Ps,ۋy֮l=l,GtabLV?ǰO pC^,?LT4q0gt d9Cא*kp3l$(z9zepTL!4^Azˉ% {VxrfmnDzŕ =ayBbJkLs }rkbAWx%y GjFcq-p A؀~Tڐ@aWb4CyH8ζ@L[>|&Tg+0(0@X]D Lup2r`zx'8 .ZqbDFyt'5i$v̒}`<ٲh6Bl<ոZ C{Ȼ{\|fu\a)d'`~#wJ!p,uI[̆fFJFឹ|$3ThR%!nnaϦ|#?;=a x̾\y;ō"@D@ ;Y{8*FiKv:Q~| y:G\)[y8#ٌNj}!\m,CID2<$xvĄ  [{˳u֞A;4Ǯ5C0O|$3ve*b.q] S9|rR_?5yË#VD8 /f"(_M si .> C9ڀʤ@'N% ==Zs/X%;Y0u^e&XR8[c=db왺`+~\#9M1 xHm<5 魔!D ?&sGǂ ^Z -`Sh9KR;6*51yVDW@/M@uHFlm`6{jd@CMyVSLnpQ}x*$C9pYLI8/n"( -f5zYy0ZȘ9cΰ 4m{dNˈ.ZNVшCR:Ss5W›A: pHl9r%R_":Tq=Ab !} L: ;n j= fH;%VzEpW׊~`Qk桴sT^:0\MGfSp7DJ9vbs+" *gaT X:=`6+ʲV|0T Y=wF€JHWߴp>}#'҄6aCNmI_fZN'I]É܀B}\8:XbTJ 1a|8jgܺ`Nwa/%lbt L MCa3!S֓J;89˄/\Ϸ?ywo8 N~=#c* ^mV:1<2 )'JMJ;zURM@#*.s$p|ࠇHO{u T?]  WǼ1yhnI,~\eca-F+vX8ƜwKnn:^(ZZA> `!ZBń>`ˍC^Ѭ#zI:g䚫[p@H)JFMٜmTᔫF ^.Oca@U^017B5b)ч-i٥NJ^kS{Q5hfda!su/.d@&pBO0%"[̓L `^lr2at%Z̪4#Ip.z`1\;#NI |H=vp]$7G1VC{I4;-бWQ'f L|Wi.aN ĉs`bf+ Lmk[hÉOh*c AEp5sJ5:&q`Fo;,sJøL*^lQi g8Lrn{3<)dC+m"bGU#a*rݛAy'dow424 /dvxop H Sq=hQyɌt>~ uXt>g=wpk\矱a* :NF14 <='nàV&yWpWy ŊLB$=lDځ|.{ˤMYeH"(wmw)A҉DB7.EQ N[I"s6fYۥ:hNdBS5^De0 ;6Јv7Aɤ 0 -FٚlԩbT̬s # | j/|bvXb1T^Qs\MN ΠxK!bVk|R䣮y~_-5=%kĴLghsvPD9+ABVBǼsd h`}Ew3ܮHhuHcީHCOÓVhh@j{ WJ9΁M"$)KzѲLoz`?;DpwT{A9 '`|9w SCjLT@ۣo1v5*:{" *,P,ol50b#fj<`sGO OkkPi4- [ &<'}|/sbHЂkL*U"q`yT0)24') =r~:^4%jkVF>W{D ٘|pz uYxA޽<C`^O{x=1uLtAРEI$7,Cb$ 'N`=S5J(1,35l-#y!4Eԭtgi)I!$}E\Ihx":h}V27a.8J)?m5KdD 28콻0=VhL(on|kU QavvA >},xiP (::Q"+vH>1niq$K7uF9mX5XX5#`[x qBJRJ 4 є)j{z\j;C~3w/Ic'Xd5;V5EAmTYr*/;~$?"w:ɡimu-ŖI iZhK<݅zH~vyURa@iPƶ԰Bl+  c$E ^@pZy,b9FAeHPQHEQSPU&j A䡠" hrWR%zd,>Si%(IT=Irg,2LH^4v$4|3̞Ɛؒv"<78.Ѵ&h3JК2s;|y{t<#Tiֳ$ <9@߼u'p׬Ƃ ^M~7H&BCimBCW.;IsCdt0d;B x:&"FTzܞ|SBSѧNE~{%96;K|j-[;=-挫(AHȈC,a{H9E*y ZNIڛ=\(^ԢM*4D;G)G%JhbPIDQۊQQ6Oa@>-hLϪ{l$r{E ]uBxU25A+䧕AE*CuD C$Mi xq;ہW}uT)xԜׁqӜ.,>Ԅ=1U8)44&DB63'oͨnJ$`ybRE0`U|$<hs aZ* 2~ݚw aTN{t~>K)<=[N5Wf9C& SVt$} `+7!6xx'=͂(-izq1q"fb` s!4Ĥ'>}w,0 {jHGfX6BPAY7ODDU֭$dJ1@>L%9$9 3ei'b&3%uԦ%e2%ݜC>/>㞼xu[C[WD t):h\sEns:E"f(r:84ݓ;6KȷClBgcUA ri6Hrq|11ɢ XXHZs3`GpN$&1<y jFM v40:D ˢBf 9J D)qmDjA ˊI'ֱcƆ$Ag!i\a3421X),: &0s0xBq.˂Y_ 32 y P ei6ōIF&)tprmh40$3ЩԻr}ޙݗ|6A+#Ԅ]oæLL::}Y2Y5o="r+W-mab[fx k~D sf܇HdDvk/ƻ5ƝќZh{[ԬZlL5x, lbl<ۿGlZr :>ʼnιb.FETfE|^!ՅS<a3jp:ڪ@ Ȅ*DmV0ikS#9םZ~=/7 6y֠4s bsB@Ua ]ypUqQk$43qBP.Ȯ겢 wP00<#$ng]y-$H3 s.68C K'Z#nso\р8vBp@CP2s.7E +sa[ 'Po!bK5N.kb1Md2eiu!GxjK 2sTDŽ26ޒEj#TU'[ \;ԣC0qXd .Ife5 6s01`@FQrNF B6Bg9q>QXIE@j|<^ܑ^1G 3\WLR\71쇯 qC.^9gSyȚ-i"AC1FM0J\+o3y# Ћ 26Ec<8Q1m|d("!mZ*ZQmb:k\xL$={Wh9ÀCEp]il- Y $xop%ӌr_  &Y|bgڲh( B`4+8 x뛡qQN 㥡d 5Sh%>9 9˖zyZ|kN#\HzlmG^Z:G!wjN F\:! Cq5T4yXǏ78r0xjx+cgmOn[q2VVH=a68h"$n##t%Be_X&0o1! LQ.#`CU,D:B#< GF!>oX]40HyrG]@,ܰ{9=A;"rCY,-29+XXl;a`sP⩵ @8X1G6 fg Vyg3m32u` 60xp1,4f3LdY뭙"S4ᬦ\`utf$ %|D\s)2iƇD\k ^Z 亸Y M1,"షp=v-vUȱ\9 lPZCZț * Z8#Q N@ ifvl+ཅ,VAB]f 9L`A+<.ՖCꐝ\:{ҘVM3Bt(S %)VB3&zv orF\gyLN3 d`{˝|.9jj- `.]0ezXA 2% ?0rG"m6 zwс#upkc ,BPHp`7Gg]aAS{n/瘶O?8n .g![po.ULeXtmyNurb4DP @whՍ('xzjJhayRhƒ6-R "= ά}`H ʋh6g +ɰa# I2˘=Cc [X/:}H z)z  a@|]Kdۍ8wTd@!iƻN'kUi:汀5fP} gԐA_s >8Z{&v7cë5 :3.8d7eZLꢋľ8ܢV1F ] q l@F7SpϹ,Zfg̩!I=m4.8Ifu]t[69X2AxZ1}2f*69}Nr 1jF\sgyCM9p66$Ȓ4Y) ! [o$e %@j+ 4,Zpyq@mޭ`. (v9 KwdXylvxo3Y޵߈s!6TRA2yS v[dC(UChfhV WZ)4 P$ƘFx$@h# ׇ|6vZ؁Li2A#f  ѲPҨJa h "(Vmma/5Q %T@lC(8.RQ^t< ꇄ{#0B*B/a530f8'nndF;"ƷunPRX˗NvSUF0jur6bo/n'$|8Zf}}Q9?>Pp0:"D +2CES˛ ZFl@s)vdQOL y{Bu 2sM ~k/#(px{ >D{bD QEB@ e(|waYFF>' Ҟ`}$R*zK%";_C#"!='bq4TR6ɬŦa&za` < OGCU9'#ST@ȇnbBqT]{C=IT}|ހqm,LM )6 +w\S\sL;ΫVxΐFm`<'!_ % aYXF3`ueHd% @@L^s5eֈgRrR`cbaF`a0.U+_CZ}zsYipmO'E9:4 ˋ<&mE %T(R/)U%[b҄( ^Dì|L hQ` 0 - j$?pFmyunj.ReBođJ[jf-:CDđ_^`'6>J xge:s'`TzΙ){1vCa- Gk)޳SAn",N!wW]=;881 nv1) f>YoqiZİ|nm\ "1ҙiцH`Yͅ7 9fkq83nϨ(-pSO qX:gKEc aWM0X!XaGHvS 7 W]}`]Rё2>.X Te,;z?jkm NXoӹIvMcP 098+>Ok Bѐ(BY.ssش\g8o, [&&xIR|FC@ #9)۲[vfZ)V?ExwP,4AjOQxLzqΐ>~s)iRMZQ>}9F*%E;N/;81M'"v д0+4CF4#1SH|s `ūMĨH^|g s{&$1ڻUN>H)hJ5X * 6$YQ|AO߁>0ϊzAP"d(P)`4!|?HPM*dyȠ>2rJM8HhRB/b>b4ZP  (@~$~g'dh)=h9PR)CF*!!));N@@J@4eSidS.))QTC_R9*hGJi(@4y`cZE@y"DR@#CGJ^E8oTC:HMG&Jd BJ"d"RZI ! XA+ gXwn*RR+ihl, ]X'sWReLX7k5wUl@|  OI1QFPxQ`)8v. P(L8L)0CdU׍Rm͙" ՝EmAn}ձ@l8DsQpVyݰS`a"޹© @;b}gJr4C o79lOy`1sfh9ȉy[;/90b5!> ^y`b2s=\.: ;HD<.]/RnɎ; /<8aECE4GΑu hU@+3%LԨ$qFؠ*m\!I.U6KT{ <vbs;biir"&\xj;qb NUsr(((8yv49yإncU-žBlK#w<\'˯%! .{#DA܉OHRxmk&k'xcrե&,[ a!c#J #rȣKaH6ՅC(QPE،V 2$j3y\ rNݹ,8p܎p AV(jFUbc]O.9)YG(ku=mɳIcyz#9@/]?Y t/ d -ɰ?4s#`h`ʠoٶ7EbDRM_"`P4I xCLH' &3xC.U5K fqeE*&`c"(hi(UJI1ۄvg!5W]ޟggRHATFEL6C.0eށLPqyyI ipZ4Cj'`4`X @ʊH ׊)I&}d:F)H1REAPA4RDl ?JH y-r+m uN~P@rT4`\RewB:HQJ HBR)@DDJRa\0ѢU J9 e^PUqQ4 E$YPyhCDW-}!ܞdDDRM/Z#Sd~p9ÿd9r M@[;k|:'Y5)J]M*@ nsz {ǽ}3?9c2s![U;O@k>?m;рc{DMĝZpms ȂQ98mt88vy::p kbbC3q8CB9nQ-{;p4Y.F [,3qf,ف`P" E:c^|$H b\xsig1LZ aY]PÀh\#\eRµDA"'h2Y;?O=vo@NvI]ObPC! 2Ȱ02T7h@̯Y 9ܠYo]: a~m+Np l PՎTKCM4m LL1MO镆b"Y݁5I,@4LuѢhC$E Jг IM DJI%!Q,EPCH$SQATPRDSH- B,?_~Xd.Dss@,"bi8~B:b$)|zaJ*$&$ ` (*%hQ%)i i)Au{4$A4K/+ɲXY`M'ц1xwFIM5.Sl4~EETJɁt$jy%@֠=x`пR Ĕ*p9TOݫ\a>>C0@G4СCL_5`4=:ƈ=DMc#U`0eǏM6&7i'0 OhYs hCR;ݯdy:D )]ch(\RqPmH: S򍒟P<M $"DBDG%JZV BAMp`Xd!)Sp5|-^4L8H*p׈ ڊ L36M.t8,d5 PBMo apFD[ H\8;VRp QmSSQ6}ci>ASSLIEEAНI+JB$R+hh b{pDMҁ|zy6z~fh"W&C$SaO}}q&c?z> `38BHަqǏ o|4d$@ 0b4Ff䴧 t X|ha $6]CAZQyK˹̆ A 6z LOg'r4LONJTMgNd}+6i=sI28{H$ $zmY6pэ0ZaS*ú=~M3Pѣm; ݹ~'ʺ1]L4h r f3٫dq]sW]|xήpB(nҶt$m_fLBz!wGnZը 1I#(=w`ˢ^X_Ͽ:ҫ|y}.5FGWrzX==GJGwY`fڔ< šзG>bj!dw'w.KG ¹( y^Ci5L:X;pѧl (r ">:x$x0P O_]D(diI("b^U4O%C PO81W 6gP篾 ':$4!}kf&f&a>`uPa`(=Π:Jsdh'9'v!hύw^$P,u @4Ґ<sFsJm'#030M;Iigc͈hnLDB( @'  D8$PR jmhTA~/ H}:fJk . $pD&=@d kQƓ0I5wyb4YfPQQ,{l7}ƭV5-!hֶ^F,8QƴIÖn¡Re*.X26ː6kM^T  ߦNa`*DBtKkpw]I,Cjs| ."Ze$ԉDhOnY,A ţhdlzƟg486 HprЩ›IA{D0ɱSp6f>AA:-H [V޴f2nu7N8%8]aSGVckF$4Gɢ_OƋ]IfZX&nځi1ݼQ2 G] : (R MƎ@C/=MUI% ؑΦM&AW狝]3(if d0h3QH*1›b43Sl::[-ewL3 p9Sr/1Ơ\8XJ dJGd==љI4i;Bѭ@EպMFSwѶ<_+`jܝ:2Y_ oO[HZ~Sa*˗^o'f3.xvc(rrcĘlw Fu!bpH87i/ABD eHOe!CUQMTTdGlQ{D1(i0?szԽHM^h54:~oyqW:fQ g5@H~@|GϛbE(urD _PdwC ~5g_& 1 y^o6ϨIhpP7!6~ }:9(6 mɞ\ B H-!}~CV@(JzN1-Yo"\ݒ _K`V'ȷ|Q LjOI L( Y>J3d9 ,AkTK0?}4f'Cˁ}4C" i,=G2r}(]3A_Ty AwĻx-Auu(#E'!y,@"uu}?|GDa7>ڇKվ [*DcW<׳Y3z^ͺjbszbf[pjFVBe©B6EotE?Vά8c8<$,FW'. [m=vWrO'Rz擮?|C]@T"c_##Hld2髿hgsEQ:&\ke#`hM@`Bm( (PH' wtKX q$0F\3IrrnUoC|%#ɯv My;db;D^"2CaR#v'HR–="bX$k4P)B6+lX˄gYIrt#pr7b꯮7DaΡc 4.!טZp0?]T "3;oRI:>OD O|\:f`vp֚^fwɭ I ݏplY}i}]k{ΠHa1;$ ej= 9mk| b>~N@/qUU6x_mFMS <ͮ@@ @x>RwAOH~zsC*}bvC(#MsBXb\蛽mIe7&]th5ӏup$@HjƢ"YBcp^!W>o&/`a頷:YץllweΛɳ 2+ÏN m !Z۰q@!45S)܃m?ױ6F$<|~J'zx'ϊysuM ;=>_g MܭυG) c~C-U K5uIn ڸX[HM֫tQ EqmtN b=9sЇ̴%/~ȥ"4Z^WYW|;7d<]4Gi_G}~?,<0`‰@?W6 ܬ!ʮ!GW.:)`Q<{ЅW <=4>eC-*1 Whl1B=N^>Kvoz]sn~ɧGJS6\N*JW1Lr_`JrA@Q'nbi8py0 WP`A] |Ahȱ>Up |oR1-VZ'~?dH AKO_x@`;?4+*kxg>pl J%1!1~x8GAo\֝vpu.DR+'% @No =yx=nn#b]sWxF=\9|ԾN$ro]F\hMs }#r0xB\~{9SU:;i=Yn= }&Ov v {ے6P"9s(BzGO,4?|`ʚ+ dbi ѷzV*90 ;"Qu4;:K;}qWF8o/^-1E7K9'TKm/9+lM $d>ږz]Y.}l.oxYOFa̬,50 (W_w5,8Kb]-8_29H ~ffC\;gP?  "P,Ii{LeO-oG},1#9j\mkt{{t{hbE-蘀C.)Bɡ'~2Gm23>SiuD2sO{|x%(2Mc`u SbS@.W\Q1E(8^ $e(r,m 4oG~AU3!:EbZ!A'n\HD^~_m~/ю7oeVHX,PDD*˟tDOSy1`X9-M4l\KB;qm.<6SeL`_rf:2cusOVq{0)-FcNp PEKX)vp*L&.'Z[m65UV6(XVi '6ŝ˄k7h6T4V,HE˃ɖԊ5BHBS c?rzIAۗ"("I*hbJf'A b("J ( a(h"@UE ,DE-B1Ѕ:54C@E8 +45AA,nPBTC?1w~窂х;>?K<#˗V%KBT gsGĂ XD=,\Gn 3]Rѭ7%@C%~X5ynURniخYvjapڇ)r] >~`Q 1bp*!s~]~Axa"*#5R:">t~m|8μcɮPi)jֵitdelhjgCoÊP=#b1"흄oC7:Fw}!Ef'͝ }绅owW@A6,})%|3BKlܮEF,2ٕݽ]"&𩱭AmKKoqޡvCuì Pٝ $ O~ lZ+%vblժ5~-FKs8eQ"OBT&t)hПADH o&d fO~t}(+$k $@cjcl}ƢT[ *}U5[X=C&[v8z-=Nq;g@!{޷qz{IGTs;γcW9}7ݼB:P e]0p׵`in]ޝxu3^{ʵvvf\zxگs|{0 ^w5j.sеzʔvݔ3[@bT9 C.ֶdr@ҕUۣ]#Q 78^Ǫ=-TO@n;^s%{ =|5}O:ʻ@S޷PQOd;ηG{ Bݼt s5[(h }m|}o{ܟ孚TJtw{-كn{7q}}`])#T}=oxt(Nt3xwڥs6ҽ k܌QWD>KCCxI}c)=-˟wu[7I5i{m}ͯPK+g7D kJ״[@/vԠ)D%wh $]wZ96}y.{{wY;flG Y[=>A=n_sU+.Rs[s: kKmˬ.\r̓sDǃr ]o{{pPl>wlhOwWnvP 7IuDݾ:v wie_c=ên^3zVOCuڮ4.׷z b!hǮ`6f7]ڽ;Y뷹cG7:@hhwY^@l;Z>MXelnⲞ띖׵CCK]wT7VQn{ rKa:ѪWWnCvД256s^=u{ޣ/z:})}zN7Ͻ/6/2O[T)]ŦC1gg_wpN b@:݇A..}볷#zoshmyg7egKպ 0\uZvwyU*{(^kP>K}k=Sw۫p oy_^޻dƆzki]_xvι=.W@yMHl;jӹ*kچSɁ:kln\S(v;7&659Gg:>@>k=R‹;˾Zw4[7sO5@Z6rVN2|T$=F}C(5wp>yL:`y]*s9[PzZ]֭ӏ{uuͳ7oN@TUe{_5iG{2 R93e9U{y%@^Ao_}7y޽.̾yDnwtΧ(7֝^٥KԞbl5{^l׾e}@a@Q'_=ZU}l.s nkϧoCO;w5ӱ9]}f}=};mIeWZP}d}z_m w{ki/7Kπ=*Fnp滀탇F x|zۻ}j7I &@ L !0 =zL50`ɚ3LA(A @ ȚiO$z'LHPdLFja#A$A1蘥?ѩa?!GSSO$OPh h@4(! "0&MLM0ChOGj`H4zhP=OI44=#A4A!F#ML ИhM)L C ?T~HzI4LQ~jzf7z i='=O(46C=AHi@(hL y h(S'3Pid 4COP @4hhhhI:!'{{ߞzIJܗb J8afv3;Ӓ_DM@1ܣCJI_vy3 rAPGQAH|ESQPKZ*{E144L?߉5hؿ(jf oT*쫜'9y'^cqV(x$p\86Isylpb;&kx?^呟w JAA**U EL1i4~qB @H @PoUzz2LfXY L%ӕ y[`evC`J˪*ٟpDp\*Y".+w7S2j3A&&Lq/3oV J^"i:Ưn_$ ILXHkA8 JRFRKqH! O$B B'ps T EE9Rn"+PsEQ82R:2?Q\#O)2(育iB@4Opa0=h< ٿbXY Yu d G/ e"|i ?G.mz*4Aqc̗^r(_L))/O,sfrNH٤PM!#0,bB#(T@8 *6ʂ#ox͟G*~&%.6Q dUM$/"UrܞA~=29ҫAps0uE $A{Ho}XX/D8Gۘ=ʿEHE$3@5~8! _獠o|հOj"/N||X \V. h{Qx'~/[5:v?{% kgs>֯H' +QW;b(;!C-"TE?@4'-ш(xAO@$HJf9!HF`i)ZBHHa%))&B*RP%"!RI% JIJJDiHf"@I{PL*ĈIC$$3 PR B2* cL RfdFaM f&/L@E1@X*= C^?Ma( ji**f`a?FQ%!D+ Y?qA_8?CAe(Ei" )ih I*|'B i)UPPPI{ JgX @ȥ @I$5P5"ұ),H!P$-PRQHj$"BɌ%)J B*J&si*Y@$ VbX2\)H!( HaN#-R̔R Uh DXAXF߿g<ӳjm$[Dmf~2m~ğd{h C1EaghǯoO\ .`|? O zEi2k mo^o_6\yff"#Vu^a~3^!/o}ϵWwq}7HS<3}]=GXyrIh씆w>R% {t26``sBme_F*e۞K@$1٢}?Wӝ} L4 cHC:HB$]*svMu3=gS#Ǿ>v |;LK-llf(MʺƤXMrN/Ey:?>n>]+S~7AsKòI2]@#EQU'[<]M_UOTY!53V\xJ}SdX/k3 (R'Oʳ@E*O3@t:`aE`C|n#E TWqct:KWG-Ҳ?=!s4fL»&JrR fZ?I!N):JqR|j-z*q-gycsembT 0*GEԩA .)|wfsר4E^=:S4038GS+-cs4weC:gW{-z-(YץK8K_WDSÎ7hլA`D=+∗Wm,SY0 @. Cq'QaZci.p! ɼo̡i%qI܄s* ܆7<]{e(Zz$|O. A` jquϷ)i )4lxvx'?a:g̦dwr6!jZh~1[{Iz|B9ᐔ4MD1.iņmĞ#aNe$=Pp%$!)j$nAADxK>2%xLC4DL(D\VoF00,!i - T2)fLŠ!a0d`̲,h+aTHd́أ J ""`tAB4HYL!ڲhh{TM](A@=Y|G(g܆PK'G~5M.[5B`K0Rge߆M95\Cc@RR!%8QEI\~vBwVRRPv(Tx'Ðf ? '.ὕIPgUqD4A&d8X! $>B>p]8OΙ0K?+/r+"<+Y6:aqd34KC(O H,PQ]*HC/ZP+G=%ƶ!! ئfKrT 6:?űrC/(Y0~#mf(A4N([~3FOv7F%&)=- lIh؄l/FzOn #'9G'I,lxG5X3Ïqmm% l5BlNRQݑ0BhhL=.Hy@L%yH/ j&ɬ!(f([,C0J hF(JA$L7Pn^kK!u}ylrPPPJym]<'+wySތ斚~Ȼ4jf;O%)Y;6diN PAdbE,=s1V:<|PJNa>"- p09`QD]fiB4!*TaF- Dbp52S-UM`D&4 I̍ADžD)[㻼0:",$#^g+tCD" !4J243TLYU4(-x/iRj0֪eRlafz0 r 0δOXB5 ُ8ݳe/˂D "L*3_w QI!9c-nNRI(NmհWQ7[#˙#8:n#ǻ N@ahg' '÷AjxvAi"JAOG=ZO¦BЊL zWJNrGn[G("^y< oCi&ťhZ)i F())J%*) BVi*>7(c}< E03+?T8vA;M/9ɮJbUk=5DJL6D")#@P1 +B=vzv} m"=fH3v=Ob8kM?;Wܨ1z _T%xr7K Εs\# y)KTT{%k vOT{Bܥ̈\lIՁ!K&&^X{>L" ' I&1B!)a($slB0m( 57Jޑ :")IԌ&F/͝GaQ0{(wM9!š1waA`.XV02yϋ48Qe(&UUETRwVaQ$)K*pI*CjP*I(72 b$XiL,@]$T2ϕAIShld᳻`4=n᭤Hf.sW 3 e )Kp+kp#l*8&eŒL/|#xabo(CIDQQ!+E!&7Gv8"/>蜚<[5 yW]2% f 'YL$AGtџD=dxe2 ` ̪j(J,2$ '5?\d 4=#lj>n hGf \.lG( e &r^>|NnWg-j- &T U%U?DH寰Tw<Q3,e< 6Om$)Xpd+UWRPut 4I$V 7A7W\sG+:$WEH)DپO"gAzRI$4IcӻF479o4<boof.q䍓4TA9=؂ t?}Cj|r bDwiO:gL It{:H96 !HP0@b t^!:naҏ+ظUy M%q̶.\XR$4uCCa ;o@0q ot58wVv7aqDz:k]\ta0H C*)(jv|1vqJ% PI9^Ҹ%W9񫩂r؅y҆I@3Ȑ;|o篺aZJ/chcW!d)9Ļ(AT\!g|~{Rc2(,<)+N߷lwR YJQPٙe{D+A : )V%:q`׆yt>ЖK$$$2A,MԚ;C:N7!!Tb՞*$99 :Qޝ/N9?IXNL= .-Y!m(agzօ $\+J1Oߜmó[W+ˠI~e@>Vf"nLi.U'4 3b$$ AٹgT})-H/TcUu-LI7XJAmtZ!R8K&SS<ġ"htO4ҴH}1OZq&"a*O$FU A(f;݇V}_wh~+\zm˯\6!SiQ3(@u35!IO g6{ڻ=l~O{-=Dn3<}@"h:-!J/n=-˜LDΓs8z7 W2Y,CB=z^shkpv eCr0Qbo3 303 304>U1p3.>>_;`øsN'p3v-7QǫUAv %Ԇs> e_"|ƺr3 Gj7Ҍ 2s3 300 303 301ADGCeDAFaf\ya&sMM736= hES.e~)D x U̽ cuᑈpӡ넀Ct]&uc`5"ԄTz*kVm>9bj=9*WH- EhŔ >;=_sZȣ31+*?; o32r+ 0̎+`9 ?-RѶ~QYpy3kc{p3hh6:hgecF,6`q#???AaH=AC D٘ʑl'-?Y糖H-?_~3:Kz?g 0?<7|}1zف/'^nOz~_?5ЊB>mAJ}A:S |h4CyrK2H_Ѣi*=xł-{r}tO;G퐾{ 5}{>4O<7չ?'9%vx__|h~?Mo?/~kGe|ﲅ@@?bw>e͟$iYv}G~O, @K @/1((Q@)Py?@%(iaCcDI@{2F!I)bF%X&?Ӥ|YBHMp}0`xlsƢr@Ba"2O6DbI La= ` XaXzM% )%" Y(H(C/ Gd # Z$|J0?02j5$ǣi) (/xzNO/x_E 9HӏJ<{<3J &lP>  B@gHH - L! "5( hR H%$  &B d:3VE@ V%F$~EGEbJPaBka|8`mBLPvI?Y?  d51% _rǣXꙗ6Aq탩Q$= @lCb&"[EJK4AغIb.SLwDtQx\9oMmo`zq͹͈h+{^ DrYU@spRtAoE\PpMڤ?ÂhnЏ;Ңw?R{;QMAV6 @` PCaN~/,M"3Aqm8Ě+z>&P{<-3s"-.*'&EQ~¾es(4F<6m%ipa `|e2zj !)FGI P< @#i VϺtpyfs2Эܴ+ɘCydVF@`zcoMY yW8JJRTΞM% 88|'l?/7|ZMDzWjG^ `s"l!Tvz/HZ/Ido0 ϞcFn3zcAw\g11fś_\N$alTH0oЖ'nz9UvTF1;}CHCM!%@Mp&3b>Hkoލ:\ iGeR ;ŢbQ׈t;#Yh6h%BU)K#?p 9*LD#剈E( "vQRfBftt$2٤̻&3 J"(k**8 K 6&@ @"XVIXH$"4P\PFzd)=3k;X^mĽ?7(3H̪fdh(x~vtǦW:| 1 Ԕp G%xFF i ``R<}z#(o ň0bH ?xh&EEH;V%Lԟ(leĿ(|#llɱAs;+"{WК׉MC]Ό}!N$dbIQճa[65;NLr`յdCS@!le7IК̚R8@5$$IP4&dI@$& B`1Q++V((((:gKxąaI=HGG,l!G@}p-[ GI,ZJ]4hp$ԜU|SX >Ltzx5;iiik̞ yF'i) i )" i" ZZZH< 5 rG$@ߧ`K)7}bS]I,s~e X~v},lk֏)g -U'B~JJ jK()-Pv_I8Ȃ=T1 Gv / 77ё.\KZdDPqĘ8L0pL0 %|ķ[r2/k4ANfs^sYO}2anȏmTmLH]xAJ[|37dK[ШT* HV >U$ 'CfϢ-IB2B@"TS^C_rS j{tw ^? CE"|B>EX 7A&*g6"$ ЈYFIbbUyNY%AI i2 2A%ICS̆Hu@ju3**T5uˊl29i‰3!%=aP,S؃( "$NDG{ O__„{DNrR(pPsh"܀ױ9ϗވ& ӟ  >/86:ƈ *e~BG"aq٭ߟb7kkF4^6!Ǻ#Yv$ Me# J0 PTbPF5tv ϵ]1DH`Fbȯcm`kwf5Uu1.x<|x O? O$.@I&J7u|DOa`N|'Fx*Q{Ч|¢%RIr|G CsoK9uE,%cƈ=8k`#r ep];Hx "D h;:A"f04 ǧ 2<=I=܈"""" 5s=hx!f| XГ -2(/!s㎚7 ߿=qƧDI9۬q?og>mHy D$J6x&i$BWl8&aZn 鞡4pfM1h T?n+4B-uRV-l`G_8 W-&llo7=Ȱ PD 8HC h2u@wki) v`c܅omVJmq14͠q %xYQE OY[ EzQFFaNP8pp"ToQk٢.OY{^@di+}HM4U_stlK ܘx}5I.;gXX۴4;OglBgԋZA #I 2/r46r?5 hH!CRv'ܑ-S6uwu 7PxizVD4À))1 |ɣ Põƛ6@jly&mBm]p[a70,ɛ?"-J;QG+x)"d~;nx PPPPdd4CC@d$V=| khݠ6'k'`\!mFtw{#3!CpHܑq!+:Եd0u.ph|a}Ƹ$ez9$'aȺCx7!::gZ34(GcG&aI^̄ 65{W *MvTPzI5%t=&W?68arT?Iϋs8ltBϧEA #|(juxd-uqorB AGx5gF5]}ܩ{b5Ϗ$=tICzos}AM qN_3g#4#+}} 45\D16`K%||sg P/z9n''r{ލTV(vB{rL@-Ornx >=&}j@R:=~sgH =1%Kuw0LD f]'L'Q"`= JDm Ÿǫ|i#H(1|g5p/=ls)*ReH}8 79;^  $CevXi'yǔE=Әcdf-!C-gnNo4Z<)dϞDq_^dq3&tjA{U:lJ$:\&c"܇P(+x?/ӆPj$;]sZlnnSD)Gvtt0֯rg=pxyt UY( a^jD0as* W$Y3!:> =D+f""(x<;p˂!`p IdfL qehR)EI^i!$ܸv9|%N6FD mBL*s,{MFM ڭڰZt` IYk9;F"`'70T(?`K#gn"=hj$ mpin=Y%Dн )e!1smC"f?}` ^ vRr@]$;2;A.bcM\ZVZ>N*bc|bj:F(Q󄳅̬o/O1&MЃax Va>&\*̢U#M(bQ`7 -u;%L}9br;8<:+S6~ {Xj"1.Rs0 lѾH[I^Ib3sB++h"3=Ij*+hZ In}fpO`VU##g(s:x##ߥlHs҅W|!u(}\(9,  wΓn!F[Wt> voЙd¯R6(g^ ̮3ETUvzTU\˸XVt G ꨇ[bt;WSӧ,gU!S("1B0%]P5n|ܹ}OӤRli>%Up뼰m5R01ÎO;v yq9!a3mׯY4i5)c.!Z(Zz"ߴPD̆c1c/%ܧsQ {>{Q=H泭Y9MS[3fDAqAmT(}R4Υ+9jfj> im}~H7QPT g8pq%s5tP$K&)KbjsED`Jyx4%%&E5` ''I$&by NbjDl> l֤͙"~47@ܮd(vQ$tΐJH&d{& Ɯ¼9wN|?8yϯ~a'HB( !SR4s#Z  F 1Di͈ LUY %%kq"LL{SSyI?~))(ewEa4hT&l4 S!,98$\Pg؅hE  BJUn(6l٬;μ+_yL<XoL G{j̗ .AbdFQ0orQsQxb: H:(;CMy+RaA<2 M=&fa $"*]/M'2qιpOhy%)1P*dbgoDZu?&_EA! {lL]%ݳY =UˈqzNN{E3༲w$+xcUz<=ckQkly~+&9E y[N1oU \| <4foux'H^rrT"BTA)AB[N-f.G(99t*o,_M9x#YlWٴ\CU;.=,k㭺-Lam1ehYkZjc,1-@׶i _w?eV޽Lϣ--|i# ibɟv6pa@4HٕԶgN.MG^u]kc-HK܁qq poFk%t<}}eG1*" [{ʺxS*k[|4xUz'QCW-Ms3Dv"&r-Fsx;8a_x$pC2u;CJ͙gF&o/i1B^HeTP.ߪHFKe ֊9_%VX+`D|QW=,ua.nGUO73_K)1}APÜlVT0,@C̑G`GXe-пZ]kINy@'?w̢B }l$r@ޭ?uqЉEg=p=@Nixzm2M`KͅÎaseRrBWJ _J'jyOpߛM!=#݃xJL%,98*Ҧ{u*F M*qkS%+_=erwATlRUgz A`ESUγٽs!Te%gǓ2ꂠ&y 3&**KxQ{9^gS(^lbY+U(=-xA6 4Pe1 8XXAĹEGo%I=FGǻ}8g|t 8׫`U% aU$Դ`v7r{L Wf< mu;s]{I IΑj.7xq cʙ6fJp*t6\p8!{R$Y |XbXJHmoryiU [-2RװɷrǏAgu"L@%Sl+9 *(A8'U2=agtVK,&Ho.W:yY$^g|<5I_CL& 2cR.Kt`=V|H9E?z/NZ{3ff3!@ E@D3)B& f$hS[5L%ҕ5C UZY4U~LTLu6/Č-T$ -;z%4Ҹ3t 3aCJP5!e1P' 0 #F",!woDtb): qa]o>6!.|>u.\m375eqoݚƷ=ۊDO_ gqunlh!ƹN>r.b _Z~z_hW(i`(`!@D_O|#nl֪JPX[>ƑCu(PUzq&}W0mG"W$DWGaGL"2[E!pZ発M9en j+BO=(^iβ-#X@-¤ACqld}H%$ * L`!lKg!oꄕzmUzfxhtISM.^ YQ >-Ae!HMtR˕ΝxWFWfΖFU@D{- G~h1r&{ sAʀQ1U^춨 q4<6vDo,$<LP0E 8&X Bϲt*UkM46H(n&)@".[P-67xG͸ y(_ŵ6БH}!!l+Y r R^z'♕OS*T VPn6L2""mTSZ8GrNۻ'Z2"Gux`I 1B0L^7u7ᑙ` 7aͿ'^(ČV"DQTTDAӿaK{ӲݿR:$TJH @l_&]}QZp [d!$ʊ^jD"ߕҾwM-x!DH3",Оa& A1tSKhI$A\_fSE *y^^2h5'v#cύ@41rX֕"\-uE*9iVZ(hF'ʂz4-sמ$%[аfA ƽ9KͱfFdDH/=RV,0$\$Kb֐r'*AWsXT:Φd<#}Yb=[|D\L2PVǵH$"V~^Lrҍ+Ad`/2X9;y 7̙eT7'>xm@8<ߥYT*8r(,{F,υ5f sț%RA8~+]MkJW*?@ذHtJa}k:G!|g#~|bΚoS\qڵCxzNsbATPD% K@DJĤ@I QW0n&:6=c 0_J_$Jy2Q xGvQL$G҅59B (a݉)L3VD;٣ %LȬ2a(z%\!CUT4 Jo Gd1dF)$2d^2 O`kJ}_P$ PA+- LEDHL R(a#eTQUQnag۲Y擽,jZhJ& S19DjIrI b%oNT( uU]P)"~(O$H[lJi*kqNy䌮M;t9M܇Œ9Jd<"թټS4σ& gBv +BhkDѬbhЊD"! (FyWdK 8$ iJhX)'< 34ͩ<ڐyh˗iwS0iIEp3Rd{yW<9ۍkIbrሗ0ԹQՈް؄xB#'qg7V+V\f1ݔP1`\KU,9~" "(dCl,YqBڍMѥO /MP` > Z?(D] 4;`Cvs,_9PxⲚM0-\j#DBHw-9~mAJT(@H|vd)BBmmCy!#5i@%8Ɇ\ XIߖUjt%c#y*q,FSꢹ(M|v9lgLu=;}XµR@H=EY;HERG|$lCzlho۹?OYhàM瓬c;( ?p_#+S S PMTrn.#c,lnaGag)|Jʒ|ཋIFdfٍ;Zn3 $qXY,׈+4T!AAI"7V@6.A|O s#xqutG]&1 G&1 0DG 800bDiDG x~ӄ6ix]h#$ K0~C3RK1`ueҺ|.vN}c-\AJ] s#uNѸ kتv-h:KNU4Tom[^8v Sc>GMd$p!\I-n^BM,^?#J0 ?L%Q 8`]v$W{+㺀}M~QhӸgAQQ:-zRҘÏGl/1`d -,yH T1Jޖ?PJ#+?d v+R?{].O*ZV>}֎\ H09ہa9MG`39*u?#h31!u.>LY07X.ljp$l$h(bGL.yYlozɒlo _pl" qA=S> =]ANs^PϜ5WPbyrp4__fR42|(D@:3Ȼ{?\>/9!q=Hմ畵ܙ4:(cKQ-Yz\|CtVꤳ10zm0NzAj2۬RrC4h קVF-vgß-EnSOm{R<dRj'q~gs]͛;I(xefm~0ۣkWy0(|TЃ0Mx/ øbĵ0A"~dg\3-Ʀ\hU1EW0 D̬3H7%w!(h$sLׯPcQ ! d H/Kɼ7+c-%=oMgOkG-g7K=׽{Mg|4o~Ff,wg=@7} s]A;!W\)rfM Q4]IΎ`'/m;;kߛG7o[6&[Ž*6}%A~r> `}?|fۡg)3G-L jA'&)*&B#^52D!ub{V!Ar-%ke+GRf4nvR"m ݁d2rժ2A(du ըfaH˘;8-0,KyҰQEC9x^{Y]D4 6~׽J^~QlId~9S? ~ RI" SqEGSLZ"Ea!YD :o-3_gR.åc)%2h8v%2`KP/crGނLR"ϛ&k2fVDTSҘɟJDUvUtQ3tYUTQsNT?mݕU%(ř5ު7UUC遳_{zZ[uC_GO1%DaTҏT^Еߝ PXXuP2 /0$|sie=Tٝ! ЎiƕQƈ kyt"&jhI<[-Vq93plLJ(Z*WOzW t?#Қݶɍxm픥,J2i P+m`rbaŵIiv\E  ãy#h/+9&A:!M 8u]LJ 0j?Z霛2xV%iDMMכgBOw/&̼  8uhÊm /9)eX?3[&2f)LPU*ʇ$& KWpdLwl.%m]0M}, "r 7+j$BMx&2cߝF4j*78E4.seH-Z>> keoqmȿ ~[K|-6d" 2 "%HR_Q2lx,H$lZ9br5ftA#%Bp$_DM"W]Ugo栕''|19GU}%&6#(Y ҐXV9!I뒽ѷ5=@; P|mh>|nPU1T5~_R[>j4gl!|ݎ.&l}1v>r~QLy d~Uhsmcj d3Tn^,nlclHHkG}kZ4ha& 3gdΠNɚA `If 0`5FX_\=Iɚ7yܙ g81zZ7c9 |sɒ$[.˫7Aed'2Zsq)ZOxB<=wl<>d ܾGǷ>2q'r2#UEtay=b Ӛ|dns `9 *R(ӭ{0ބ:`Nv9Z}ni<򥷵 ㋕>P]Nz}'#~o|νv/x|Vp`&F G6m>3F$5Ʀ}D=_9Φtd;-c .2G}"0#fRA12R'cN\mмܼm߫rεXM{|oHڹJ0Ηol|s=9ƅ5cj1h[Ǖ9,/9jTkUgYoNl]3 z$p$ LE"49w,fV+sx'|Je|Fq1~ v'تvۢPBqHc / "`Ҋ4q+%`] HO%a7:Wj}T׆t٥'XLȢ̛LͭAͿ t}!(H Ȋ\Ri_IgbT#Tҷ>?L#7kf CdL5 eDd/<:$nA8%[3TJ B BWr2j~`=p l*'L54Fx$hL?y};oV"x\=݂/?U^ $66&M?vX΂\sl>6}A\ o6`~ޥ}חN+KƱ=?~2f1bT:Id]V)MF46`A٬)IN 0kX/$,H2߫\֬ @Nrܨ!Szlc.0]4M̫1|(3gٴjmw(ؿ&ng 9|U$|$c릲J.>mAF3"b5mq\fZp\1QTS&} BdAD܋.#uЌtN^r 5ZJ_l'rxe!>mNzZ݈vhX @BU4T18}‚@N nמ! KU BJNn)Y^1?N>Z@)`u__'oܱpVu:NI92t W(ZNOc7!z$N;ks(gu{i*q~ODboc>WBvҨΰS:SPcvLʖoLELnqM0ٖ+8a2\}< yPeTw.QeWj [Jr fe)2sm4͍|Am2,\:x&,}zcR=x*jaĿ6! I_o)x$7"T"DBfBB )b@Sb` U!Do{_w4Zzn,I4IY?s?ǾԀJ,t׿x0yM>Q3(a3 C1l1$N.hG4~.dv\qix,j{~*7KК4Q[wE#`ـW? ;$ >`3}GodQ`j=&IP kC4 Is^E"EʢPQACt$ B Q<mBf3އOm&dgre~ȑ:AÜ 2CH'rLN9?.F6hL"v֞D"R~/L'n{l'/ԑ18bgD_܆k=8ǟFcVJOч/l .oR{6r5>+ &mB `FrP5v1SH|n 3Z<R'c!Jط&;EMW\dcv)se/"nڦ)%aS IMBN_Io^d =B'bc> DLA-+}Zh|wpa1߶&Bjy#O']#ِ31z;&pP4DDD @iw`)%2{01(z5``y"PtW/ o4V4 R?<;L>Fe-BL dԢQ#J@?EFMNI h ?ϋau̱q̴93(wg FtAИkwl.=9==(d&[d.t-io)p!=&TJyPHx`y i;F@!%B6(JmhM)a7 4fܛFU!-6d=odiu ?%$uAYx$4c~Z`hV”&&([+Fœo^QhBݣe3ZN+`q-|8 ؼOB^K=6ړFі{{W@oO |iC`^nƈ/" < $z#S=^hL@?:٘fky܍S\6NގzTvtsb(ӇG9y09sZI~FnfiDE92cdfs3;h@q #$cmcEA% hn̤ȓἻ#9{hSfbݹ"I;b31g a)2_1.]Nn!7P/ LݹZc%ԑ Q&nf'>rxa 9o4v9+wnZ z8nd./Ө@<ϮfZR}Uגsg{_$Ga@H&H9M9vPm d ߣ|8g} 2.Yٜ셇̩I$ ,&c' :8g2-g9FwN<$HU2|sx`Q b"((Bor?׸7_ ɗD~~tRNJN]0bA"D $  Dd,&IK` 4 a0)$!Y4HVI$Ą04IPLWH&$JYDī90LRғ:d%H)))ҞtOR]7ӓINBDH)zA$0LI$R1; bBq%GAOpDA !DA"cC&.}of?=dSOHNY+(UG˴}_,BD]#czO,/1Ępݶ ռBDaHp(H2 BW ILS` /;@QRԉ%Jq5^t2']:@/͎}d]2 Sa @$8$ 䐸D!).D>b(_8bbI$bbI$H"DĠ>2:J)DµʺuK,:zrb˛ 7&!6 BTFI., qM f$H <{&& ]U⺟R"\K!M|k|pCO󾿲-p@D>i )2LwQm8%@ ME5~g[<#+;8 '{s8Y!9APDnqj\=gA9 ,A"c P-0pM] #\Q^GSGc,*d? ήIV^uxwD"R֯ɜԑTXo ʹLn4Ivl6pk{)ݢ#$s̥#1a!Y )!ALQn0x@}] 2$A "LIL^\GדdO䜤J%(ǀ!4ܑ' wO֘^]S s#qd_2"32 L 3I¨1"r"5*Dx*"rx|~8Rz&>;FMQWǎ9Vfnp}u]fۇ4ԧ`&*etp8uVXo9sv¢s ̲ET/ܳ5юz* "oRN#=n祓#˳.cW{w ߘ0OH5Aqd Sއ8FwrWr30o|Xq,@i A53 M>gF~a%D_,J{I ֑4x#"x4)mQkr!cs>?E=}R$ABCoYOb'%HAx6~̀0'hէQj"(i H@C<9+w!BIJ~"`%P#P! I <4c7h1S=칽n~q܆//oD>:Lru2OS:wc_I${p*q4lO߽KN$?X3oQ΅* DuAG+$$+++|C!$@k un^}1Ӯ};糊mPU>eJNo][wϑWotyQ? `{;51.ғVnw2s H\ Ѧ%H!i'#XHLD&JT%` eXD8d@$b$?ƀ$`Rb#TiC t 1EL6 `=BIj;z@u S1:!&I@p^E+ s"@Hb( e+.@d> >q%{U R$M 'o G ! NDeHH0N!O%$)GS`D @ ]2> Y?T!1Pn@?S s@ rȢ(kD$ !@BdGEpѬQ풳tPL 7'=8=7`N1cGD|C5?gjXX;$هde\z$͆gj|jՅ | A\^PtӅmSt)=Lp:J"sW ZPnc?Vp`>)IZSRs?rX) ~jF6M 3kP_Ū*ܵSDTJTJ϶*TSOVUEPvmN5K5fa%gApZ36TD߄Փ4F(*89pr/'E& 5M3qj_1I/,os6GQzP9D˲PXpԔHQ =? /_֋> D2w>ڨHqJ ={ό7 OiaD3HL(sACA'ahуEE v 2!3kYx3tr@Yۆy U b!@ ѝ[J-dt(?w*R=uVUI׃nj!Z7k5=EA)o:5,3_|FiFI&{j8l#gZ*оhk{i iE3#"Ed>$s:d#ʄPεFbfLWQL[a6 $8Z+[ҸV{f+ ͦ0|&(5Zd~[ w#KT/]S$YE"f,3YG lp3"!1lmhsLeHu{|GYQ;U*vNگTnw6oswAQm|RLol|bA54I ;JMS$ h>n.yTFDG"W^.cX:lx>s=a߱ Ug:ܚgs"f# .0$US}0InsWK^oy)9~ݱ5nJS3>G 9UUUUUEWݯ+MUQUUQQaUQanffU!Νzq2"!GXt*808fAU΋8 TRy9\'iIBXPCOyf4]g+Ѧ D3kwSk["ϳ= uA&bbpueH"6>:ksn#)b(U-y2ߎ kh~bFr8N X@_`Q?7ϲ :H /s5:&5 e˳~\Tߵ~YtէZQEG5n0sg\NmZlѥwcGɷdҡ Bd%r) hBLC!W@WlC0EM\z+B$WD$+4."Hu\~ 2`2iЪ-LMVt8PVU^{̅c.yۅ\9//RȅZ'8"[>Olk| H+HB ki> U-% G5s[LIOs1abc(>>j{esq+dcDDDgnU)6IJiAjѓe"(@pDH*f2mҺq]+ %bsbLJ 9`bl+QUUD妿L'ЉѢ&2*ǴO2?z}gne@QKĵ $i'h)i&3ɳ?C5zTgr~%44xs>z&amygJО h$I>|ߖw~*43Mq__g;κC~Rew7[oc< `zz;wlK dmFsow+xԃ,Zٳ? ܷ)T@0ݲ r[kL*&B:\URjL.v&ei!=Ԕt3ŲNM{{7UZS79|d ? sD>-v25BN,,}(N<uLs.T #|э9pG yUBP@$`[Kɟ ٟ#[bE,c<݇(uPPe}prrȝELsW)6mzzf&&vUW `NU,ZVMjWJĜTR Vvp\]cC\\L $;4 ֹWE1k1jh=fTaȏ?79aۘMWOhJ#T'eE=woV`H;.Hx (zaMγb:G!|^_Ź%)`%ۖXb (ll?C˱eh^T˫7ߡ!^}~ <I;#Ϸ1~ õn:bi$ٿ~:ɆdT i\´KkGFFwkgԤ#ا^w<&b{k=?qoy#yު*Z󜺂9)"1!0ĂF1Vqؼz+9lS!NO${H+6x Eդ[1oS{D4xgmR1$)_B?!=b>,cB;\ӪL|N&b ״TBbmLJF|ԗ.B=?*m.RkfzصFmuFNӛ>DCsf7[6Kp<%ƾZpQWMoSuS4hQ-r%elH 0nRZ[m"l~`f=F$ʇ( Q>>7tUTJ,aۡHK(5* 3BgA/[x94!7?RQ wPY`_EF:kr@&&Hf !<"sT/pPXؓ{1yyluR]#h0VZd{8#?1 fR'x8({ %>(Շ8 optkILcC .>Ml!|J# ,]n^&BD_ST:"΂ct~i?) RɁ?liBgm}r9燱hCn-RRԈ'b{΅H4$_pBxJON D(c- ܦ≯lg"Dq ZSͿ/g1R:kcjDRb,f')Su_r8f|LbҖȧL/>]v^ wC>Moգ#dA,9m(++*xxi4=pL:xNlH&Jy3 8W-#$sBrI_9ǭaΐ=WDLKE>J"*J(]X8Wl.pJܻEU'/sq]֗Qq܌bmJw.v䣕tqH l"A_<ăt(LYslCg AsEQL=Z\Q"a?I[i ?yk+,,CFc74ɓ)M.pn ::R"ytߑHJQSMl& 2Ś:%eړC={} 2l|AT4)l-tDİ'lI@Lǎ$nab,oqYM, @&ҹM08R HE}V8<`rSo+*(PBĒI$I$ ~,Z' )r61DE,O)3u)3MBz07D9bd;1mmNY Ǥ$MA["֪! "jxJ)Zƌ(D@Zb#ʎ6+ YPNKI+|, A݋ra!2 >;LhaA8KiX_t$S%3r`2DLD+ k7 umf}rCJTd%s}z{U"vkN#HQ<3,]3E$Gb)^'5QYILF)KI}}!1I U I~ts@8Œvak&.pb1 Q@[/Féd>dQ3a7©mYD>6 ]VLUU0;v F8vgF2S+,w37"TG<<$6 iw)5uу^}  #0 lxZٕ 9nuD\)eQ$TLJDT 2(DSDDDDDDDDADDDKk5hexe Xt%dd`XbP1a.U۠щLXlfF8 Kn8cDA#DID$AO۳OGrT;.vȞ'ぬa*vD pA%IĠn#PPȂ,ԦJ bHFX^073,?Aݲ^VH:i.%4[.y5w­Ub"_}OwI'/ƇZ_1㽥l[<ym??o%~3= ryÏ:Z B19>:ҡ'/d P@AzHC! (ќ"6Ea(Z65="6-3$L:Y3dҒBA3P ly_ 2g/n"S 5sHcdfD Ue)ܕATm#۫Cƞ朲8tZ+Wa 7xb^l)p6v-"f ҈Dlױd!V{}X9bÅ DߠJLv>[06dOÐq "L03303  0L8 AY]C'r@beʲK D-f~LWi4^T _o["o8) w$+^bDADjJ`SyCo"v54&wJjoxa D4DPDRD w ީ[̶)WBHga`(A/;w{3acF8wCum,\y zc5fOpA}[n5FQA.a.O_;.`Vj4h1M/d(C>G`XѶ|2 t p4wt7CsM4 R#M0 71.9 x>3(1V=PUFPUN⢊J/Mmo 3M R) > YE ܋qu&VKg4t<3Aª] Lz{s,<`Q.y}s _!\ڻep"3[0ԢvBwVp 962Zxŏ@pT7d}p1uD'XNq9 FB@<+!opcv<3MxHib}eU$}XT0yӱ$l$i3N`9/dbzCMOtϐw#~hhhJ <J 1CA`el`A/xgH$LWjHuYJ y|EN ~N?OJva&Udwe:iP,rbKf1cQ:',㪏ᛞ'z^XJK4EPQALxLLZ~<ЏV\*,2j%-X#^#*IUX7>X#4ky]?˒ަ ;Ko9k%}M+FtQ1EdEErĆ|u'$I>ܑ20}]}&R#zixg:#]xҹI=*ا*8gu,UXUAufk&[ksN3Yݵ9q5uM_~U+|GS?/wCn !>uHQi.*o4OH^{g7+#՟JPBJ%` |nLVcS3w9}'D9ec;vr@iS~y0iߪ{ճGݖdkekґf[*nYY;ku4 ъΑGhy͓ko[B0?zkuڨ~0fZϡfd*Ѫ\q9)gG|aÛ}Uv+fZcꄳCcv;St =Ajy3ATSH~|jbs+e }Tc<|3bˏV&:ɛ>hgmM-ќGmy׊]H6MQF uX0ZE/pŒ K[8߃x80fX3RYUYDI:~% jV'_-G,T>E3 V=R&Ez[ؤb`)1@֫Kͤӌed 9rwb 2#0Qf KwP3}OnFT:Y;=Fcx#Weu]? χƴϋ#Dy_TFIYeY|j!LpE#ޮ<-D3$]΀r Ah}qXeIE0fPVl 8w~l)6TUeo^>x1d O_g[^QEUUVqpZ\F6S:߮1qv8U3:ncfLA#cri PŹ⋨x~Nv{[aT*[l[#*k%CV6~CdnOz)WuϚ'3 AFFx2x5< DRcJF7(ŤGA%,,5U5EIFEyaP~$ -LS B2" k׽n:*Dx!K_GɱG^^W`߶Կ렣zC Ma"dOIpGH M9"($CnKU!X){C<ƲO q0}zGA+&HtۘttYg3{aܝˏ2Hhstݲ@o9Dn+~<ϑ^I̧A},,h-'ig{{w4֑L]*{0Kg׷TݭE '~k}O=|k4-@wL> !qʃ&yT5f |܏y8Ϥ=0((+iLQ9D#I =A1Q~]3d! +w8*21HTk{~5h;AKƦ5c A<u)*Hʬ[8w%y{ʄsğ7͇ $k ToS=xn6lMÆDz8nO[/|qL4V+:*h[QR~-P!_x(UoesG d*1}rEQQ}?'-ֳLLU%UDEUDDQQ<,~ˣu6(4j(3n%JfQ9}EzДTH4f̧UU`pwGs!"Is]9 ( q2k2N:,^vF CACew ,W,RORP}u `}Kd#DIQGOqb v(gU q|B/]R8c&CG!#Ҟ&`KPp-b@dD[b )]fídWC|?t@.Lq/Y nϔ]hB۵4Ӟƺkǃ?`Aې`l NPde/ xXX1޽ޠ52(^?~cP;y:8iU~' M䝇ʹVxsAC2vXx b `B=o<)V=P5Ҭ17BN"~ ßi}dS驶om(Mt8 g;;9M@!Oc?ף?t i!.h$/9 `IH) "  Br495UTUi0f$TQA8`ŦMQXQ1,cMUr! -~=`{~1@сE9hcIˈt8Kw:{?6ֵSUe&jg cJrN5fRlkͱb"Ppm,e@Fq{Vj| Xy0{ݳ?7q{=Z✻7 e$BF0l7qjk"@ā#!Y/Jv.hlelzP717320{dG[A® mzwer4S?#Rs_8_NKk;e=|A4#VN!,~VA|M%?HA"3߭0ٗߎu\G.Al41!$ٍB\g1QXn?r~I'r'afE9y0g^c5lthϯSHj _=4d%Sj ban\#[ǷvqIP `@ho/\ 3t"}ӊ* D)@0eLW .7<xe|M϶8b今zjb3׬|a$  6Io؁9H !wN1${xmfEAmH9. Hp:PPQzO(`0 )]}vxxvc?&jGn A$;C>=.ֹnXpxK}S%D~o{}ppfiOU"BeZ3w|=NI?;u켵q67ڥ $`O9:q0q9.[Cxuo,e>:CSRQE۪;5hU":@l7gat>/ǽ:^9hA$pBd_hy1zr1NztO= HP&'dBn EDi :Ӷ gͪn~ј3:ivQTH廸uڽiʀnDN5$L@}L3$ܲqKZH2*-Mw@uWs}ȧnKe8mM1Ilt5! + ,0LH$$hNgAT{!VF ̝Mc@["Ac"8K~,x{W @7ZVm &Oﹻ$ߢۭdPrsr{j~ˌh 1bqlA*ߚ W {J2䎦⊢l9fܐeށ*0̫YMDA0~һhz@hi"V"'G_ ճAqQR.Mv<5ԴK^<QRvqbO$<_FTH݇&f!O"F1L* T}%0ǖR/L]Hc(XMOO&^0W*B ' z& k(ś $;?QP= s,-[=)P;/(>1UZU?һAv irO=sti!)שELpjeΧv{Nͯ ^&Zgۖ|{ǃ> ~ 91lQ԰gx#6:L=W-'jwQ*z@s,^NU0)wqjHؕܘ܌ a>kxWgtDĬj\^~nTg"Exc-ppkH AarrU5W超=ڰt54ްq@Pb6 YN&_66)|߆x;'8P{{77B_{χ0;B] $d5ak&Rׇc{cQຖ= Y\(s/HHIe%Xԋ?39+(5rݏKU♤x ojTaMAMUSXwmmiWX⮖~SNEh9D V;{֛R?SoO?&~_glxUy|]z x k^ZNh@">at\><;s@sP( *gKSSj{v]%ڄ`'7FpMJ`˶"?NtUޓJ;JQREq:P[c&QOd'9{ %Ho'Iӷ|Ll?= RrJ"/D:0,dPrQ;ĐmlrpHɉ'_DTuwӘTRJ %4V2lo2N䉉Z7#0Wٳ^-LM@Ǣ(*)Z:NG|jUej/ۇmp=5um-bs@5Nmt5Ă,z+ S Mk75km?:)?* amy Y+&|۝' z^QIw ң*V f䡉\+Kn_p7IJA"<]؏)#*+ʩ/ڭEjT;E'F·`O7/jMo `߸C\3~k*<!QKuwsŦ| x@[P`dHj%~UYX [Tc ej!o;3>O֝q'O38iS`ѹʲ oip=mv Xe㾉U*:@9o/͔@ڈy jSu?߇X?xg H bOO?wba=W,GqHrfEB-: iX|lB6K#p_rd*W);|E,e(_-u<_v)X KnwжS@^()Wv%'u\t!2IKzD=w%֕u,{~qw]mEbdzuN)V˾q2(|˩mvbزՙa9b17v|)WgÉ -MZQ2 N-KJGBVi64Ť4 $FI:T/]K|-XDK69*q]v&7xf~Og07Q~ CM@He% "B6Z{Ss+(M {~Voߊxp߱lYAɻa]Nf߶݂ 艽`2=;ƃYE$Y$")> JkWoGv/@PCq@뵌gGg{ՍL-# }Cɬ&̨f8IcX*u"C]x{ewuVE?hFE XcF\3Y?oX .N*sDahv}#M$̷%oJG#u{ |tfDI3%ڴ* O8.INeWәTAל@ ʂ'GaoE$-?2v0e*:h.seۓ~1wΣ[9 ,jpmӢp)"h[9_C7=RtwHB÷$gN~_RejON`+()zH jxRU{+ (yMIGdF!pJIZ }e#0p 5pw˃{5՚U&#b˄΁U";6dbNh5f#ZHT$˻!56GKy,Кï`0b:~ozzl4! _ܨ|o&3|ڟM4xK[i#d;8a\Y1@a=G0÷&O*>Oߟz~:A`[#,,ѹA{EM\SWEKXӻOk5e%_JfM8A7ۛTSǿ:qsʹxx9, QkScIQuz\qrC&H=}]gUkOI*f۱};5ܒZpJܔQ^C!A 6h1N0Hk F{X ez$6f[fKX#VYVּzv556m^Jd SGYW yh,@4J*! #j JE Ԥ)+*!0M.c&[UܣI-:euYǸ$8owD5`b+-oǧf=}d]rضڱڪ BB%u]4A=DjX]KcKjLARsٱ$$d܈UkOB#.ܤuk颚,'_?U}MS{U+@ffV7p9,N:isJSBM]g/'s6,X+((My6 _QmשD$ 7I!_vURٰ.4s]<:ӡNST>7~?oar'0Gpa|UDUN1@^_G݇ws{.e&BXc ;_n]]Cw.@evG㯿5K˥ " gAA:p9ڃ;U'ͫD ̅6gض)88Ib .[MZ V;~)ӶBtMiѽV BքDI/=u]YǗCˬC+뵻}Ar65w88_nV2#)=zmCC@BHuV7qg?9 L63^3I<'~QhQ!r/UwhȆϣ) d;'B?o;1`EEa1dmg =ge7DpIp6jV"#eO!obLiVL}Ҥu+>@+L#L9ڔO]yatZs$AA8jID_b#C}m\ A `F=NS-o t!J[Sznk0#Co\<6xmAeHǞ_msap f7_XZe~8jNJODCӻXutBi11G)I(2C(K!Vƛ…]eJ[bDH_>^P8d")oI@cJ`xggL}7Jϝ]{duuN#/Au7+)/L[ m}_"n *Aݛ4o(@fpGW]ڤ1 \ MrMUl4DEtjXxxd9=L$)Î|hYy)QScZe1Э Ytgѵ- 8:F{/=-Oҵ>сs Na ŝux./Y;Qm!VR*x'nS<.U2ek ){18%w'i#EV/()A?T?EECTre"sӯ1=:dB: 8\!`@ĆTBJpc_ [ɤq*ty2Yse XxnIB u'#7Q嚄aS "S~"3+@tDZt5<"蕌Ď1cXnzrϲsk#bprF]惸`8# ) s@=vU 'L>x<%SԻ&WC3g:}"D)!(hvwf_ongAæ?{F)p^9$$BRCod_].ӯ>Z:ٷS"lw\@J7Ϝ̔kwkH {-]̭j^%v%-ӛ>| 'L0 f&8\V.v JφƊL TB9ػalke?}\D+QXW GCO_7؞{{Ϳc}dtRם }DXH 3njU69@ $|NC#[41xh=|L!<­vzg[DgRv1|/"[G_z2R4,5~ùǜ3#Tr _iq;@O[<5>])/5<~F> |ێwڡM8sa%GͰ;= V=Mh5s! W 7ޒrm007`SC | Xz (ι1Jd;*ky/8dkCs-6ߓmDžt&@..EVrلBt~@=ۧ(XVGȌDZ+r,f,n`u-h| .!v{klm߅ܥ!V Eg #DQ^ UBҩCR'ijuJ92dewX)kY9*B'ɫ-.VȭhƇdC~Њf=v$94gtGTʹҋRrǃ9$ ,ZY_ᘶ)c t3!62ʎ ] #k<Π0|Xsf¹ ~ 2++3q F|@LٖA+i0ͧM7E@r[)h+&)V;Әe,stA%+;4B -p ruV]bg'&u{"9ZD|ζaI_աfNfs4)C}y#V|r0nTP"4s\pU&-ƌ #l0/8iU UcgV|Vu ^$Yh}um@QFwNϊrHֿ,Cǐ:17Yck9\n3X3w&{ʉ>LX(oɦUXUoiՆŲ3 0lC'a5K}Z_%ԴceJj: ,UeǺf7Wr EV48MF2^6 l?%P'jMStSׇ*?BF@|)1h/VF}.@*4нwпC d@%h>_wg]A!>ِUQnԏjDxX%dBX5R;=1^c {}!{g7vU8Nowle@]d<ʃ[}ޣ="`T](E&%t~úytz7fuU< ?膊aNT**_qpՠF$\mS`42PӼwjYϝ+zѣ^v WiH㉈1PU i/56;(Cׁ^^\2bǞ)u.4{Cl 0Jr c^$OSp, t:@:/ l-(N.$ziq)ù tǬymYE_j1҈4|YNM2(&[^nq7S ;V(fͼU247Q|jBS}Io<χ7ڳMbZ4*S ^U;çО|_X8(EU], Ͱ;uE& 3sw<ŭ):@INlD@dLCCPpur\D"md$6j>nVJ<]ȈDH!Ȣe]pUIk*̜W=3e~SlrG (Dnx^KpBg] Y輞dD gC A!&m>:5}\\PIz˭қW^>}EŽٺ TхNܾڭ2h%j\,LC_)n#f3ꂝe!7{vA"Ts跹V`i>(-I}T٤FZ9k4b)y?҄fTi˪@bW$ PRC`}^qc{$6L.pmֻUE^@^R,Qj'k1k=Uϯ RWTYRaϼ}^FCl^&GҌ6#, :q*i_! =zfA ( o?%SV?~ɦ`#)C+0&u(c g=j6|eGM vHXe PEҤK9F֠?/CqU .3bx:7BF:ܨ@bu"_!)-yjׯp6SyΣy&1p.bϙQ-SsG36pnOqZĭCD8e4%6_5F%[QNBmʥ{#Nܲ0D- !eID h|^ruiP>8)DY#$R@$#>7XZ([~g(#.vh-ϓ %ܻ\jX!ZVxV!|fqr-jxK@q0)SSTI¸XVa̼ohLsAXi_k>Bݒ咐voFv8@Q&e>w=5M͝g %QUeYȈ"Ѡ=R6bF4iWҒh)U_goеOn[By:tvI7DRqtVD 7X\1_ksT?'7FM“pX (|i|BsoT/-yҢ|t2rPEg8*#ނ_lkp<M6:#!g ,%lr{ͲJυJl`5=0LKV՛D'豓8jEض x1K],De<w)jn8C(zra#ŭ] Ƣ.ñ|~Vj{cm(/gJIжT{iqCVpv8305N4o %>Xi;/QLfea%V-HHs+޻PQq٦'hSS ]v\6X "+,b2f4 _'Ȕ?RDjw˓ý4$.w  ; }zOCU}"J|#{b;W$LHi*KW@kED]h"i 1ـն}΄p1gN{1N-I~g$W9KӈCLE^06B <$(C^\'(s!: 7hXy@q+gVkhRj${rbltB0宷۶dѢ6uĈ 1: [5Qǟm|{r-]6ڋL ;fot2'A.j-r{'i 24_ǐ]'|Owz &'v,̘&**"<=lY іWⰒ7ptE)ےWP ;n9fx 쌉K2 Mw_~S2zK9dbO7$ee}>C'[L{C|CMQGrKLBI=h“QZ)..&X՞7!r8 VU)Am c0r{8@uչke$9{qKx$K97)Fg5}1Jy=j{Jzt́2*y.oG{ɱ#ٱLaiZ"BB .JÇېS呮 z5?G4֏/WRX O̕E>fr9>{7(geRiX{ qSh.?;tEVnr3V\K/YeM_;Pi 6/{*;E]p3 W3(*3beSܛtJ*wU6V]G3BAPAe6Ar/kT:Jv. :B蛳^BTݙ_DJ I|U!!&*astK)T-(x4w5&` >TOHM + G˭m31Ʀcu DEC31 , \sBb,{Q @A}V]SiP"7Z!  dH@߱Băa?kCZ3Prҧ/ry`-ZLjvB3x[;,>_hm7C$ ?$2ikh̰5Cr&PE#25~Me>. $vD"{qQ\!j<م if;Jx Jt!:hR_SJ⨑gT`l Lʃe#Zȉ8?r J-lёs.=Mjw' 4!I$nlIZ@AD^5J3ˆ}[#Zrgl#ݰzVy 6 5QP]TRxcL *Xzxɜ[r|jnG< G{rw/VT@ǟTs4woܛ}z.E,_jzQÒ%w S9ȣcx] /C-%z;*+˲Ç sRa!Sg?~7mXnӧ$W\-l ~{[ڷ2_Uc3#DG%Q98w[&iX ,HvV?\KA9?XCB Bp+%>ʨ%cgEg0ȳ9wf[!6VƉTs}<( >Tcug~3n2^I_M,&q]}rz1[~# @ or#7]N {z*c)ku_qIBN0z94eΫ%mf͚Ƨ?@ѧً.Go9 NV4owv%(D,ՋU%B\¼!0U "CU)k/JT`T\b׆TcyGh=SRZJ I~D!4_''ܐ/6{I㩠m@2EDv 6T44#@A=ZNgIǙ:ע O>5*pEۿ&.klfq08 -SڊALu"=^2j636!0×JURw*8zߜϥg?e%a7T;eV%>zP =D:זNZ}q)"~ND\KNDa1V;.O!1.M:L@7$YNP \0(o"߫1H5b%)-Fq\5^OƖLbkRp&{10L`D\+lO=tl&I~Mi'*D&k֗IJb&轑HR$VZ$3)!zc~}ZX9SY@jMt(K.jר Wbv4&8ͼʜ:wO-rMid#Хt%J[:*B=haFmٕ) Pi9PRG^6du`^jێr0VO"2YOZlNw!-5CFJRd7LV:8 35=+4;_j:e-tYk7s_Gd!^b>"<"2M)—%3%-Ěɮ& B`MbR{iM&CPE4$&Α3Sp4h'OFP#JzHH:wm%J_XL0RX 8`b cV QpE vM`̰K)! 밄@Ȣ s,p |P1H5h!t +l( q X#DK$SXb\|3T ]< GHpB!"!ÉRi/N")itERgdE$&J% ?옇@N$!>: R$>ۦʵsl=?RjMþC@CɉP\M d+`~'WE?Vc)op?nPfli\XYFV`$lvC Ov{ \ i,Rx:_Ufr՘l^f eO]֜*5soOImFD+|U 1Lg|z;ݤ홏ِ~׼3 Lǜ$: v7q]-G݁;S2==ohN9&g;Q1  O| Xtbp;"L`*[H|3GG‘f !uH~KK~JsYyٷ>d4-"d(#Bj3Tk7:a(vYM%Y?7$o#꬜*?=X!!37RaIbRr[C7Wr z_OP "* *^؉v)mPȃ;B:Feagmyvk̠b-/'fhtS2! 'Hd  ($@B{Պk> E?_Gk8 /69z +Cٻa=ÇR@!@;ÈɏQx2kAA-z7WlҢL ?:$yPo9Ӳ6'/}7DݟN#E6SQЇta[Ryo~__"dh6>$%rY,)3'MQԨTQbXZUO$(/%B@"` AKI;WX摎A J/Δj]!Th?%؈}|U9Q?_&UAUǏWwD<ح2~67DL(&|x"h"R@MW`L&Pq=R$0B;$MF 5LUI !IeԶ@ (SCh 6Nv&2~+Dhx7:0}!ZAOm}~EgylyuzJq=rAD7RR$#T 6E>hM@ /8c|qS l@.Io9.ߓ&^|`+\!y|<YZu'r-Te-O僟6GcߧhO{ڠ],>,0NŖ4 dvQYzS)=3 RSa7d˜J^syjNimDPC\8# v־۵i睴IF42g-0KL.>-ÎVz&5|»"jK18bpBKn&څmބ{]UuރNsvZy ux,@/+ D&n˵}^ 8iDF ؀s&as'Dd,׌)9vm(<ÿ}v=c a6Frt"2Dh>@Mimxrg8 IT_LO!aQZPwSH Ji|؇!$~j7+ظ8xϔ&d 1pA|H3]>l=\DR( ws<*QZZvIݱʴãS{Pn]"Q A(hHMد'Nв} &u^_Y"m(RR4vD(|>ts $@+$$J!|Gٷf& "}-&ڨā!E\S/cqǴ:$l8ÎFqM\@-ɷrT\U9ˋK$c1}p[͑꟬|*dA,I4Û6At) @ )0N*?d|~+!~{#Hi ; Jbgy1Q9.?aU MG_'Vʧ˥A OO뢚$!q4L\@JO4WSTBIEdQ Xw|8 Ӂ)0pH牀DdDxE' A"0 1q;buTMsPd`&BnR mR0!Par ?$zv]of]~?:iڗ4D9z==B 2G/ųd g FQyX\,@|7eos{3{ǹ{mRl59$OhJK͢d Y Qv)bۑfE!RCĭz!J,jsQ;~DН} 4d\zc!dP`C7!w@/ǻ _Ph𜨔4]68;>/Goӷx5!VDҠ;֯Iu72@ևMݜ]})LXcRr O&UI =~Nx* L΃H f2 Qgj - jsV#N8V8n-Lr\qGGvѧ T맑[S8G0^y:&"OK*tBbp`y(ѢF7eW՜ވ!al y k`\'r)(jw5Z/dVZND4@KTfW{kdU7DTsYƒA!y4Ƃ*  Z?JO;?_D9Emp!MP L|yb+('Q!Q+b8E"Jep! !|řZDL~KCOf[Ψƕ:Nu$dDqw1qچ "nOchRM_GSjYT́ۚ\i/&$s.am+漪 ;&myyR2Mw>>$fRy#8i3~ZIǷrn'4={LXz3#ץ`{9"jB@D3.ʇ2 昜8[2Dw) wxzD$|Yfzu{б<A7*4wTɑYOZt:Uo)s֝O%6;1o4яK']嚱ثGd0B_9?aZgu|8N}sx;yОR{= _陌ɇba-]09'ϵTΪP><* $Qu]"=l}9 ѻ&l`f:r%0 ۓKsgt6$CT$]Qü_U$ڂN@sRD:N+Q#(OGuu.6IEH0Z H I qpa'*h6jV{YB@` غI[f.Cv@ "H (1pd -&O%Խ. 8_6'g0-q˰fdLma= !:Tfڥ-(=\f}w)9Pvj^tic6o`$МDbssͪ⿂@6;Τ78p5yeB?N ?@ߚ rvA gL¸y=ɱ2yLΗH>oiQ < !apvK!i >n# /<8ձNBȑQ<ܠ.(W0ct\KLyB$9n'-bV`EJ#uecNZ !5H@!tAwwCsg6sauiCҌ (fހ}L1;]޶Щxž&*DM qX62ND`W$"A)EG'Xh =nӸhOalb:ѷUHKOfܮ4V'笍]0^;v%!) 1j3 @ D z-!*`&_ Obե8M7e|UO)f'\KBEiy|H9v:C39;wwŚS#Q1IqͶU:hFch%j݆Coct&'e2E6p"+D"d9 5ጏnJBEx&x6&oȓ]O(QtRɸC'ioꏌ ꜨdziHkz)@,`Ĩ8YI ll`hmmbVaPUTNH1҂oG^*e0I)Pyc=#MG=H0z 3ݞA8W h¼r f`rɣ3\[ԝ}{ P#!^7_d俩]'/{AÙM>0pIQJ"c&P@mFrn?IGmgaz)fmQ,\$Ax3\c40 Ocg"ɊDyw]wXδ|\ka|1wH4p#r?<$&@x$8: !Z8;4gHH۰3f4eg"-fȎasjke9OBn?;{8y=}3 '5DdC_vkHG6 uR˥}I^`L62D@9iP3}Y2somІp+J t>掯n5<10>T8:nun@7JAHV[ Dh 'JPE:Gxf/"XJJH!HPDVc7u:y#Hi!J `t+_V9K8KI[>.kI ZXqguNϘ(o8ߠUaj?)B[b '} X` 0$D3T8I:"\/o\Ow B ! Z[rzm»ٴD݄{)O(g?ܛ:7iƜ,QfrX-\bM`)Ku})%Qnh\X785u"QP=nS"6Ԩ`@2ֹN& } y8PB*S@J|uk[vB6bر r `N63Н>{^=0jo]aX:wYdy >cb!ԉ RLDSDF F:p>1?6b""qq kfIqS7VGz˼wåĈ@<|}]PKLhOJdSm[qXT otP`y`jJlpˣ}{G)fAf$>V2=M3fZj+!n4\biA@X@A!~~_s|]0t|Xx1+ 鉚3\vQi0 )b5JL C$ٺO\l U&^Еm}MiT+iG6*sڇהOO3^e¦| ,(&>>RԢf.) Et'bG{Ryxw}kS)E>ŝPΠ3FbL':c8p7ુKW_|+PGh`v5r.flz*F ăa ]dB'm3%3tQW psl $EA0ΆJ׉n7_y pQk#+AqOGgl2'(J B$!,vΙ3(Aet%<[I$Dq.H}?|W;ՊAP5]@) V"Mo\ 1yqx>ocaέ&]. k2%<OD;b`\3X9=Q@ :*^{ף(5銏4N Jj@bb%4MP H\*$"]4bux&1J먃m ӫ4\H :~kO2sĊ&qJܭ%״pWgwoy׏ {DSÄ `a!*!ٳۏIiL[/6VS8T7xN9/mRRgڞM@I@[VP+ q+m<\/IGTb8FH2&p%:c>F9c;gKDytN]n7B\+B,0"AN7^ bԍk_His~mZ~=y]mѥpРw n]ؖw1G\QF&׆EdR\4FY Rm6`$6)ŭj->ɦM1L/urf9J~Ķ"rz* W}߶̜D0b?,_MD Pr Qw$2@-ףyqP-u1rlQXkXlbv@ 42]]͏%X !]§Ah2oN:2ld 'OL_.O $$o 8;6w|?Wm+NYc_Au雛뿍ϣj-@ SAy X'^ );ڧڨ/@n eg$t_SVc٘ Ğ)ngC^Zr͞;(r$0}t>C%/T:w=y! Bf]s5F6Ӳa,Jd:DV>GiL]7הr2{t|s3c OTL`L%~@ ?b!U^<`c$?ÚLsı4:0H D[6f@f\D\Q%/B%Tさ3U!B$L&R j Plع(v@ZzNtߵ {x`؞7~c[\=(-UCU&~QLz" ^dJ}JF q"x˞3PՆ*z`U< !aWwV@ݠaD``8BXd!BU6QpQI+t_BƩ*RՒ8qVoQ j뒟!.[&o7 O$DQbcg,#JPL:&); qbZ@`:5fu֦]_2̾})JJNz:p;)rG9j~9KDPFnR"+6$ҙZ "Nu:xL(E!X:܍4xMX3x PbV' Hd9DH,'KNi#z4$*O9׹OigG$M.w"6ة)Ӈ//1zvQ̈4"¡  k \Pd"x ߬ep{L]yVtE;~m|st7 ^q /?FO4o&a:Y`$P#̷dCY j4^z%() up2&Tj(@a8K2µh|! I( y)nK u# 5 5 6Sv}@40dSu4tVo{oB|(^,ypEm[EO@41j֘b9y }n f]4KC:˰+x" \TJ\"ND )! B1'.H՜sjPHANWNe14@9Y C! 7|4H"2-y z{_J'wuӍtSјulv·a=ILkLXO$8v|4:.ΊEJMGQ tMS}աMd. :Y"A8I'0JLde@V<ѷhO{h>xZ(0a {LJ16*;%#!@u MJa B}T62ӏNJ$E:1V OޠG,igۣkdXCRd4a ec %5uD,…VG;K -zUP" U % v{b'ZrM"%Ai(hc18B1]C;+ի|5ONl˦<9NmC=+9*@>^]@yGv^3C `訃ũ" B)!NOt" 0aq՟auPLy\P ʳk1T]jU{P3A{{|$ÄY 1 DJ|/ V0N]hMa`bdjSKŘSK̀>Hw H sӹbc(Xט {K[F_;\{q`!8\hղ ]hGj Ρ{>ʅTՁپƌH2ٗn4 7[RקЪl81B}UcWh 1={eNE9pv -D!A"Gh upT @coj;[˚ "Bq0j9fSB,Ԝ8 gPL98i'L䷧tbt?Gʉg{'>_'-uNQ'ߊBs>m;_W&Q܇ [nS۶3G_C[iG*T:Lnkr% .P3%{T0¯ Sn &'@ sNJf@@^:&i\\Qǜ2U ≒S!ުƨkn*ɚc tpj*9R3}BUDsUq %S2*1Ib>"Z ZS9_'j"~z5{ `b|DN" w,g=:Kuِ~bh)m6)`bjqɢQgҚKDDe©E%(ﰤu sIs*V`L L $$ߥ ZMǾPd'&<#" ⌌kNU-hlU|warVl[5c}Naw?WI-_=7$W4~>`yDq 1Y])C&yQ 4W4趑:DǚxEI'oux r#'Veh Bw D{Gs9zwVW2n~~R~ jENEҴcU||QGH֭枭ZakpHqK= Θ%ܔ]}m=?Olj?GG谚~{)|DXҩE=r]?KБ@p@z5;HHJu`?5W!!"4W'9'MN'2z{lȡ[mֵ@[x09;a0Md\k k"yO ޛ_&)"^s4D@ xIbNaBYٮ_OND'3Ӥ/3t$HiP.%zIMRD$B}!t{;~\ҊZ4db1H'|TLӗ6^w3?[z{P7m`JPJ"di/n#&8R@B;Am.wN{d-wyV n|IDQJ@;b\ײ&Z^qlz^)⭢z88>9A 7uh_S=B@*rb!WA(НT\06 `$f'FIwJؘ?v4% 3ciX `DG0"$W~@[h L1z'h=FbimmdU6pkRAuqx Y@F !qLn헒 xxS.uTnZģ^ID@U@B0":LEX̦ *ljǝm磎:@ DVƃ-ƩZrhK:[;cSGfepА4)E2jbNF'8^ A!4zn3lA.yL'gZNV*n:s,+|Z12rPfv}&[LS »Kr4A|Pq/\el+m@sk~7xk ־bPOm?YQG?GGk۬5v{duhJ#S'UT0І951 h> Q(%cD]7a2>T PԷNN\Jȼ^9^!W+יbXT@'Ss]! 0%'D4J,N3>$uw,_}g0خpd*&)1q+$( !6;*tvhWHUv&|O-U B݀w9-JgdKY!Gi[_\L-15bh(hR}PqD2 D#ABRD$/M<ײۑW"( Xko r=P<"!sF'*}6v& %"b﷍u='g˹[<LJaߤX,R)A)= 1.(X_Շq>C}u'>(/1%PĔPTCLS ZJD pi D@L*qfGGbWp!yG<ȫt1\o/ 0Ը9w-miѝ QMI4] "yǞ =͚y*`&?imε#bR1W]XC5S!Ѥt1 WqΝ>Y>|Xj*k>A_eohthTj:"wH]L sdJwr{0 "qZ3(ZU l '=o}4JM`!Ŋ[EOH@  b"ПbP%%w䘥KEЃ .ioV~ϦarU' ]0hAυDNn>eQŸKWrA6:stӷ3 p#.3 =1nxFku7cts<^qN)Iz<=@gm+Fcc߫X+䞄JM x<5bV%fZ AH ;H@ߞxyJ½ǧ#J $=c>o{5Qʹ=njLM/|'gNۄbivdڟ9s#st^tqDEOt~l׀ *i 3`e$@aE$j5 6?0NfQ8OD4cf#9SET|+zM2<@,DA(@ezhŲ#o/?;ӻ.'>r׬% @T<z@|M\( o|\r(" 6۹,W  >^FF] AId`E-3< '1]/kwH32nas{?^< #k/Uea_d,Ed%H $CMG M*&y̲gOWspFmޭ!861[Dbx"AEնu+zV{Cj k`ҽṵJZn/Lb@ 5v?[zM1ᴋNFf[hgM'L4˔ݔOP74P (7 {b8u[4Тg+C kiJ4qte|lҬڕܩ)G'=if dīXO4He 3u~KzsLb M\˺u m jQE\# TWiszkջc8}QR  c1f}7ёf*uz@qq 0ilxJi[ nrGo8nҿiˡٰ8CcT@!!WT3>T)Pfoi_h>Dȭwdtsh%dEc<7j>l2*6ٕH.AtWTEPǏa&s% <}ۻi0p/+Ԑ ;H  $-YTWdŸ=ಂO0O s;]G6b/{Is2~s]+.MĉD׳\6%3fo`+1uV'޶wrXz0ԳIWZ0%E%*WE_ Ry+/.Lp`݇u8-$36yk#BLP0ƌdod6{lBwkQL kPAa$3y+|d=SlZX QbNc9h !mHYlQf?z< &}?0{~Ekzu+z`8x yv+Q֟] o[DFWCК#0 DEܟ9u g_ 6 y]xH?/0QbgrDt,LTl=?*Psȍ vFMw>+FzN92 hpFp߸/%uS.ާ+CMM-xiXKiSP|&d_2Y0O_[7'AO%JJJJJNnߏZIQ { J%'Է?6+)I?`{o'wN;/k 8]+xT"Iy'EuֹRゎb1Do3/=ƀPgZ"{Gw}P~<$c[]D窽-P0ƿ890!CKvAT5zo{Gs⯗çsB2,;AR!v8yK\nTø?:B%#@Ci T/iX@eQLVRA<0"uw&Zt!x!&)  '?̑/ D&UiMrLn=rO;gs7yhr寽^d2ϝ8DNj0Q$V@IV>A.t#IHt+<+;V'n>dT8zSћ8uWq?o 8.B!Ow~k)p(!'&|mVAwDUN75vPt+=[)1%q:8@#$ۗ9lCA/j &嶻;ۤFy.ʚƬ7ơޒibq \^]ibwHԽ>4.Nնۖ);O KL37͏y%Q䋰18l*Z.qDP.מT@44 O>\wY8򙂱k5:R3ƜQbFpS @ ´)X68Rd8Yg8Ybg 4ZKrݹ^뙱jO*nֲ[[0\!LEoNo101ȟuvX|Ii5s%>bř Emzφmԋ+L.ՅtʦHZM.-sƤUKz>>ηtLM۶PZvčYj u5H3 GC1*6dkD Ps^lP15 چYdP' *l VBq KTag8Uhn1VkԉDt@M% N3SP D{מgܱpJ"Ʉ\Ϥx2w4LX1 ]rZv.^ ,ե;6sӤlILYτ"[te ZiW )_=̿<+ Χ "$ f3T|܅k!њU VFB)$:&$US\um%2ePb+:ɕśǍQR=]H8ovJžܞۆȡ}ˤ@5! NKГۉ,Dctrf0'*RXbT_I[cbNЫNؽf2t1Lα ~r$Gx_%PwQ v?1_Y˩dB3XHJ.G%Kd˅-B8nFft㬭ȏQ[fW (ь=Yެw{c|_q>qp~g%i,ТKىs CpI` H rvC8/kk$ȭU0OI?n&򸫅^]WU ظ5Яq$̣xSi # CtR&.Kw&Cً'l4B_,@lA.ǚ9Np"],%?ߝ. s@q cx_`M`WN=r ! .gt+y<}G5i91⹳eK3qئ,T^RuDeH)(omǃ9^ &ep'gA<'qK~UU_쭎DC"'l/b` I~+^ UhϘ<` p׎z`#7b`N B$H&ckݻ3glE2X\Z B -D#N꠮܅F'HCk|m9;u:>ork@ mfEN{;)tЉz*@=44uzuwOM1][tޗRxymި?VNB@ҵn>+M `yx1[Oˎ׾T&*ᬢhB;"8*t%E1@C~hb5 ,! +`}b^;2 C.XFvO1dUpQwugGĿO~@ ƒT+<)*ɆWl-r##oYx+6Z#F\px Ld|.\Ґs`ܩ2X땡̝qb P J.X*W:kiȆѡjlw>(lmp/.)hPzWyH6HꎜkyTBTہ1<C5YP`%m,z?[,o oECaslHuEa$'އB2C0}fgf$# *?b=11$I!$d̘+ٯqb0"""*""d1UY, &¬)=ґC?ztIJ/1_)$נB/Izry.  "' 5E!]I;$ V` 4Uĕ쐜ڀ0N4NH^KOVV&.`z~ϡ=^RL2.[KO^1$6=! :{$j;<8'<;gU3"„%la΄*e${pQ/,y0Uta9%ٯr?Ky d!d^ x1 y"A.V`1)R$UsR+r&$H MtJMIr\cR(]{Sc|G=]x5wL0)8G/15*V8D^3ϸw?S2lWW ?h<#utz;^]"|~-DMpMwSsɀ^Ƴت3^q;U(YG7xO.?nX'ZE-MfV$OӀe.)ABqD NvF ՚8OX#@l;7L$$"A"A2"C1@3۾לz;(0F'O@0izOF}8B4ywARdDhHΝ׷&1wDr@j4j# )6@vD$@D@){g7K@`YS~}G2y4r`;aޔ`C^g!*P=&ku?wCgӿu!sM Hk/jzmbϾ4/ aҾ4i|#8D'\O}= ;7:5NkgQ):\uhQ&d{|{"Ꞝ_ɽ>Œ9G)Zܣ=^T"! Y׽}{zFpcOyc&!89t ,CX}?o!.O D~@A3~- ZA{痷/uR"$H,lFjNO#B gmNbKgw랕Ŝ*7qL]qצt$\o$c^QK)? YjyoNcFf-i=A5 )kXT?,6h!fiw"b D# vp9N rp**({v'":Qv0!) @ )]_|A8&wf@!o AJZBtXy5K.7끐j"wdsVw*NnikoЫ$s'w'EZd{I_>/ bMFVƼ7Ët0q -mۯK/?0JB0K!$D q@7Rg X 25;ۣBjFeq8NvMDDVQNo|!iDM) m+PԸ4HΥ,יSe"zRH$zCYi{~{*@BRkC$8\KId+ɽjz/_ȅ ݺWL'IMh݄PL}-CvF?#JOmyPq8D (\t9bVTU!iF$.)v2o){Qӫ.xwec#tPSAz<@R^c08DZ!7 i U O6NV}ud䑹/ xLI$I7g@DPRjoC1n7Sl ÅwqC" (^(:S,YV @ C9nl5y9jz` \TautЦ2E56UZ$iՋ6"вp)0ч=B4 kBUƖ2ٻ=kBӲa}+[*7*PhR=NR8]TxOfQ9RF"طJGf7`G@ DF D+3]Pҙ]ݎdF&jݜ! ܡv|"0KX 5nخ lQ҆2+uEϕSI+VrVQpq̛ pނ2y>/h$֖Fl,++! d*aZzܜJ{; [ը@P Ϧ\\'lJj1&vw{UZȊJ#IC\,5L,ֲ2YXb;`ϰë8YU9H(||]'j̛3< f/p!ˆE15φ}sqya ,h*axEbJTt?o8=RwIK:^C7]X!dt,$*v6.E tkzUA  ;AQrE9w5m"쩖X :krFVԹq>8o{=uұi9RM{*b"ZG^у|>tQX/g,DjU?M8L-]s9LDk8^;""E ZNH4xF柗z 9+rS76!`kE20W;VIL)DxҺgTo!9 6a\ 6'a_= PQW]IkcH13:dI1Rw"}|Eb~ XV3սw.JPӿ h]LShtV V{od\3NP;uE]F>& D IE^Ma<ۢ|th/Zh<Fa ptqyښ%Ph_-Zk<ڣUAIl&#Ը6iA\pt 8.*2}BwlҷVCcBpƌov=G6 k 7 0sW’gѴ;t,WD=RI妉!\}V+2}}VfXpw$˖!\9'j$\]̇dC.%4T`s#rX#b6V 7|x)q)4-F8LiKVH|`<ݓGg!t(QJ( jQYgX&Ouz Lյ~Yz?{ς@ `bCyJ-fwf)[ai8YXBSE +GyKN$̩7'2.Kֲ(+[R@5d S1#*6^SH\T4L!@ \v{vh(ER:9oѶuՏsZЕj 1۟Z\zanL8ԓiE+^EBH\y IͩC<]")k7qQl3yZFҤ3K5^'HmI'ܕej/N()@~QrQGC}ȝZFžLw5GMMJWCglL\L,>ݟaOXR%E | 24G@aAnJ]FȰVy@.n89+~u Pڪy+Kc,5RFsZQ}e7'0R(InQ*n"ʝnpk \NAƒKܯ A] Db'&]vNnd=3i4ق7HSU]VY 0f3HJnIKWL^S+ZE*AUȃudCU閔0 %L^v6*L?*[Ӫsu(yp^XOV1$ H>>! uErfᕩuAF7jCwl=gEޔDy8Ͻ*g3ݭsW3mr?ٯnWb51Rz<:2ٳqяRyywR= 6P蟶D}l,Jmێ->FDxsӳtBy9>^ݪpQ,.3_QAf?:;VvB9E& w ѸVw܋׸zgg))!)k/ DV~SOfTJ=8oPXw|Efb{<ݙj]|Tݥ8j %H'~y/چ Rƕ$YX8-,?0'q9o&qnbm6sMaK& c*߲D.>vIMíӟ#5K8#/lw?PBfede(\ / *?\lxX! n\לiJ{t6m ,$ZRFC} 0C/oMv(LH )`N5Vp B_6YxԸi#xq@2M뚳QCQjHOA!:Le馾.SB" [dzdָd  .|=ƶ~9iѭ`RQ}Bz0ċuyr'sI&S¤w-Co0:eOL#Nn3W~YjV-~qww-cIǎbU_^"Xg``W2y&> I7+Q2$pñ)H@ \,XmBl6 dB,8ɿ448 ΨV&I&Rd@njw_6 ٓWP88>CqAI?F}7:F`MBm%B_ncq˟ke:Q\P,6`-k9p栞CX8.4d (($@*~Zv}霁H"Dǽ M_{yG ]h+{'Kᑱ o?y;.z>~AcUQTQQ"MXRy=!\<.kcl`8zF TrT\ {΋T$ׁIHG(+ўaaCUNA@ Y̟Uf[IoBJϬǜ"_,vQG+W=I&6);*CzzA>h>V-V~w|=fGc*hAQH0m_B*5"cN>[ۿ{~j.=%M{m骟-Td'~\e|T旹mLn W?k*Yϕ)]N2<IMeyiNTgb<ۇ [ ԩpmbҢ!+!^0Nr\g*C_8# ׾7 h wH*U.q.*zRT~c?=g_~5ۏbWŔzﶻ#gk5_2qdD>o-cg\^_kowt#>?US2"W@`dϑ%zi^`..y݂XfWٽfoXd@Iĵmò"Dpy :_KC J4<&'HL~O%3bЙӄؘj<4۽UR; R:+{>B0L䉹9Y;3c;-4ngweQ8Re% Dz~lM q&e/JK bBq"/7EiN,rLY,Ly[in4#x>_0 \\\\` Sr X6MP @!uu9*2J`Bcɔ7lj%<;h n|w)\߾ d&Ypw*7Sy:Խá6i/ N˒/1FF~XqH!Mh"b%8]NCQIQ bDH.;yFĄ$\gB P{.It!pBt@LE Z D4Z.=׊$%)B%DtNϒmB@Ibk'#klp+a04)&nLʗ$jC7Ung劚`:0c'ސȟI(:uS ON Gx!b|o{]Ǧ&o'pKsS].K$$LQEL3ܶQ8V !hJW!ЗJKC8(O.r@ϑMgR!H^< ] :ɶh$² "!&ls2 Xvno+LnI "~dE w:;6$d(fFI`0d;wP608ޜ?7q蘗=ڣg[N=9Θ̀ PG{kMT7^Cƒ e ^>`c|0PBGL:͓B3Y$2 πU:~zžCՔT쀑x]m{a;AKu?c?/ɴdhfVq ˗ax652A#GfLD"lzK(i8|ġIIzWT/җ>q'^I$I$DH)[ ߮$JFqf RJT%17Šq=f~gEd'dW U.yN;Ȉ+ې 8P"2$/3?Եfgy@axؠ@@ ,P+ RDHw0<uy *H!%Aj#@ t䰆d<&*.$A$d(+Ajo9'>h'yUQUv}}"jBB@u,$҈V5\Gqk?N %$8a$H7(!gYA(nHDz;uЊC0+(t"DR+aBYala ow88c3" z<{r3 3  " `4 !@dM'bn$ $ V00,:4HXuCHo03,\DQEDo|Ō B K޸l5҂iQСv=`0BH "Jh(E)@iIr(" ;{ٜ*w '̆Ū8& "$±@DݘK^EE&_:T zEQDAFAjTа OlK(2VlGYbx &T$bP;a((!05>@!='m:Hx&ơ)AEdhCLbcg`XJ.ک%9{{Xnx<LyJiyP&fI"d&H ֱmBR-R6D<śo8@Ae (4wb6Q817`oV"!W xM MW} [6%qz'34Pi 7$`v`ʱ"X4hW8 S:g!th@Z:A T\`qLNڮ t$0u%$Td8z6^y^)DrhPHF(*lWQkHr-+0Zn}!g:9VS". [yz(h$d=Č@2y(li|y3+r-#TAyx;G$+`cGYD@t%rK(h,( ~DΦP SOk<$c:0]B0*y w $ñB]PPPPD&2Ah)c" ݶݏC+!RP3MpNtP7 dF (* JDD)DX$bcI65H(_r%oA*4@H&kEAF{FEJ76Bl0uZ 6ty(%6̢c.eIҹ4A!) agG_v AƝX&8?%S@ xD=(< B4a5@ºə56`L#w@(M`&9;&K4|bFR]- >#kcx&J (3SxSa!J 3x@㽜L~7PAԎ08|a0:*z UjeIϹc3>;%:clYS ֝-6x룃q:\&1?v7 ! EU8e L Wǒ^Rd;MOD?pf x)0`VH * gk`P\-UP`B?§K{tg؛`ErQ'' JRLiqVڙ1uڈ@Ĉ{0ۀvt0$~yV؍\/VVSmwcɟ߉o@R)'<[eq"0LUp@k@(dS >9)\H+i|F@6¡)[ʽ?~qrv~TKUNx<'n_IB.4'<ƿOǫ''I2v!/4= wps ) ^cEW5G\ؙY}:#AP;NET<3ct֙;כg"xDv|PNEAQQDW3 ó7f4vw!_xܝ0Z>ةȖ&ۨM~~6VBgJ& *"thjSc 箱ɧGh4ٍZ1'vLMF*bvRJѡlcז=QkBO}dm{#]@N~\@_~BpaDž >!rJ(/錭E1kTk{"^Td N6wtr](EJsVj<dJFs1clY :MNyvb{GZigsA[AV7k _??*Q^;r?&-nӯwJ@}y yL叉(տ;G`̠@q P~4-N/2wd0 2R׬;}~ż)%%$H,霅#: e[[ޠm5H"r'? 4PRPYd@QTRPQQFZK_=Zd?ЈPzOp{?a?:qe<)/k {JSK;'ONABv`_ Ȑ%rM4y==N<{EEI!/܅0@Y6_D6o$y+Ig ^.{-0lҫ qdAeCƉb=SOOdЇ 8bvP.jBWy=}` *  H}؏2~m߫wlFW`bHpy(bn@sx-SD`.O++>V?뀀n_kzmo# l`'Q' ١.oacAC`XOV,' %~D6KDV'} BۥIJLd!t ?k V"iY)rI!j N:PJ?x&!*#խ#T P_>᳴poHH7Po#E}ipNJ7Wqp"Bɣ&luA4&#iRR+CV!#(*De^B(.!3(1 A\!XhD>іRJH2zWdSUĀLLLI$)!;& $+8{?ûtbI$I+JJJJJz V6z/!Ɗw//& QZQBRA@"!94{+{e&TOE}DwwpEc{rAX@49JtHp|oIӘZ%T[`4fc8 5 :VWËՂd RY"iӞ/;$#Ѻ6~^'&Pwԁ;JRvy؁1n}J&!Z0[UIBe݊DU:yӞ꧜tx|.."EV>P=Q!UHX@油ϸ2"mJ :: CcS<ӶL!? H(Z6OL^F~- tdži2@>bI[_rtOc dV|=_AbB㎬ #>dQ!>6U/@"zReT)$ `(q_/tsÛѭ*wA+⬬$# "*d"fff&p}}ȯ+4 30,$ 2S"1j̯boV$uÄ 났B" (t D#7o7ćMt){)9='Kh`y% $;2j6͊(dWIN5;()h GXNbp%2HzuUG9ߙ$rDO׍ o7{{gxڍccCXC,~oщE6gAp9Q19}A3Po3jZ7徂{S?En!ʌ"Qc%˔{VvqsGIϏg6OK̸ij]R-hLYb줸|^Hsε`ds_?YGU_PM7+Ge0X1TϊA+4Z=Y:5f U ٓP5: &Պf"xPHƆS6Tf|jZ9-Y'c,d]6i$H_Dc횂)lRD%RF-g ePDxRUn_nFY,roXj~Fx;7E~莯{Śoz(69 u"ȰP3\b.d0] !A0Ғ+#H,NY;g4sL˶!eC ]/GܭWϻH"DT?,.C_+Y`4{`!:YP"~B- H%DqN)@9FaM@DF矦L_wj2"Wu6 ;\~Υ"-*D !iz ĺMO|]zA~=2LS'JKYOyدOt1}>Y|<zB!$$!Ӧs4w}?V*&sz>οoΟğ(}*@)R2 0P*˸:)qH&$^I-S HD9o q< OIHUOf*}yW[d!#Gª@k$ ;}:AO#TE;n`^pe|AÇJVy0 >.YL!ӘI.yJe*{y #$Ј{d2G0e[^{Z}h&Ja Am+d1D7PP*K"QXI‹S- /j:mt"DjJLD)(JH4,ѧ.s" _KK'sS[#SSlVCc!1a 6h=7Ars!Q|qƅ7 = @ݨƹs/gCL `I:Mȳљg,JȀYn#IIe@"\;۰X}(=s'K 'T2< @/")c ?4uk(qZq|p)ɸ&2U Tconr$D\Jp_U4"4(Az @o΍ D5T7Vy0LEfE)O|X6-D>CbêHopn;~u؄kl̈L_); Ҡ%Q{ r/_hh&yK4QHvs^}J '16? >t.Kac{}K=jT$!_۠0jmav2ߙioCQYˡWy /P$ٛ^ n$ݘ<:\`1b%D= q v|.+ɚuM`‰a\qըZT)E%+1 Ew˿WV8ˊ̇'-qdD1J` 3">Ɵ{gFÌ}@$@$(Ο/`v*^XTp@|w!04N>8nV( Y.n=W:|.|-mm#ݑت2qa ҩ mRu!!S@bܝ/s}n ^\Wyj46\לVZl;G1n!cy#caGauD};Z2b 'z˓pyY(P߼{4 jj@L9AϾt9(bt| !N<d3T^n/JYQTRێPq.򿛭'y*4Gܳ{yxN>*tH6 }?Gwx:SĂk%(H1  z"$)l̹0h\0wp3T1honr 2Ko?W:8>ܺ.:ek`_>:5̨?&g g]A䱀ཱིww00RJ 0;vGdB b8D)6FXFd6%:58yKsN>L7mrt^6Kt Sr$7Jw62$b ^łr[}}ӋՖ)2èԷfת7HL({R9C%4ĵASZ |,@_T 6T!zOB6XϿzm-mOr m^< @p-sJo$ zUcA0Lھ ːg7M߃8&qla=\ZݮGś$,"iOπ:*Qr%_]r^pE@`QQXcL_(25,,ڕ*CP KCfsfXE1ҩK\i,bBHDBe?[~zip:wb<l:7Cs*5 4O8LN`bu554 R(\dEabR%A *LG}0(x[D6 ~g@ wpBLPն?? HL|_21A[}|$v̨q)qclD'cl&Ȁri"Qp K՛J{%.M )Hb7 b`cYq(崆)\7wGNx%thݸcB8/'j?Bdb}͛` 7{N;D0WRV)MWeċ#z T(nP̩f_OV,f HB y3ƣ@tлT/o j94Ѕ Yv8Y Dk[R39X )LxLj_ԇJB;lTGP-@۩@G00ƒK!ܨE N'0.MGڝ1CXGxnDa4.f>+MQ9[ Fퟃ/ϫmPmrL-iQ(^U`JS$¤Ujل$yN8J5=Žj X!,J&ʈ )q ֡GDC=涠(V~a0   s)y~O7|`DHDS~?rrGx~k@iO^OD˶B:+_eq3>L mu!rrOuբĺ0M}BfV^]("LΦKz'З|,# MF+4-u_@*ş 㺻j^PQBن!CD ЄS%u~]x=8Snpo#pROD% E2plDlb\B^bɡDi 1!G/&T!aKN tD}ZjDvB#%P,B{ًzU+G=I,t-c=ֵǭlʫElCQVa[I4KͳB=tojwiKmybe8ƏQfܗe[p+oY5b~"\,S&2z^ɧW/oV.{# h" =!C MƂi/({{;dvZ8 RE \,*Ib #G3,(D:cHO`Dz<ިYTn;S{0( _.E ? lPT&Ȃ JE+$ {3u S{F IO}Q'z )\L2WޒfR"ddQ0g<~4& Od'h7qƥ^6L9hN0;$A5b梢X6U@Xi Jg0d Aj+ !`#րEK58胔L?01`a,<jTdӎ}@}۲~_ہBH,7ɹfXęO$&a&$JMd yNHI%p;I+o`i!F@C7 u0$ 6U w*ZKsT;\W](XoQ6qܸ _;xqO`_oxT8=ww{8ÿO hx"p_%5|%Vx&5wr 2P" :a183|a,R6%1T]L|g]oD&Nw12A܌YHS9 +q:Q!NgOb(B#~D4dj/Mdy[sgǛa5B}kɳaA$H   9?/B&"R<뿲l}n3n/3g4Ft"tuܐ/{<%|pFsf<"؃Q <%)}ڑ{m/( lI<F( X>)MMPGIbxk$I#$dӭHBIƠ.:%$#*"))z9\6n.'ì^'IRG:zn+z͖kAw0ADxv]bpas,"Xka(֝:lr@.U!C= #]GB&9:E<و3W<~IHK[uXZDhyG~3/vi @Y"T%%%Oi0M?HO`_"dW9ǍSN/M H-J'8Dq؏$AbwC<S+MYE+.-#~%\U?`|x}B랬>;[bHK\MQf7VxWLC1JG]5k䍦 XjZwCqok8Dֱ'UL7lO{3+&mVmhs=<YL~$6| g=s؇6*$JPbߒ#W cjx{&A`{4kTnj PNcGdK 6-&))JHX`nnTdU8V&x mPĭ#qY;"apRnd7SF7iB0D`OChxP͹ӕD1DvI`PŇ,@ i43˴b aaoliugo.o_ysEޮHl5=ZNg0%ny'͏M:zςu9M.^( KH ҋTPRD)T7Tl}we9'QVɨQ;tAmA]ۥж[G8F,=Ěü$Svj`zJ&JsTz!t!7:U ye.FD6. ImiIb#cjC##qoˮPTPB)py gwTgA)KCñ!]le4bƯ9/3sڜb]a:zd0f +:qK뢂I^"fjh\^(Cku K;!n)$4U x׆Jk7yqwmuGf-\0伩' c*]B]h2>w}7U ~Lx{@A|G.Ax RxzI= fW(gP6=B݊5Xi6e9dݢюgZVZ9mݦDaRSbhQ#5Cu^/kdmNxa^D8@&mߵkWR&Ӎwx҄^NQ9 SBAS@T ]o2joՇME(^U⣞ZPbǟn$Dg\]`ĝ.g`a>{tі_:ՉߝVz6y9|Nuˣ|Y'1) 6zfkHH3& # Z5ǑzMXsހMYǕb6Ĵpɲ v[g/=RBQ0g6i5!qh:'1a.uo1{)BAZ{#~9:yعq^bҊkUK0Jl:jpmˊ,vwvw-pscyWE97sTo;uϪOrG;I/A{%m`N6j|Dkko$[ZavmP 3a&5'(΋[wj7yuK[pnLyqۻU s)g'C;jr} a#.y䳶7JH%ۘ'Z|#UYaQ9Wp*>O5 AR,@P&m78ָ};iF"a rn8F#kFi:/xZܙNA0^6QQB9((*)DD9 `0M&f7{';c1l瞱p" s,m9-;6;jI`Dz؎LޤMI֠YՀrC>P幠! ؕrB'"@@A+.z!7O4;F(D p NY!%sJl+:NnH;Hmޮ90= inn4faC` b3c7]v:O3<Yivɬjgk`j\17η[ߺ+9Žc7{H- Y/vʫƘxAUmӍtd4&u5PBÊRK\W0QDD#jh ='UTw~i^zԨ6`S@wDЄYR%써{ĵtCԧSOTrM:~Suޯ^!l0|IUV621;Edm1Gf'"j % y:;>p]~jOsC͙;Ac\bEkRw1t`?e\/]4I.8PA( q vxy"*B,V]ڤD[, 4@!T%J "g&QM mHUh9 E$"DR(&~ZLp%%(jֺJ QU<].̴L w~4Pj?;tP "YXޡs6^^S, kͶ8r4bNl.x5/ͧѮ{KG LS }+jڂ⌺ߘ-c!Yq3j_ Tŧ$ ,J@9 4l<'J˙JF;,m+p^&h EŤ`Ӎn_UriS 0S颹)F(YPPD"l䶨sƉyKm!A6DwV%>abGOn_O|j*9ք7F&el!/:„. ȡ lV{cFsv]0;3{HRHp"\4\XJT$d'h1L ƅpJ9`Q d)x&NJg{mQ/jQiX -HAб6L#F!0Ѷ}OQ-G7=lI%!4L rHS%>Y:@>o%R)f (T׈xG ".rx t`<nl[Q=˛ڧsy! ӊEzM =ɩ4Dp$:} C @,E4 ,r.'/6[B 3Hr.}vu)6t#$wah9`~HH I-W}+{L0@lN`b6|  I$qF`h;E#BrIeWg@? yHR.Bѧ pOFAA#D DKĢ b? g˙ІKCT&~~9 i@ pS\Ъd PtɢqDw0ǡTU ߭,ĒŰ0Aam #iHQcatFD~w]!.ܲwn1߾ѵлMRtֵ@bya$˴3H`F`jÑݾsĈ4ц*Ԃٴ>2^Lj>Ib(m~1@c)y(8wB$*\7SH(|}8TIw}뱈DxMæ"OsW .x91!!"`FB=t@e]ȃÖkB18}PLyp 㞊OXM7Yqz gԭ-j?]8A)CJ~@̈o'TĠL uA>y[[ꕕG~Ceb"'{ÜCSWl>qˆ4di3kP}2=}_$)-TWBQOy/ =GKàz]4?sH؃r@i6ց;UC$@ F0me9B!V{Y7zE:\z!IOa1CVeˢ蝄$Rb 1{ *_,vwCpk=@۽ш4apgNbw$1s [@||{t'JI+1! ﯋1ͺwN\87noMa0 S>>gXeސ&*!&3$VJ,Қ+Fׯy9$HI[P0^r@r[h 9%<R—"%N}_ >5}p$$ GYM-%TQ m eüP xȿ —B^W?{w[=.7(-Xįum2qH68si؅B]]! ~̪w}>C"ު>,9CcpnެR^EJ *UXV]&Q‹_NU_]g&  % ı5#'BsaV|vތ03wmjLCeĥθ,B X DIQzgvLi>qQu(C{b' cJDd9ґ4=ړܣx s뚻 3 ^RYdo: K# t%GUvEQ4H#M$K0 TE6d}E$0mU%k3xmH (I,-w sRтx Dbpg/(It77BiLAcBX J%T@lXZg,P#F/ 7 N Abl*!ROB!ɮ~p5L'ݐ@ @i`Ar6!qy4LuqQ% ɹ #ta\tpҢ6$urk\\]P$RA!"0|'͑bB9$'tV$'KxKl@bP|V@B@Kk5s|xh'$ 9a(bA%MH[Oݬ o3*1 AMNmtB4Ғ@Fr»DZ_eVx6xwd̘$=홞ˊ9Flی5;9*uȒkBiFiB u<4mxѭL2i$"[yYe8!TQF "` E3nm,Ϊagnr4wx2- @&5ů_>=8R{Z֎NYFpxT!ǐ :.{ -ߣsНc_z$)HtvUOG$ORQ (hȘ8ߥ|ٗ$n sv1$ r ,"kt(fvBsזS{t. a$RB"e/T.;91ШN!Ü(uU ׺{D+[1oFԺ4FAJR]M7TPi461"h^'8n@Ȭ ;QBU1nӊ%Td8&fws4#:M ZVZesu*UH „Nuü@5`g!?pAeCp\ CBBAEdoP\c)HǶH! .>W0CveM4f 8y_ʐ!hZTB`GKtxy\J&*@ \} ?dΜO$Ǽ^:!ά/i,‚5ko7͋{{+)~S Кw}6PZ1+ }qcfQ XiZ+ ? h~Px๪&A."\('峡U"Pi h!5~)1X<xǰ_ yLuX:0zPN*@E_ |T #"T }ιu@0'^fHH|V=(YGy&9ԍBQS^qN~npt!飧a0,.CtrR '$X0!VJ&J"(L )QQƨ(G󿯊'_~?!2L @T^ =~7o}kfd|lj"ނ,,& sF2 ꪨUQUph< HĀ3|g)k'(g8Tϧ?'i$8YBDIhJP_-Ûkјc7X&QJ1Olje,uTHSIA⤢J@!ɤ]7u+SrԻNOJ&!PWȄ:2a3809Xc17w3 -܀< 16p@#γ*`sH·ʵ14UL!@2s:ԃ8 xw2e;3 S!eÎDBfaJ0 0EC2e s,hCn\Dh0L*/-Cz,4Ɗj1/~|~Ϡ9Ls,^T턢)D^ҕy|vN Wy?{<|<"JY,̎z.]!&}/DYb]B}!ba"lstU5?n2кȵ;B*;;я$Rd\zSh3@6`qpgXlMyBvy A~^H w:(ʼnJ9-"Ʉ\df2Ck:IjB_7/N!@h2kRո7a(JM 3vywHgBK;= aXqlHO܉BkqRUBZ#ƗḥTw[WV(d2#/V([jե] zbT0TU1/4#YlFLd Sg.T<~3՛yyP:E /dPNJf(DR+~x2k{ݼQ<џMh6DJ^'D0?P~l (~( 1LfyK 000LrDv`?TllvCG8 sc K";~UAOWgo0Njv*)x`Sa@9q,/lRS߯ʖBc1A;tp<<{]$a'g,^@y, . H  F ddI&| ʿ< 1{eZ6G0LyCxEqB7N.,:?5 }|?Ȗ( lEEZP p@"oO~NҾ-[G۩{uj%4)8|qۄgQ4w FWӐ"%g]4f[ AU>DdI{q4=Tj bBǤhX[a8u38qg]zQO蒠qN E"!b%ƶS~êz-r),<$RP.Bܔ_/ӳ~<8[{ّQLnDr{6s*#X##:Jޒ؆c":?జ wb9vBL[7X D$;t%,,2=R wR 72 C 2k LQ3#z >xåA$$Y 6xM IԖ<c,_$ ,jP:o [UՃbl/M&U.@rZHX h |)K@,J (2-$**(U9P:}}$U4"^/ h!$ Ł m(h"j^x0f{a2* iSN)ݾAQ*lBsfgg rI/.fV˚OώGf&dR~ywrٱjTI,72QRR{ݏpBs G^ĽOQO-P{$* 0Rf?@wt]'Mg=pq|"r}?{t(/|ow14l)z~ֹo' ,lC(ҏpCl< yc'uraC^Jh (`JEN$c0e2iKCZ[<??{6k~׳D5eYamK%ƙqD6;.-Ur*Q`N;yk2"rhwN DeV[8aH4: `.  \`e0) )@*JwQtEi%`y"n"Yч #7!z7Q<ƒC֠ `U-D@g_|?cAT!c֜PՌ bp.wYIV\ TkǚȽV9Cÿ4&ۖ(R9K?'iROx{pskeI]ZBi? :"|Τq (u0lzݱ]vUiiK/#G)p÷Ur=cx;|NC@  탈-.S{(@[dE=:\]륍kىdSougkQAs;EM~σogo=['zV,ۛG!S{nx<[r?obvhVDl D[",A*H{XPwD>paD9?EѺ7]Sh4|b~tѭڴ4(A|nE"5h~p=~hw>,)O8Haww y @BĞ[_|T ɣ; $  p&y=X`}?Kc6 gIHl0`!K6 B)(f L)2!H\d)J4DS ݬO݇麿`I  ݠ???}W|^ƧX=ޟo?&1:~7jJxag>S{?6sk/?O̞?3[߉[~~]sv>u]~Ck?~ =dGA_ip. O3WibL>?L001p* e?d&ds0&)h5\W* ` ip֎2gsBҭ2Bg:Km,I%F0^0@>*!-D4=}%bQ("QX!xɜ! R &cQ4u9<[Zipp\"a1AhnKğ0&E(Td99d-CHao x1?XCi>>@y~o@Oo)o+x`ᢶyM""M Mto5 Uj!јXLWsuRBDm $L]břD6dmubrYRv?a,SA) =?WfQ~t "B)z>D߄( d2FM`N.awzG$CZ ɁJBzg{З="b\%u}tOKl$ >}iW8?iF- Z-!%I\ۏ؞lw9XybʺNq.&*790HfN`]cfM dM2 pDk܋d!da*)(Cj3f{p..'vYstʣO}ܟfIH* hSTl>>,G6@D<ܾ"SnnxktOTst~t{}GB(p(R2sA1=01IPQ#KP+ S!CD@TJ(U UUKB*_wX)r=C``q 6IǑ"˟gXעRvw7'pG @b Pg3 @z@Iy1PB!g 1nҥ\U5 A| >Ix-av*&T ų4^C}=9 d' Q`diz~<DZʩ=!ygغYPDgCB|^|+p8cS"&*EfN#6DJ$Cyjrb ^ط'ۮlNAG](Ɩ͠JNjD',HdGޙ9 h43I$9z';.180Dw;tP.FQg@@(Yd&A1\`Em\T]ZigY3lNj+:s+$xc0Ël9EqJS_:!H"pĐs$۝ 'ɴq*ȅXZ>Kr!tكF݆ $R'Bk>D^0rH0("_?AʢtSPj˱q\¡S fVʳk7@CGϡ%JdN2yUx:,jTH'(T;bFTIߝ)PVMv;:`->9j 2}Ґ3.'Y)lBTN!d:^-%k 2_uZʖg.`wil|[~~ØMC=(H![p=KLUYOHǃQ;HEt Dh5$9|=Sp^ERNQ8gT=.{D= C8;OQό Dne0x%.TF@ oJ%) 8*yW6) ) ;?.U1AYpŀAN(r|:3IBj2RDD$S UN!"(E03ID6PC!HdI:"J}7_8l+56(( HQ ZW 7<9[HyFU}!㢡 ;rDMŊ#bh4:okJ_Ȱ|XP=/ ݤ/ms@ clL " ᡧ5G /^?6=;G.`z^y`!t98!Pj wf.u[at P6q1Ȱp!) %v&Ŵq> M)?҂Bohp3p UN-0%˒Ps's9f& v>=EVSX; G!QA_\6JsC$3_~@J%MJ/5 'i9)Ğysu>ŨT3k]DGVp\0?9 >B!{wAq1d+s䝊HwNu!^u .;/xE QJ$4L1` r>8#Q6 l=|L fzޙAluI#cDgbVbʙ0x}i&UX zY/FHMPj#S٣=-Ζqr ~唡mf)cIIo ߝ,]|S9Ӽ\A({ /<1v^}`ssITTɲEDsM/JډD%cjrc!sR0Z-eA(L `,& 010DLL >4wS3KC$$1,ᡭS~?I.GJ"iV(27rb_)*%ow}XbQ,}@$&BW0Tɝs0zf``0:IzJ!b%` 刺G4!MhhVyHyClNށ䖴MԤ(ЎpGeMuiP@0# dυ6 t!!ȃk˿Ǘz -ϻe* f"kɿN'DI< 8CrPLE($Ĕyr@&h)" (a "Q! $b c0 b"X"( a\dQ,L)DMQ1BJ! D!5UDQKdȑ*PP 4A?5a3JPs`H_Vr.Se`4&Q?0Qs平˛ O(l%Ar Q󾮿_g^=xE u R3pP GdP*㫐Wz׀z_aO0F  @z=i?bE8dM  RA!0L~A!T!aj $h& RJ H"b%.JQ@3DN?s Z5?#$P4քX,dP }ԝxp;db")b߅7xvBkM~~Ī 9;>w! ҆%($ZŵU~ 3vrT?8h(!> pJ5^`HQN+e6eN*!A5-,qZ%tgCF6\UC X@"Zײoxsoa"ΏmfB)` $ #9jLS-Lfexr x6 ( \1%N>J ;t+L?v1bM屌hddDTZnz9'R1}6FsZ-q2,XV*:{~?cfg(n01!u1D8 '.^YyE4&0]T~DlX5) ¨) Bv\x r*}^" ^)ը5x^iX>)lkqbA7qݹ+0sJRtsVҥ7d!܄ۛ+cSnWsQ5N=RbcPzř,(~7xӹp-f1FY{u5C~ 1VD,F ⨎O[/YXP'/%yᆰz%īb}YB찣bLOgeHC%T]2k2vM)1Xt5ؽ/:fʅaiyzsIrI1btLjn6:'htCϒ7\&s䌨QHOndhZ_&ຓQo%ܲV'DHW_fCɪ.alZ̍:EG/3N̷HgS3% 'Y`ӕ( 'h̅<@Te0"VKn"+f<~D!^&PU/L{;\C*HL@꣟{T\ǴW Ny? u鮥 mB#BԴZUJq:þfF`#c)`"cBxˣ}u|zQ"0_Z9c_ oSܠ<1[Q<>Ir|Z2X8@ycgOo+kvB(Cm,?s@OCh{~ɐG(e7ǂ&(ig㇟> %0>gN$^{6^؉߇jN:A"ZQ7<oq? ]SH%r.C'%ju[/&( 0 2CbjQ2mA9,wہ8l*o_S%Bu%K*3cE*G(8ȳ|DEB|2QXDWaRK^$4!^>*> 4f4!$aZn;B 3YU+}ٌԑ>U">ܷcGɊM1 cTݞMlUR \“z^鶜q]`hw_2);R&Hga.ϓ@YP{|prx|4k@=ލgޞ9} XRa&$ŘXQMLQffa5쿛C>cN#G[PJk*4 Fpz̤V[:FxE>u zʨ/t!t"=wr}UuMHO,GdăƦ8`xm5+ qLB[L YjE!$ea lPf?YT?:Otȷ A𡨵6E*cVKDŽ!jQEU*(iPpG=r 1l)dYNt 3Np:,q N&A9kN!S%)!a]#\Mq$,qI $!621 &|$ܹxX1 װw(v@-&4*"P1 J) fO)4(c̾ 0dIlIKuCPK6h-FHY"5$'*㖫ؕ W]g#69`LM%t@l@*m!wYQ% GN٠Q _Ed{>|2$:8f4p7 >8;gRC ;Q=t054p0E i`4A~L"ͨAyFO'_` 62,mK香 ^bV-?",LD @ i:+H,yH5W8/e&Pgʜ+SN?R"b D##+fD"I'd4}ǯxMN αZl I8R DṲFi5HþlHNQh`Ulbt.X£%8hzbq8Kt7EPw8B'FA(<:x )  (pl aRhe~hWkd5 G7WOQv T<[`z6 wCw 'DAx&ǑmP 9ZO@)PHLȺcE)&ubdK2!H@l%$QR!Ht[@5;= ɺ$XȮVMă0@`S E唀%gc#<7qsFp[EIKZ͎A)$"#;<L!QQYUd40(\Y@3}`d!~lXB*P*@XHOkP@4TMV $6"i+E(Q-p ` c-/R6X]|Զ%p$Cd"!hȝD$|>\r 17aѢ :8-aOqK o]vSD!CEoВvz7>ArLFov؞R܋8e@;Ẩb{2 ܰ'jS_:y ɣj7M!!G3fX$ Idp&xJ1C}e:yhqR{0 Ble{J2AC'n iv@"3p;Q12LYOC:܌S b$#M ӷwy:&_{U4zrȺ!%Z#G|s+\Bۺ~-h}޴ b$H@+;7 * Oq 夀%(PU4$O`\Rk  i)̰Z&YLDD$E%vkބ,Lȁ؈EM3xOZKhsU@CH fuSwy^(RXˊ`R8J+/h)%&qb\(ˇuhE.U TD֋Q(F YDhJDU Pʂq6oj$_@D%n;<` w=|4RهlN2 #m[{Va )# C@tݱ3lLR׌!7|uNRX}lʔb &~xJ̚ёBi L%SCw?-TտZxTf-+>l!\JtǰSI(;gxb{N.cѠ\Q,]'Cr,M@+ux Wx@)qB bF(XU)RCT)qչAl |zO9 $II zF&:lׂ<GAɇ/_vx?ݒz}IR$5R2ϲ'`@%R$5y "v2T(CyIHf&I÷N$I#/rt캱B6_n1礂H+ e(SYkY),wwY?a-sTI h/zTMAú1F2;qDžלNX fooeM}sq\~g!EHF0G4AɃF +1@^n;*r}Q$Em{;(,$`zQ1˱CXCQ a#/%b$ui.n5 Du r2rd8Ѹc-R9a?LItH1 <1V!ECAL2LPu0d HNb8QIĭ$_AT$;m$(5G34n(y?fO k?j&4`d$V͋aM薣kd 2Wv+5k;mӈb`-^`S#LqSջdOz?| AX&p*:B`tb?}>7#ONx_!(NyOe}{r n+C hԧ` 0O|? ~^R, wV oط HMfL N6x@,g0 ڷ es~OϘߣjY);/'bs{LyM& =?M874KBnk+#l\IO'OwzVTľYx yhS¨iӖHR9joDKW: 2F ca蜭X:$2cqGӱu[DD 쟘H.%f2 &@,%]L!J#@V(YVfuUuXxit27TwߙKՋC$a䵕F%?ُ(H( &  %L4(hlN& JB1Gz @1wy.*' "Ld IJ,jCP> 41cp CĞD!$ NJW%_fs, [4[͒\S17r½MinB0fłmD 0W<(eVa_;2ZzTB M@KDIZ6"s7(߃jwh,[#8 M W9pGrog3sL~nCZr#"; G$z>?k7L# 0ԝ@G;"b>h@SB- B(1 @ FB'#/#CఘE (|}|IJђlhqHNXeAd"$#bu2ݬ^FJmZH9aXb:GLp i6MKpvd:Jo\֌`ደSW50Јl K`M4)2z/E1 CbaC> JPESUUUUUUUT::$tpX'F Dd@Ds ǭaeP.``j {iD׏z?;xfg9 Tf-D2fxIQ2CTQ Q%QHREU_4©!32"B < ơcyaD 6y|&=}?M6s,V* =d'd'J PTXkۏ2Ͽ˜|UCՐz%2)@f ր(7 pz̼Mn,zR^L/ƅO *G?Hd49 <8ع5ctig''=@Lʤ0D#"D#LWTGx2챬C&ve(#Ī9鱈H?;@jʦL*s}̨@=~pi( Jd R)H$ & (%`D P 2 2"cՈE)(@@HHBbw,#d5dX$DcQFRa H sM$,ϢnyA DjOxܯU#"``H; G6֏'b%T]ы,Mxmѷן2T$U|W=qo| TOJDCԽ]ӼxyI!!$>Nq\l:z 8T ^&?/6!١-dM 5$$p\'fE]~Ol@۩B6r-*?8|!"%(k&D%ߙ. O>=C>x/uyxB.kG#%wR ^D b{`dۚLC[ B`g)C{j}W2Tb~aL|'uugE >7%"u'$C$L n} xSᘏ3v!5 pGց ]tsVua7j~kY7xk~?t }G|@#"!<~bsTTi%, _9;6dKlDو;N!Y猧Q KQ/F-Vt'yc Q1[r(NwL H4"x`->0dradcJIOӚv#$ȴ0x2LDnEqL` d)1PנRmSr˟>YZBa>hv,8E7s#$͂Pb?|5Bd5o?Nu-@P%z+ڲ&x̂<r &e]60P ׽u԰RQ?D :fD|DG"=rMސvIO/NT!.hI! {}Bk/YQA% d"ϑ_;Hh;;xMvðȩS1jvhGcyA=~N PC*S4'a0J2D~(2J9* Q"^B+9N+\> (۞B Q/3}SBR)99PrkhUI3^~=&-WzKTiA7׈; 9Κuƒzkm 8i`D׷iM 2Fb5B[1- 2>՜7:Ci&`r3WI,@%@΂ c ` 0V)"WTRh#1toΚlǶB\fkqXA-  LD" {GwyH g"S 8FD^EDž4W_l6^L#s!ﮅ1%[1*T33JbR*BN}o;G_WkvДs[r U5 | g|ƒσ|UG#w|n5 ZLc^@t;BEF,e!fq~N6>4^^>՗F6;%u)Η_-@c|ȿ%+TnE|řa5x"!S>ySҷԉޣ9+WwGqiۻ)^jC RGX&ǙZQst=i=@ȐMD ֩`NiO|>u|UkΫ]{ 62G;4I 7۸Ak貲 ij  @"&X; 0djv|D5mVVԸ{#F4lhrb͓T::«b8O6 R`xČ) S,XpB~oJ"!;Y\*mR];Fyhד[c,T+ Q žlC+*a0YGIRY@w$ϊ "AAK⇴*,l=n{˯ sA>Ӹ=C W}Q4րD6R|7[hߗ?=?.Lk̝6,~R!]͓Ws["G!s󭴔e ;G >x$g~[` ~ꦉgWe Fvd8:8>WnǁWb$"Nηѿ˅Q8;oo' 07e8>aBaX3B:}#|?.bDjEίӨ\C,/g0yP# :*VQ:6Dwl!l(W%oސ6(P >O/2\" 9=q>А#GLюZLLl}v1A 1@~" Xe /Rd҆: >{-J 0^Q70 8?z0 J] N"CBmPl.m` $@4m(h>Yʋ, $ .0B!TDtJח6C+/ O(2񂪊j )BnSĜ!ws93 ("""% I_8_zae\hNul9KC@T\o K:գ1x0mͭ~ # _y |Yb A% e&a4y.M;7 43l:\$YSa* p0bp!; J`1rH ue8bdx,@A>Ǐ׹s.G$81W2H&wQ ۪( TYL Ïhϧ[۶B P)h?Yv(\ FHGBgQ7 AH$ SsVal8+f΅o_#Xo<8.Ha1-!(RIY +0C^E#oȁz ?o C1)'S4w Q ('h a`]a$71R_&]Á`pT!Drtbg 1\w2 6rAg|]8U ʇeB+g-"DB ]~|EϧdA8a݃2a XN^=O`abNECF vl:(ݎ(J/(VFO[gԦ /7듔ء;($6-(b.:ɎN4' }TrX*C f`t1/ݻ90Cj*T^.)G$Z44 aDr=#C>qcsގl6s!><".UjnH(>I! IAWEpzpC!!; |A1 4`6Cyrݜrwx X H75_BE;dnI#]5!PvG̔0LTSA_v% )ACü,jpϫO9xx|lyZQzZ!k@IiUE 7w^N=nq3DK@\mi`ޡQB~k"QjA;b3M TP~]%A s4 #¯uR(d@]Χt` Sr!~>Ni P)p郇։~?+{9LD"dp`p-ܫ¬BF|A"@-vI^/HDa 0c(Cŷ8e#d$Aa( ׿ !8 P!'PcطO<=bX _K\JPjw{_u)0L†`{)Ώ)2C~gI&HQv"}ihoJWY)BY0 ]N*]nǍ^ D"7rF=2Fؐ ! wx9aSu{oSo7E/$Ꜻ6T`őXֶF.RBI*Ky>>|0o<դo~Gvx~q~{8Ӊ "vT(N4kkt祪77x`ObBҧQ& 9#$>o^w~_GANrn;d-ǂ +T\6IO)=W]~?>w7>ԳA$B6BDC˪!Ѐ>sqy5xW˽ A hc(cDDCN6xt(!fV1Z(ɟ|aFs'6G => ix^l)yy1kCdr0M0jc8BEa$!1K &0nk~NC|@ ub<"`2^20"@)Ya b(qPFS<]Q>nD}=5S#L$2i #* J$aj]F/2a fOZ 1/"r  bo\}4!P>-;B( av"8 SP@ȈMR 8N#h7!y8&7ݗ?7"&¦ufF8]&Dt"^g&׬u<ѷyVxEXqgkbK ǤRڴs֤WUύ_eѿdN>Q*աR5VG":&0Jsj'Tv}TX["eZ r^5:rvx6%W'1Xm,G4XD.T$zJ lJZTPaoN5|==0?vohXcg9ق[%0v5w. vիO%Wu'OUG}Ru!f邕׍v AzꭕB-]sugqB'+zul׿4C4CU%黊Dح[s Ҡ+0JTvcAcMkpfLhlQDe)5;ٜ9kԁu)ZL`6aPmn%nYpT<*!bčT;,Nꋜ*M`=:>4yXM\Vf22Nkc@e +"4\fƷgj~xQr]%D׭4i\@x*ZkCôF!kaL8K3Ep.XGG(m|a / h{ɲix7.x3,`6K-! >?!Ǫfp!Z;{S+;.d s/Ze-9%ۣX4;&i1FW\4|zSPc<8M=< f*nGa. oIIa f ߅ sfĬTx0 H6*A10] 2cZahI~l(#ՖՑ xloa<;Ѿ} 8gƧ߲{$ev8:﫻s{|+9)S̑ ! U T }m]N4ݰdA08wADc!|l8rŠ@<֪A ((<bŷu>s#ɲR4U7Z (NZr2=K{!mƊfr\,0&(:Mr wP12JI"t?*BTJ)8<+~M'G5M5Q)>vݿo'rwhl UM9|^, H,ȉ#1I?N=qC` Ŏb @ {9Ck,fŎ14Z|Kޓ12a(p1)NRI-,pDbm[Ar1s]ReM1#gSǍqzη\#a fnV Æf}tAѮ:P!C$)x:s ik;.YPCi/(,RηDGL9ÏBKie(&{%D^G#plX(M{ |,t˯SAB 2ёY5>9>A`|DB(),6i69`tEh?C!hFQ"•(j"n`쪧*$K'euΗ h-IQfn6 k/A4g oVo 8=b-\ZKd>|ddQa H r [F,xAOrti.x&24=4~x!{L*dpP y CDlL 0CiC~KG_D2LQdjzu~/.jGLL$q&b&ظĤI:FApyˉ'bL:Dx:Ŧh`gyt̫ ""#pN:*d008MuB]3El($`sdT"X10QV`/87?"|d텃  :d졤\ZmѦ-H`"eD@}IIj!߃W9"ԂDy.LA@+v_wdti:H@}A!B)!OٺR>bwδ؄E/x㎒^_vFR\vi&XL)4N\2I P+ƃ*& " E*鏜b#>$2kjP^&ʞIj t(\.D "" v s)R~n/tC%<"@WqoID%K0˗۸=#wu3CCG%:`}J- @H(F 3wubjdw@"-rP4* 'H Uj? Zy0DУ1TΔ1Z.=7ԐNw.˽z $Q"%"')k&ڿPb$" 8(_ c\yJ+J s 9i]"-(B~x Yʚ:.+h2Iݿp; ω#3P@m3ɧiT^2('Z J `J:Y5$HCnv1 OVy!cgcc-#lfFG7 lXd;`ڭ1ȝIݾ eTߛY\Ҹ)2,_J*,x9 t"'isBN0H6`4I&.. Xf@DdDTF3@RXf @}DZVa*,]'O@ `x&+`Dr^ kXn-P P$ 9^IyFTVrI'Ÿ F<1.eh" PyIXGXNFڒmgNFڒmg4G.$jIڑ$%8Y"Zloe9_ #ok|r3r323232323232ĬʈʈʈʈʈʊO. ʈʋ/oW>i=iagC'zB"ש_Uv܀ [8E`Ё#O(w W7Re-=a0c3s43"pNXbRaT!a[}NC?nLJ@@k2/|9.S (*v] fR"$hB0#E` _M!y^_;G5 0z38a r@I"̊7 Waɉ]A,kY&lofBߏ߱B 4ԶE( ,&pJG( kekFYW"ɒtA0ȈH;;L} HQ 3$m'kMplj6 Uƨ Fs t~|puג)w17mI TҗCixG  !6.. +FPjn(2aX3SG Ɛ\Drg:Dc?V AT%%7̊&雊ʉk)4(  19> w}s2ʎԳN[<~ӁC(˯d'׳gBD#\N?r3ggEǖsFwj(jL9 yd_ \\(`f.!wαw8c(U$7`yTFƂW%_1G{b8!$"vfn9:~]ciQu^]p=v 69ot6pYZ\4V1ᚥL#j4Py㊙ ̢&;v~^&1&xD$KT3AY=ݎ v(6U S2ˆ;=㗏;ԕhHiP^ar!2G/>ag#G%!H|#"{{m4h =0GX9.2 `ߒCDto7uMr Ls{dN&kn"qUˊ0әaIA\h͹%q"<#7ꍧiuYDf!X*'$KMDGF8>a{hY}Ѵ=n>ŞL8"!k+ 9ky_-kΫÎg@,*5IIw6Hb|r'(*\=c_m#`*WW|rJx-$hcvm \zr!7]ci ;P iL@"=x~~RDnhG}RlvY,7׶94Ž]㍎4lp"ܛJ=tB!%tOwdu$`G ph&Q QB=YET#\L $Waj 乤g y^ǯǮJix|k_[ZavF2`;>118=woVl9~jq->!BI@g(]K'1-ߖ -dtw2:⻺H@Ad^ q%!Gp y9Ff 0q (Y9Ed&C0Æ'uib,>`44<1<(Vp.#yKq尡g?I15ZT O+(mD04F1t9c7,5! p f׍ RM}ۃH(}5'( !Quk|}z0֠Y7izz34wVS=~G{NT9JRҒ\k25%.1"2E*.% Zf_iphUHtW`!8xk ~98X4o7q }u~*8RʝHlf]e/ Nkxc*_9z2e݉K_k&DL{?Rߗ۷S?$^;M5۱@ϳZڕ9;FȁqĚT,hb][Ҽt2 Iʽt!wFݽ76QD""EH- Cd@Stk0hVPAPT" @\< ,ΐwܖ8$N~{R'Jçs^7)_=Xby7T +"-/M+d%qǁp찬-+=uwRMFMӟV*\{(W[ggKNZ$ihΕ~ vALWY£H' zGJp zZ ,0u r *bu򳆊UlȽ+N΅㇫qQ֬]"kN{#EzR7٧!Z{w}1%H,ܷfҢE qQNjO5:0aI ! J*6,?qCsR MQz2Hi T+bK0@{Y+6 XI$HBNбpSI@@-›^&K1pCWaxJ&".SF!x& w/!xe߃Yzk"P7?Qd,@"B0(/tyA+K'ğOZwt\4G[JPG04͸vW45$/3o+;0@0cPW_у;Χ|g!z(Mɔ;:O{D"j*cfPu/gp[\9B(XqCw~lM)3;;Ln2!@>hOӇ/` Q  N冉Ԇ㪰%v62H`D &JY.E xSP\ $(adtnbSs@f$1L`eE#ZɆi dN xsjaLZI[`6Qn)ch0)Z &xos- ,1 Nn/bN'< Cd(C%E~i\Dj8 hH^oR= 1dY1ȜJ& o}eΦ]L?LK\5J5!羏`-c[gm@\T ^aǖUEys5&K`|t|V RP߯G iqz,>XU>koՌ:HvYj\K;xQ--x1KfkcqJ|YG>ǍCxGH$;3:@ cxiO$bBX|FoԴ1y#s8Mv)Ү?r1qBA;9?My}헁$! dz1\g 8B"({C6dzGN2ex $ɰ 0,+$/144pfsA?\aHbqGJPq㿃yRRh'dJ )!ʒ!(axj3F 9 c^sc`WBB>|& Ek'œ1\ i.@`܎tYbi`ّt!ZZr" Q= %D-U(CzKm< /xE)$I@QZ R 0lg$ЁpV/h߅7GKWbn˜­\g@pȄ!MQ[~/RuX&yZpVGY:%]%abIiܮDϵ-w~ ɒʂY`J'7HX. v q=q<-~aڰ'LRj"oH0(3(" i0(nB eW4 |y|Z!D6k7 !!$H@;fz7*S'}U{3*NP">!},&3 rq$qsɕ9%-OIۛQ:@0F?yqDh~.g;z"koQ u!-I\CKJǿSO&U׻@ אpl~|ձ.+'Ƙ]:IIa~g~<#$ 45 !L bHX `3 D]?݀Jc"щ#pDn%L?3zCr(@a `qRs*ډ?V^gY( w%/ ڠD> f@2%0`" v@?$J 3*Xz8Y5i͑jL`EŹ$Z hbSTYrɪ"\ 7:H IȺ3$ 'ts-:+ '\1Qڅ$:H&"@g&WrsmP9:u0% )b " a< `0&~ nޑt$ 7z.%MF+ǸrcPQMB2)##"8:5$MM  #o,Xz\}YDs0c0Yd Th1/n0Qz0H0CRp3>{Y=qA?4DE5~ X ##p囀gp3!Hb!]I}IUĊ+ U "{šLHւ4?W-^*!Zx|:h ,c*hOy}2S$#Xb9*X߶+4'l43'8k6[,94T07%S JTʢ\(hU* c;8{uA ,~B*QSuړ #PJg`\O.*w%ѤqrCI$ۆ+"$802 ^Pd"WD^ tĈz"q^U"#D<gqS*#"`xܸC~W E|sS7 ˡ<7%бm畞&#X; Q.jqQMb;fmHPUUAlwG~{Y~z,d$!;%ӁܻQeD $Ei?}W~W~y q?1ƒSL=l,PooM~MGX05+N~r7Ly-:0t[ -('SVV5 ™[F-l":oD瀾pYOsS4U)oܑk;G"22( e;٩EX;{oWM&*8jMl>Aedw]-8B/;V E?S "/`m9!fni?l"(ǝi;v۰僱&b HT3-(` (,лDpu}я=FahhnniI mGŞ]2I@y0[0E,U mmG~Nm- tjGA.QvVI@6B;YpS[ J"ۊ[4d5*s0E%,.&|'?'>RapDr0*i_$fi {2Fל12ɡo6(L`6Y"?p$ d-mA ԇX|3]l  z*&P)brjj.)Bd<놏!v[BGHi0AA$0 ۃ k0l$2 ߠ=Mu=rG6!;w]ĂxX\(FAsJYX,Y;8bU$a !aġ-, ,I$`& [r893?q!" ,L,=CVpp&8Gx:7f䀷Hkp/#ZC4ȱv1(ffH`],=W0yg|qMYc !$fTHLU@LO1}s33 ;ffafiiUQUnidhL^)KrJ6enPm($XݞEڡH(JEka$&GLOnvt30"h&2c0J62(3bf% mK! 6k\쉺c[zUܧY#उC0C2:<1ìN}\8ҁPl/ ؚu/2o_ `GiA 6(-j8[Iި63"VxE $I=MMI$pOW5 20cCCw#L0 GYahkk:FaAhJFabx$J,O{H\j'TI FqAцYTP;YQ8aD0 (a9QQw-ܨ̨Ss*-?eL2p#1 I4a>C -;R,`wYsB ُ P4 gEuDO9VWh)Ol3Fl6Lsb#62UGu4RNj@XaenHsB(%) [MBNCxq2)Σ99Тlç3:eV,Lh.C}p:X!' rvhnvQp=Bh<N} D@|ܢ,]PQKĦ^*'{L/]9 lY =y/fs{HJI!e/8T}?s)cP~=]͙i Bs@ pB @)@ Q@ {})"(b𨞙>H%N!0ۈГA;~YfaaXtlJ ճVp#>rKG2: Q|iIbI%C[͠B ]!<(hф T 1D 0O O9zA(X݃y:9OC*R ~nǃ8|mJ+ʦf&~F>hb dsU<5U6 j?L6k[a,^UҊJ`0`FQ ` s)#K 3n0Dۺ=r1)UD*{_~o/}ޟFmcQ飴ܚQY':O> t@ORd~d!pdQJBJ"% B G&p2V'Kxs1R2>%n3';poُ;ө"[QՕw;~\b._Va#LVBq%&DBVӆ0 ȪGBgNQ^j'A92fdak ZQ;' 956Xj&rqq}I0D+DAF&_v}`T H5!U^ݯz{ANTZw+cr[S׾ @zw[P<"T[I#`d$},@,b>lCd(>jR]݉@A-QE Xg4? >N7@PaD!5g^*{=%h(ppIJٲ|p:}Tx?}?5? +k z5Ɩ%T/V̫z%M4rRQAΟ_?3#98F;05RH^.C;E/{' ~JD@(f!bz+J~H4xI,ʛXЕR16:` -vg jkL|tx1se-3azeuأ u谠=3{B#W?2}I X,| UCž˫d @σn|&K8 @!ŝiH^ ;=GùF̀jD1AIQ9 !$'IaDbA,%K a- St" ) I9}t{#?5YOPeܟ.q *Df}eufTU_ª É?_(1Ņx#("" "!h("(l{''ʊ[h3 ͹/ "C3kFׄY[m&պӦM4{3ɤa` Ԡa1l FT` .c")AbC2$IJʅ"DR ,wMӀ;SQpIXPtb݈w,AN2Y^_.߭, v|]~Il( Ԣ娫*z;@{@g ;)MS6i iQOlGCYGll9vӶ/ڰ)H$C Mh=2X:%/q€Bz%u`!tq2v7\{ݟv-w K)$F)ͮ{[7XiW=A vcEZPQVCG85'6$ !Ƚ'7ǺAdPo7d+ ?.`؈xW.>d׷ JB5'ϨG!D) A .+NZ!EC}  ܊HE.h:vrb0h)nL4Ay&s9GRew{x*$tr###QDLt1cO!k m!'y_ؖ-n!ac4 D-#R764~ƦбEX0znQA[ V$?xc]-SZذ!Ȑ.{[2 ?_)074ܷ3M@aZn*k| @g+ [HâRQ%C&ccF_vL,naj_3[m6k$ ʬHAZ(dI"H,Q`FDH>04&$DPbE"j|7ΘmlTp̾/$7;wP* P>&(`8) .[+帀͉&dIg!,K/72JN(Y>&a VMŎ1vHFb.hWձ_K76ƿ/s@)'9ET`󼪏Zq}Wdc5},I$I!~_{?w04/o6/V)XSD_c<'Bւ|w\Qn,8iD9pTS+h&=v;~yG{Xfm}u!/>-e]c{.H}|Ygg ںqpa JOS2OM∉BCWյNd\s7(JF1(^1!ޠR`2:M>ODC\EnjYj/6¦]Y+a>h2AA@.N(;&~S?pCKCK@RPR)Gd~b=\L$L3mWuyxjFxjpX N?_B: J1脖H0樣 c#Lס1bbr d5s!a0$J}x>jbsՄ%wuߚDØ|?]*u3xG<>K[8!5S3qyNLPL1 '2s &w&/CcxxާcϫWw2(*9eG&_ U;b5(JÁ8Y93$}Շj<@gx9dxVC;tK1$a$Dc033$"8_0$ }\ӎ{Z=S j7\8Ucaᄵ@ 11SH&uQ+-ڣ'VUdMMK+>?T>;دGn ˤ9H><,=bK'#,Vdqժ@r_"~"昪S~HUd!EX P^X/|]ܵF̩p^!(c˾)@޻rDd D5d uԃ/^stONS,Ŭ֥TDroR]!X ̉ˬ!;BEOfV2l_1"ND$Pd`1Uߝfa P0͊`-b7%ZuI̵jb-zMզmJ~HP¢̤&D˕y-> F"fA˄ "a{kj~8)ͨ 5yōpD`tZ2piSrɲ -Z?,kB$S$ےw"JЂ9/ 7џrT]B%9.,pJbgg%.٩- 4CQJa=%fANؙ΄:Ԃ3ڕ7@soD iA]v PS|G)q{]fnl! דk1.BG/4JkZ)teςz UCͲ☌sdXPԽ|rH+HAR<w6[{>72Qu~ixSl,J/8j@} 3o =u)>~2ϐ=hXvKl`(fFl) qyՠtXn*w8ke#ֆ%Ǐq <H@!lc鋊dTyw3q=₤[ܱE} ''S&saӌN fE!FA-+ѽc_Ey)s\nߔt8|b̔G*Ue=~ƫ1nH{ $ޝcGb$ N>LM]Uro}l{:^+MƇd8tk$Q[D饯IhS$ N, `|hi\eԥ pSp5vm%eb`G] aʖD2$qv0Δ R+"S~o"^h_yGonkG))>Ge`AOkt_V7S#19r?s ΋<]r&|YxN DBLm1yiW ~ Wt@x 1sȌmU%0qp6^%8*l[hlA6Gl@uDD* 1껓|4c>oEMy"8V{o"wj o~K^l<R/rsh_gSr87v\{6Mku+,.nzϴca0<9,쓞T&T/#108.ū*Μ,}#С+-3@IRd\|KI`6:{Tr7w5caA8uܘZV }'5ʄ J.,?v~G9Lڭ?*{p`Z\\T6uCp!8mLkd/Fy'MR}%G .dick L$('c8D6:uM[~#cNgD[XT43h+l^Z3`53'*mjR!9:Ct%ftsNv܈Ec LbϐeJK0^.#׏bV5wlOV2 W hDٗ" 媕 ϟB<*uJjEp!8T35fNWAbHaړȧ!]?Lpg,gq bk̘ /J D3fMqnaf9 MN:&y!ϤX$RXv(Yo,CIg@0,[HlԦ^a, Bmi7(DH)BCi+d)J*(Ĩ?+0"0 knBQ3X 2A@W<c :znđm0;:n2W@`D"B`PA H_x= OMzȫ)HC==rti<ذXzTT 7Y Z"#c`ix;=%0m_-ۣa;g|O25*ccJ)-<씶a@lˁgUHSA'IY`Ks)~ %]+,HSgņ7HcM3013)[]TSQVzQHj2V"2"0Xkb[H@-q.3sKH&P atyԤk'4Qh+T7wh`ه+u (35MF٥cH\HC[t(7cuR(30Љ4~wJ5zq|l͑=Gb! # w[78͏JU!:RWQ/b 2oMRr@[y i (.غ(!/:WM0E4.048!>hj%&vOw[ؘJb"!Ba%5L% s꒍EaK;Bz*-{B@͎< ]/05X]wi'^sΞ7ingn&:ȗ$kJS'Yw$RrĈ1Hx^TWk a\S)`$Jiy@EUG$׻D9m闟Bj׻*PDFJ8tݨz)V.ZcvrbJ"L(*?B@R&&d%ednvDgSL$,c1n&ރ(,πL_VЕ BAκݻ( puRy[݇H.!xh Nwî Ջ 8\rPf22AE|^Dq$oê_/߹5{b *^+DSnbi$&iG 1mEH`#H)("v8C[/&nT Jk110!I4ʝR;PUWK\'=w"RS@ \\D&É>a<{o6#Q6:/؎К9gn9e&:\Q{R*"wOtr1QNR)!Ϸ_sL 9; A]~m@E q|=acђ%,KJ}z9rB`J)(Hg"VP f0J /=ͿQ N+Tcu*S@jneEU)g皮eN9sglk9;"@,%D-BRb أ/a;ɟLpESOSr[(XN:wO h QK^Ng|CxLQJDCͣN·7q+R ㇺ_V79{{;[EzĘUk+ Lk)_4j~d| A/ (KA.cGN2dL$rqRL k#Jܮ yP[~{BE"J^U݌ϔӘP 'NY]#nRmjﭤgż zoýG|vMѝ5W3 DSy:8aF0_U5e~a!?pO6 !s-Bܪ1RaTD #x$`QCb S<^y=HӾp'SBȉ ZFk ʇKLN#Ha65(^ Mg~o ht~#"H$.i?[rBylF,%q`Ei(IeIQ~;VwLtp,w^> ?Ÿ"9NhI{N&pe˃TC%A>9*Umm{U>UڵlB9 ϊqC~;uL ^G 'h!!߅g_̏kfSfafp4,Sv4|>|ycd$:EyE94@̺U-o*!߄NAɽjG̉Q ]M,.Ex+\zD B7$ڬD&TVNT~]gWE}][C[ebLŲ毱Mg ]UKLvym}:QSџQ;x={,{WkdpBE D 2',%it3g!)2ܦ7hG,L7= JAdLh "\ ʖȌƓ$s"ɠr\B؀%CkaԺ!ܵ)ȉq1fhj=]C3 ꢍHsqhD1c {㐢C Ȅ`61 FSD3{%{BX ΂B!5IX{~_/*ͷcч2m2)|]?; Yu%GMLlj(v ^_CsIr?~M7(m}zO.\9C(6dg@`$"$&IzlG"+[oO"ii-?oxiVȽYCpnV=4:!𽽌.rl! ͷH HB)")@BH )RAB0#ZuOB3OBSJV6^bqV|{CbboRnm:@+^3N|^gɒ_cwY zYWn戙fF{zfӰ$b#P:L⪲'Z 09Y7/AфS#G%lۮ7J/6wPݘY#>8K$vBH'Y!@r 9!SB25hD0]o+cOߡaXKkz_#HA<+H\=ͶE^f:@.CJvoMY+g{7G>Ma]&o mWk_Sa۹f>Sʪ 0~&V/qWYJ"ci"Bf'w 뿆*"/BY_z;/'=;HDžP:ܻUoO٠ЮN@4 9q'l$*cvs+v_imBnmg{F]<s~^S&N;fس;< ]WrIWlƴ&53 cxc <| `a34XbEŊ5N숆'n,+)}uzX1{k1c~Z5j1^0' ѳb#gб~WWw{u?c_bYl;+b;f?=_bP _|v+vR+q/i~sUk'~]̠E/_?'H(>~|YB@Lq}|+Gǣ؟}__odoG=~/}_}q~}~^|w9Y/~K_=^w~ewʽN}o>S]c/u?Kw|}G꿿~c}\m7?57~~LOã_YGQ뻿?~P?Ǜ}'~'~=iW9/b=Q?YWH?No ^G}ga{|E'/^7x)7W]>6}?no}?}oM_޿HR2/%#\߯ɡ?+G|j_>moy_]7GO?>sL^w~b_\_忯k{|O/gs/%" _`__"0!p";|~_}5^χ}Ioy^^q| ʥ"|mo߅_Y=&8mS<~W@{}'g3?5;;߲i~/}W>{}&V/ߚ >U꽎_/ɶW8;/g||ڝ>fӟJr|_g~[z)!7){_;.,k?;j__'};E>ۿ2vo~/A||)|X??̝%꾺޳>G<>_1_1?_[~Zio3|ȞO>c~olWW}Cy3~|U?ԛD!?GX{wZ߷ߨ~) _>=2{__Ag{aI_-> r?|s${HV?>ۻGoo?:>{~C?}ײa71'O~{H= S^O>~w}IC{q}_ѥ=߳?,\|߯FߑG{?}϶?߽O.{Zב쿣ϛO9WG }??+_7}YG/U>}ߧ=UsV7W?;3>$?Sk/>~%YA9E~ O?/~m~g?g?{_??czGC[_[5wWe4Qo<߮~OS?7}s? _gK$dߙ-i|{]?L{ߝ+n//^}~"J'R z?[CyZ~ֿ}2Zzؕ}ǰ4'p߽^ɏp~7?`_>HJOxe7~J/a=|oyއN㵕?*?{?w-W5!5켿'Y~/?!Gϱ]/k䨍k/ ? _~߰Wcgo?hz/?+~oog߅8B:+{>A9o|zo-^%^Wߥg}죠g! *P56 w:{y(Sb((%%PR8$#N1zѧQRp3n׷x@t@GOFl@ }2FqPSқgܭ)A`xԞ|ce݆fTv > LJZ"ޏ};w +aiϗ^Uz<ijhԨ|}q@tt `]T P()}PP(_| ^>>"Pu;{ ym/lvxz=zA ;BM1 Xtoe{J^s*^xח uw{t[YHQA[jѽ{הVm5@zӈ=;ltG@x8u^ $ɪjdZH*J2ϾϠPt'}T[{% Spcz6y98 Otv^EK*_sE:G^@} wQ{4m|^;o[^ >@exe޾c_6U0 @ѰMWs6+) ^hʷ wnS {}lѐ`-5TР6}w(oπ3$UkJւ5M6- 79WYĖVkj-hI$]qmtۛwCDcP6/w\wUI} e(ej16B$ۋatb5LkA l@ej{Q wkfo`ue K0b=p@:(;j(-T MPεF*kL* lcNvVU*Ъ((:6I@EffkTіoC]ǀ)0H4k-&"h5k3%6  RB)mPŠ` Q5IR5DFJ(`A@4,y%()Wt4B>mH5Pœ MFS` @nl՚6n& =}zGz]Sm LӞ3rTRX۹gvU;s)$GL 5fTXeprYҲ6c 6` l@@[je[E}tthmmI@J"W4LUOXck @@ A4d2Sč@*~RDH4FOOj# 44 Ch D"4i4ЛI=0L螉OBO(m54&" b212M4bdde=OSM@$@222h2OB=&S*~HMPD&@ L2 & OML=#Ad><שOxJ]ȉ>#k~IW§N@4i hT_QT@Hp9b1ԈU6uU4AQH>b9ʉ˷CX4_MiY!@H(DE8Sǭ/-V8PG2@2 !$XT*m# vʊ Fҋ"Ԫ!HjG0<ۇVĢ(@"AF!FD 鸵[^/7 tkb}>'mٟ=Ɇp?K LJ/7Wzw@@aWn:38O!!iGA5cxϼU6{a/Es3. 욧Ҝ P<]$ή&{Z$1uC[֘CS^ж~~b_3DxNalG\`= GK/'3Mvˍpx2Ac㰔li5՞g'@@LjT7Z 8X%(*kamR7P*Wcϩ:V)<"-sTwlڣk"K,.sO2csm晘Yj@сv$+ A7 X`r0u/ǫN2<1m=6}~/Eh>!-7`sc%#|ZD2@ :1q>F/A] H{4ы H|xztf j*=ɯ~d'ef#mʫJV8Oq_sͱc1~'0^fGrZyÏC} [g|v.e OJD"tCFRaa}( `}$!,rMpl]C- E /鎊336圈(U%(o!k 剎ʓȿ BB7%I?9sZ"tc `M!SP ZI_D$hp@'ĿbdBFS&FZQLc! ҋ q?SO\/~otF">u<`r"W<498I'cGDA1ـ<"#ܱwsljRtU/pCF=ggjdL v<,FaLY8VY&F4}?Qfkܗ\%L!CU5l߾ Pي_9@y9Didc`lSս?LxgZ#u(`@>d-,Kt}CACJD> t xI@ڀ${}oI}|IN2= >L$F`lǬ{=mvHç=xB[ 4Pqߪܓ(sPLUt:ArËA `RDMG( `r#<{_-x @D1-J>|<<=~yG=Ò_6$/f}[bY!>OP B )`9YAӅ2+w^“l[# Rh `b-3u/ ^/oՏ9tP4=Vt+Rc031s IyuGi-,,1ߧl=Im<\3bD +Ï(bcѻьjlcYi E X"LL%|"@ꀮxUf>Ѥb8K-i em!:> ć`0$>mv4yCMoê!˪M!<YJJ !6EdQjAhC\oT99((!Rd%9*@2|uJPPКB!̘Ȉ00< |N9PYZd{'mh(s4}` uc28l˯,ʞ(0o'e[J!@bH@5irYug]yi_ B=xL)[Lrȷ)/V=rԚCO`zh&MgԅX$: Ŀ#tt v2zPӮ*aL1X}^7YG1 -#Q6i!i*PfQ׎b3 7Y51?̐̑~ v@^{{a8od,SY]KKKނW J3d>х1cim."X84M\\ΐ*7>8GF`qq.3 D<#:h<9{p!Yb@W\(+' +NTc `d(R j糭00U+83/@6Cеѣ=4UU/Ve/zkd`5)?7pʞI,WJ(g#$!(&2N2Q9EzHoOφFaaoAc?N_f5K^%裫+ۏB'}ej1ȢlEOw4_@t #cрw9L\d C|Ȃ"@F0Ml $zlv>Vk=g@Q \&3C{0(9RC0bS3\|s!M7"9EExEB Gv}:~tuceĔ|!z$?8]o Ch3Feu~KZ0koGVJ;8!0fbSeNK]iHpz]R8FV|{l$4ˑA \ UDdVs\.` g8% Se)JTuAc;{E+\fʸ^8t>ǯRS&f JH`w vo| W.yIZϻ Hh"Wpxj~ÿ(t.C) I*ba.r_ UVT=fQTLMfDDI1XP ETQ2Q9b"Տ5KiG + ueUDbEzg DM , QQU( AT`T)*8 *(E(EP!f)))"bb**JaXT̗dLUBIEDAREK5UOaESPEEETLU4WaLCAD% -TQ&EEA 9J((,N(@eib&j`QM5UL-SĔQE1ST S434TLA3MPEBLDDUA-E%VFESTTSSQ3TUTLSUPUE1$C;fQs"e3%UTUQQEQE$?i& ְH &*(*^DY(0sy=MՔBOɯryz'\9}om!9ƝQAc3xzץˣYrn8s!i#v8@d~%9K>m@gTO^^@Do>_o;<\;0ʒ"JC*OΔ?-BڣJ<?ٜ!?2Fߧmyo@̼xf<}q&9dx⃃#`|!Ğ yƛz[$џ[mU ƈXԘa*v_}gĄ˼Bw.WiAQ=ҔK/N\D5KwuSHo!|E9|9)挀dRd)zfc?CAH=亃]}༇a~PmQp"~Na=ҘiɆ㱧q3:33fc0gƟ0Y,^$76:ťo^B|}[_ @Dr'E7^{}aff?Y3f ੐&6 ]/-(8?ʂ' ^>~;ErD:?n^q*`1ɆK@^܇ a0epep@}Qo_`'߂(g`R1@AL!&Ј+ /y Np#aT+%oi0‘w!.,p8T1(R2&-alҝ"u>JCc`ͬ}{E X'LvWH(9$$>;1!E[j[kFI} /SCq=iddKY2eQ(>/qގ=O3m9]ooٛIG2~{'_ryp9jmQӢ(퇧o{w l6 dǚ'QF#qQFluQ[%0}Ts3<uWA`W1v"0](d`(nj L3?/Aqc w\Ϙrp@VT9:lI#*;^p*FkoM_6eQl[qdo Xjj[)&22C' J' É t!&e"XFYfD'vQẋ.i ֖uQ zl/ӳNoِ}SXZIASʔ+ if0BHr6m>E3R-J[?;3rVDC\XM ]Om6%ď+ ABb &OGG[gqӻ' AT `zz[x8.uѾw..' Ӈ?9E~ tQm Q~Τ߭lߚvzofO~~7YX E0HaGnd4B>Pza>#&9|>9?@;*EJ Bԯ{/ӌ?<Cn#=_*UUU_UUU|5UVI%D4Y`+An-Wt{)/qfcL~f{Oӏg';w[>t~bRIjg(2.ëaϠ`C &mbגͺhPl3" P̈D˜mD`mu3r!bH\?2cIBm/78Ӵ)f5#CJp7!`zk/M n/z8nP-ܜOn^v'K_{ yeƋgߖ3X$- k>rB~]GLJl1OۄSM. eqO ֣I MG/yofj|8{6OTXՀi1{#Ysk`?x|vgƍUJ4O$S1?wˍ{!Bsϻ-enyLs?Ԥ'/iٔ"!MQx1ueZ&P}H8 커x1{0S{#Bj1!,gOa`xLW#H_L0q0aWWXpG<-bOt0^lrӼ}G/ȑC!Y !leO0KyUEBG4yּdpڲ`2o΀`JUm 8tw}I_$ax9xzO(1^NMNWCe1\PP[ǻXRId!(_~}^IaU48KDz>GLyu_ ڮλ,{_|{;On0fOi0 L33< *~R~ w4>'ʛ0}Ϻx?GC܍Oȉ=O y:u"S"ec˜A 1ܭ+mGO'Ru}CVQD;̾.'u48yx_D``E:Ybɵ?̐ O |a!0fYcgeoy!?2B \.!^1c>G޻Gafo1PMu~Ku@zOTt ÿfEiAGfvP: ?/n3i/og>,K2ZdB(L@]iT9@a$/ώB ٨DF ( ߏլz@PK@zzhaFˌDHSLď_<)%!) MӦ/"/F)yH^(?;"O~HIJWhzu. ZT(d/)rq [D N'|uNÊdN3ъ>h]ӦM@n!P>SNn OG ߏ/>X@>oۡ2sil:"~M;`,Ck;20hhL|}X?$ĕ=T~:X r1fOWa(V.C"XQ\5kxEMH)m3BBVXvŦhiYAǰgڧcByO0@hRM! smYPl>АN2MN1 Œ[6IIRz2 c/UmZUMwxfśZw;ޗ=uCPCV lOk=b=72D\{nC @$"=׿uU)SIbt=˹5tv ӵ;5prd0p#o.dUZǭW,* tI%vv&kttִ oGv .®bʎ{ 3>]CPybJ渂L(hP1IJ9K\v;]O\$LZ Xd4%)DIv;xƹxML*)#2'R-`o@p6@MiȟE,[ JNW-#SM"u[ayZosgJ:൭N('6kHQљ9F[l2d[kNn˷E檵yZndB$ ȇKP`~gW.JRzL:3hrJ+S-DXjSFi6(hԶ8 M,REaFHҰ/yX岃eTB&%JnQBcbЈ1V K4,BK!92B81-`%8X4T,dPEJX~<0YtK@dX  0R Ɣ 6 %g*Oʐ12҅j6J %Ke+J%QUvAU!L4SAfT!PEL~ S$/ª)QE&QRA z=0u׌.SnO}e98C F#< TɋA@_J4H48 UQc8o"~❟H^A!γBD>6ĤDJId YRQ$u7mA|21RNٰˇ~:X~}y@4(IDjBĀ @0 0R,GC' &bcFT6 Ch!H 6ߡduĪAAcUBS v )7T@7-:6q))ac#{n,21BQC g'űm9v愔Gc$ Rq",J|Xyd0D!n͡ ū7lhHZuU(Zj$)#eSF"%f"} >@tS{c3@- ǹk3`i-G>k ^kz ҈ R1V-3ck/g3HaI@@ڄs0߻;`f 9"R7@,".Ze^@LPjnaI DA@CzνD DPfvC}3fPAIeVo9^vsCdVɊ,Q J2,UREgC*4dx29dU1(4`RCF: H%S9y$!yܢIN8eёz6q;)Z4LRe?zD V##9zߧ}') +e8+_= f&#&|4>+9F m aMi%b{Ŷ7A01 ] a3w㥈Bf9^:jnQes`~a܌͛=v6)OC<d%USʊZ_{c׎\ۛcK QѓB(u]_tc, 9뗤4qô .Yyi@!² AbB6c~Ve_?*h"6 `4HA[#4oߝ/|> 296I!H&`ofv)3&da(~0xa=|na4EPpiEبVv14<>mЕ0 jd ;twE0e6-\n[ ! 0tQ5gNJ|&Wg  k7]6IFNGvhaV˱<D3 `=ӓocs0Cz/ՙ,% }dt:LDa2G{=ma,tHyNj`Eי'H{awXwB^j~&ɘL}@"#ZiqA9` ryB H!|!_r,B C~ڨaa cz_?IW_ kPQСfMK?{S|<|}鐚z>,ç?_ߛ!N'](+"Bl!n'mq,J wl5l_ha ~7>YȔ3D-*y]Tt9l=b'SJxyBϠB-#``!E8VE&WQtxtE꠯9s,!:(۾3f=4gUB`'gO|;_D-}O25_U';!cɖk=!Za^6®w(#?tug/j@Tz{5{xaOq<9Hj#פ8OWt^P ' ;9R/R 8{)邎?G[]])\)GtL'1Wm;F5A'= k$Iiol ֋-^,>*o^!~PHI@3 Y%@ —HR98k2DJˁc6.ikF%ݔ1T~4fv׭@j-Q]~YKD'2Z^B및gE^Cl$`T}Ѩ!Ռя4x'棺,^D?7pXyxǡ43!J'S9P5l-`/Qa-ONU%?/#IFfR4yAZGSkLƓY-vĽ7^)xB#dj A $Ŏ%yK3`,= =Sm }SpQ"! `Zm)]=c|ϗE>-waSmutHu61 gdĩ׾E~ޅ X ,b/ԄUΓ(%f A&CG7^zd;! )~{"y8P>Hg^^dp> Q bD?7`yPA=jo@n c*6! ZEбU:H kD֞jP"!.WaBN}ӝ!B UJT BQȠ ZJ \2B @&Bč P9*(D(p (u))"'lNSl,gVHf1FRr-xmAi49kz51b81LlS_lpo],KΤ ΖC|SܾL$KrQ1v>ǦѲ@)\y71g/ϓxpE( 4d >1<Ͼ`jjk v (X8Rj` Be&ن `~,:^kݻboMʧzt* <x*Z?ǫiZ-֔ePd F0gfW#YE@}gl>(V D1dfKgFb ZG۳ճS%Vf_0!)m6Ky%RS nVR [DE )y49t&o%yCͽ1\%=T h@ E",Eizz!(H66z57o6=mۗ8=dqf2 ʤd5fjou>ٷ܋p[12ه.oM{-.HA=7xխj+P5!XB&;Rq"}x#QJSQ 6ђ7ACIfn[^"x-M6cMLfdLj.XvN$`^ԻL[g10eʚסđ|E䄇y&}ʍ_\A:Vt-(҃D# "6ŋX 0-8j0ls 1Z )B8|/!>hn%זS{ Pzuc~ItEL~H^ 8"kP.UK$8 f+mfBʪ3;}]]q߶faavA;sۋ^|:݄syf.Wq|uлl'gNBDOo[Uڜ!66+:5@LpPfd ۠/6Ȩ 7΢B Ddfy<l qy7LKiaAFPO,q .@!n:-9y\\\N egq MY7JP NP% _뿞(,$j {z+_ Pt>~2WA v.& >Z D3YS0aOØjl0xC{Y0=O~v۞FCMwf!U( V* nNCAٱ;|t"Ձ2L\* &,M9A4Eju9DuP;NQ|E-.NM|vl'@||M0ђL'Ǖ)(*jj9$wf+^J<'O܌Ȳc_E~E uGO77| A" ٻf8f֐b?'5Ӷ WNpՔCqKz/r g#W ~p_"!"޿,Da k & m9zkJC:f7xtcNL=[@.oO is=klG;L۾ܧ߂c1Gɘ4S_C^^X4/PB?.PCQ)XQ{c?Lu=IIEphiZpGn)pBU$1-&@Rt5H7c?]6+uxm_ nOo/ص9F[})#au?TA/ HCR$Dy>ȟԨXG5fV5!GG؅L' 'gAC?FS٪DYxLv1*ddCubBHiS״( DːC~J߯ɼZwcCo>atˆlY:'g 1fRaAFu,8x<; RԩʃX"3QلK)DXCFŖwk,.@guH&|WVdRe#4Ъs\hj,-D0 G9ckRb1NL}G`ƒ>b\R0Uc7uyJu fx[ L}^;a'(-v fc'Jjciq76P\Y+˜Ҩ7`k&@ @+huS$^ϪϥCrt nk@yx-#⑻JywVWdiU 9NAJe{3eQ4EP ae -l>ϣ3W\L,B} lL$Q9oSWA7Y]E30@0 I_sp1q4T4kYM"`OFĆݼz;*ofF"k[ZyFHo Hk4ˢp9[E~#2ӻ5 Ky|$KFV8Lg;OҘ˓ OV9i-Rcx 1\:ꦣ mz> egnI :j Nk<:Rv =&^/#naZt3l*M,[_#~Ienٯ8[h 8o+a^tQ+:͆ى2-Փ"NVaaN"g)f>Z':aFLGO-X BP6AR܎:Z1dF8x6N&/kg;}7B5+Y?ٷ=9vu"ϓ?Ec:gCh7jh:' U@['_o ;kuP-K86L澀@ 4~h]it`Oܳj,?Gc #xL°|ڗU%L}g HE@'AsK3%r-?/11Ze,0#5ȱ3K vIaI4,q\`/z`be*;sTbBmGs@ }& ' 5kfT?;{[QOq#>w5I 0D$tt̝B< 2a8\ޙ;EHNZ~pMJ]PJ8z#U*nadǥ bH"!DeYa!G fRL'@ n$z V~VF*`ve\q YW`'~H$k9ŎMb9h4@t31%0&&ѿ+ Q5<20Dkgڒv存)Pw<&@dztek⣫Ҩd'Z?+C,a=ή*hmIrX"0<ȷ33- Va|Xm/ aGvc8)RE98!!4_Q!apę: Ў>V;mRwof W 5 v H\~ 5$v7gcҞTj#uY)+$IdA冢9`e8Wה@@ 1-<8hJoȽ/kДgB6f}Nh& }s~^p~SuKV]ˤfj}I"Dΐ5WjX$CC59@萲ݫn@`^~|B*R ^ϟxD="*%4WeO)%JdH:}?O6neR=S1pBЉmH4$;H2y8u|4?ۭZI_#< 0e$71߀`uH_YKkdj4s?1}B(8iBA>' c3^=4j.a^//i""0dƖOyC!e`E~!sdg#Iv@>pLTM~DX94*uאzH6c`ľ=S\S32issƞp񡨍 mU!.<jN0͑<$M\8A73]i u)[:=Ts+n/SsLt#Hdx1qILD,ae`˧&V:=`$2D"ؗd"@ 7 ju.aN{%A 7ϭ++L~iurj|,pGQUu7fVbF@9 D`2L܀JhN͈\&W."B6aH;AsҶ m^F8b= R6= 88NlAZێ3,掇; h|oA5?SNꌺ1/jbD2`TkIgr6 *ɲ9ll{4yC?#msIVMrpy_e]He'a2*(A KC9櫓tlʃCm--Cՠ)6H23ؙ|v_&<>H$x=~ 柾> ::$y=Z2Z+_K;T! xwnBLn‹5U%3Te1,8 [w/g!O9$(P٨|sAG3iK(iXcJ{ue_F!/ւ@ӣHG!i4PAfFf1U 9-U1F ^h쵸򴢫 'z??rLf_۟P% 0*:Glm3%"!Քȴnx=e\u}UT?g-|xu,L Q1T5?vi p뜠 #}fN~⢕1B;#{MA5W燝|+/(r"Q'J ?6k mU]/kqm޽?; y?P?AFl>N2d,;*!#1'U`h6ߧd55}ڈ:Cr&/o]YjJYCL===EM%Cxz(ia>wn!th6JK=剝(`Nst 'OJ ~Cښ&QDZm1儃;úm}8"03]Iu'3v,~ } {a< {V**Pxw Hj fSܾnWzgQTJ+"0| d67;+jCsO@0tK3B̢Gވ, [Pf4C/#NbB-tBDewh0\i!Zs ~35$b rf m4iL ([ =MƏDJ%<ٻ2 .<$nIgܽH2VGi7;iPB*}z GwG*O5ijaГ^!VT KOТt鄁1@Qz1 OX2ۋ=NY%;F[1еPDC`"zcNC(58e=gКJ+'A Y `S;GCS %&G=#SQOk-A5O϶Ok{29ľuӤ܎ ʼn@Dml$^lR]w?ʽyC`4@Me V=cTw%$Bݿp=˫ѵ߫&\ax:D%"*JӞf8*uGLap[L,∣\\0u6;( cu̓^Tې4"jW9Xw̢zrcxlDKv .~n,2eQjYF}n\v\%7h]0Q# UhF 1# 0EC%U5ϭʧ >B.E-𚨷7u/xbOڴB @N;9ġ0gD`hե.1_{LXETˊ- HeLվ1Q;j3<'(K$$,fGztqga'*eEx@,k& hR&f%ihRݤ#{ r>FtAi+9I%IaX;NM}seho>Hf8Ls]4y|b1sm'0j,2' p e?0}A7|HD~k)tQM b'ݸ4X sbc&S숚YR.@8t;cI}z_+ H~^Fw9>b!o\ŽꄑU.6g <6wAS} yKEI= ̭d"EH0c["AR+`6bB_g} x]uaunX@ )r ms̵4(:Xj Տ=75+|uYYAA`ŕSk:7/sE0]4>~#r|*r2UܡtV.S' J$W<RC"iA{挅[NƐ?F^3MD51mv4hUIit=3;Yw%+$+* wJo=#a;0"~rfnTl%g\]g_\\ k {*q<0Y[-<^&sIbMp4j|dsg+fh7'rdm]c8(5ܙt6}r9. 5~C45}JM#OൌjFȁ8F6p^euǝy,r҉zȋ |"2ec >4nϞs;f-]٢g80Dڛ ҂_P_z> `rO:x9P՗p)+ ļ2?lG\@T?JTb8db!@H tb<$!^w2Y2cf$h WG"#_wƄ=ix%@  1)ђﻕjw-, ==Ôa4T&Lc"g9iY";N|gv?GUV(tRo~w~^ Vl0LbaJⳊ`,gU`BE q7 |ւ4(hͣv64LJJl:oSߝkP`!1dl~Rj# C}) (Pu4ofֶc݉Yb|^@R M"cc ioG$U oM12[RLWؾ@zB[88'QKXH|\`4? z6A@q0fg5agr9ޔCRQwȻ6s"=uJQE#Ē ;ugB>d O|Ytvo\.AGQnZ۹J dpN!eq1:%*DIX7"㟈·6Buo yOwC`V3n4T=?أ~; 3jۈ)z,`56lқչ8lI¸}F? r9sRl6fad-:kZS=DSVeخ́O(5¸FpFlNȺkR)C؇FuQ*ɾ=N`Řdw8~ ]\mhMLQc{<L-ce'v*M 1j`8^ ^Ī!Б^ Ek Z&ֺ֒X~ SMko):7aYE"@h;bj2N;j I׆3KD':RQ}+ꂤ68donm<%, P>:QL7#6:*7]2@P~39-Ά4=+;|cs$Z/4[?y,o\ &-1K{h{#26mt㢤4dp ,e5:n #vqk+$ CoCyD !I.u?5Aec.BY)Iu3h;\+icb՘Q M֘27?,?&JCi) *l,)Qc'5ִl`}{☒gjbSǣ%93#(m0vݶXOTס/|U7h`YJ (3ompĠTvD0u  ڤ(|^10ι} w~ABĩ?~A0~/.V>>,Ow48ut;LsG~)P T̟ʧϊiyҰXWJc;7WVuEwYZ q{1htTjt0c\|T^ծa 2$y/3Jy–:*]Ŀ|3 Dmʲ6ko~.Z;dW[Q'GNcׂc6߮ >Hv?W~Wlfyh~y~O}DDLcgX[ hTwi۵%d#ZoÎx!MFf^HLJ//!Ɋ/*I*P,*1-V -eIm8Y-T1,UXQFB4BdTY9 TM@eHDң4>y@Dp6Q  RJ*Db-VVjm , CUY(a"QFMdS@TUQRThR-Ak TclYcjƨZ+hGD&Zp(QERz0PJThZQU*E*9"DEBP!@4-!L5TKIT5upzGfaY*uB`ѶtH(H My%hXqJZ &fR1W76ٕ~wy1(`B7BBWrr΢P`1 {.CI*J`jFrL6G1 u9)ڹ)A=.'+ac(aҮ.@X!|)H_Vt,&b&Jun ,YP3$I E_ԙeKmqi("N 0ÔYH\IL+9T `*J6Z.e NsYCLpI5Ё@ϖ).`yʼ"qT.EbA8) ;c=BfMD\u|O>M6?)3ߵEFE?d1]~>ތANjx2C]!b'c0 AǩP3]_q@i_: G8d7N#fde$˳icς9Lh h-ȼk l<5пƍ| V&pX9X9mrKޑZ/2hrC`ވc ӘCsLc8)P&AviPc^^9GS\ʆ}س6:̰ͱ3;:}Mxgzl8fW44Bdok`-j CڟFM40v} ba(h&LcYxF_xJF]aׂboKIQMLlkW:cRU~ƬNly}YOU.jc̦npAUFaS2KpB5L *J. 7 g30AT@kgP]3չ;(&v-/${ג[|pu58ۡ'ALߩNqv͠$🍵Er1O P} R, L5 92m .c |J)f)fȲ վѲ0L2X`yb |L4^F>n(da(F lMg"NOukK?u PFk ZP?'p&?3W[Ӥ&GO#U$¾%\N7cy}x@Ϸ 2E':<:fW'?FcNIT͊rjȆB͙)y~~eS{#z7:EddDCQ i1EctfNڿq޳rN"hQ41` rɦc~&G  KnuHHZhO,5oww58s1\rr=!Cʆ8&,M%]d?A'$@f G+Z>f^>j_b?_(?'}W'~=u+֐8BUB3i[-6L"iE ˵Pfr) 4MƯQm1oX O_.:Z[ B DPk%'$DMab2Xuvь7SD bbn9@F06 IdU Hg'v|}ubFBF!%05 ؒF5)L:5ʷn{ k!;T+;:vh ED`AڌNl7BVndhlk˓9 ٤('4Un lԘ 0>OPVF NZ"$~xnCEEj3Enh59+zdtYّ#)U ZS4vl:Wa1BiuTYw&5ݧUO*(4dA#U'ML(+~S(h7͊^K\HuaL$#v䊕>UJnP}mhp)$545b2bR3)4*XzF@tWa)heLxpj8\]GF@m٠4-4>cUHy,Ґ[=,tgH$U$]>@JAGT$^?k2F(ҫPOӶ1ƋDa$ p:0A H6D))n;#SYf08(->45asn!K,fVDVu5Z~5a& lo ÕJ'XV A!$HA0A>n|6MA.\lF.\Az(S!8§,Hyr8%S-~F=J'2AȻbnfnvKڙ2ZeZ𛘤tfԁd} ꦤ,}QfVe:`h}?JUՌJ͌ƪ]n=EJC hzCKk}da^!9bE+#!b hDaW48娠J$usqG>V$n+ ̕#F3 dX`tӞ<zyϒi$hVSÊG%$}2\N~^__O72IYP0,>" ʈ~!//Q1&jCM2 x|Ty:ޖL*0fk ۤIס:YUH"RVc fov̓c,/2+:4V3w$-_:o¶ 4AkiVJ|}qqfZ cyte:7&Zo]$6 3U%Yf QhKXݔZ&\iuZ87&0NLҕf 9 :u)B,Ȑ G +Q ȻJHdfCcj$oBy*sU!A1y0ҷ}i8d8L͎a:Amjat X2&㾉 ^Ww-}cheǝh)]9nN$H""z cl|z{Pj㳂v^z$L<׋:{)*x` =kN +Tto9q^D U $86uFSYkIni,c` ?MDb^z3eʯ[s &y mgg]iu{5 PqbϘLT"![J(re~ܶeu6+A3Э!d9 AfqI*d+3vm}| wTѢ# C|3(2t\l$|1vw7Pz|l}A憚eU!M/F:72P6Ys,ƒ7c؈# d^zc# #`yPn |mGC}Cފ{B$j# .C ]tA|= "zfN7cGY)lħO+' rD~hF9V;(~/MȽJZ&&m<L]iU-ԩVR==2=Ϫ;}K/wrU12Gq08T<;ɞJEBA ooP4s>lZj[!,)J,ҟFr01[ppdx< uV?60bE]U&z:ܞ1 @nb = }W+V@hL~iUS0/x!p>fϨohmyv);~g(TOJdS"m !"s0sؾ%}~l\0[|?jO6S@fU*CL9vBDE_c\.rꏝ0yۄXDAkŶM/*j)Hʈ^}] A! rQ%Pq:TdTngSIURU@ww\58|6&/FF_ddz4& +79 lTКٖ~+~6៵L. z&eJ!h; #}03< v%0t!M̈ϮB4o)° +gkI^R*DK@!~|Αy2O. r}KH5L?yc=sZ_gf&>Ub;U&̊Ցi8@gc& [ xm;lX SX |xKgeٴ'GUbWZ>dmg:YX0*@05ьIL Djj OV{d!X#x Hw#\ jE$rAӵ/=UGt=0D#zy6 tv N\qr8GM=ۆ6b]A4QERrD1" Pc?%Rڱdp#OӾ':,g{wFDo.&vjn qlahG{;LHM|3yy9$a0uuYvhDc5Fu nP8yb,^\hYyyI-{xr9D$d$k!!(hT DPh "F4Ib*@ J8^ӝ|9YuخNI ! b c Abs$9*<yxtuيA%dF43X&@{>a141M;'AiC9Q*Il@_'߱>b)pT^ mW}Ԓ:$A]Vv>ý #cK ñ/\]PhEOqpl~\J1ժc),&1$;D?z:H30tӒ #mFKo8. g%ur>ЄM\KxF/SZn Z?Q1Ga22h X;$?p]570:O.[$uuz)gH_RdP]%sH,Qm'HPe EFa01382mdQC#?eƞ_&6V~M7s.m?ޑ2fD}i 6b3=]ƙ{`"U0ߩVe~BaZ`jK)N }l,9l&C"biaapao[ bDY^lWr@?_rH ;9o̎#ӆS8t:/&P) '(_˜v|%'e얌Xk;x(y`yt9rA,!URBL6cxi˫>>iz{@~Xu EJoDjZZXJj)"I$PuIfc]ޔwTpI>ȓZk;Ip$);jv@%^̐b>g6ĕRјÄ.cz9κIBb84ˆc>jp;T ߷<ҹ=~?x*_\AA@~x C (D61 dCP(zM<jQWŝ.Ꙋ ,:]f+n` Ўb,dzǍ:κ@S,_i;1Mh?Ĵh!s5qdw}#bpxyCy4gȓ,BգRH{{w 20mv~Y̯#AC#ȑI$zx&C眹> E\qDoCNlv\yy=ܓK2k8^ HTf~`Ȍ,jY $,>|buȂe شEW&*PISV?ŭ|_W"Q k7{0:$x >~r诌SyK%P0b4*#Cu[;? 0U##D,M28V_-F-H[mu9Np-vPϴI^XA0 Z+&`+#F& uOKy_R ZZR`P'ڂ9ˬQ.ߤ1Cدͮ2@cnNMИ!x'3A!WEȅ!ev DaG?%@Ge3r YL`^ʗ<ԗ #Rt16(KW!jvf}d>>Zގ$ +薵Z@@>H8as c)~=aX~z\ɥ41qkz[%id!Jq%xh͢Kl]x3<:.\Ƈ4RkJ`zUD.LReS(YĈS+S,n6R ۠?QZɮޔIxCYS bQϺ8S{ D~h>~9ǽ!m9Cq*W8ǵ`S$6 Xbop93'Wvek :1YdR6*Y y'ֈɩ4tE BIMT?4QBnjwb ~gHg ɷ|rXfk Gݜ[1H ½nΈ5>.t9kl30!.BRS1ȖH**mXӁ`!XQGUsIGZPJENzKݍef f]9{1^ճB!a͋$fp> E0}J?>}*/tSC_|H9a0IЬ\%a&w.(Av=5ضzO×AWkz&W:ɕw;v*}泞35n9]"t6@d[QVKWjĢu\)/i6:"&2uPx%~ΕOSg??u{-}#:q~QQa47SG[ }5s3?~׽K{fK8B%y$%eX@m\9v^_(U#&R(o4KgA7x #k wVd(>t2%6F aZ9¦/# X\  nQ)zX%őa_k#et4{l4e taέ~e ra j =WSԎo+dW@dvD9+U|JM_EK>ZzŸn 2g踵:laUYGp>Me;7੅Uɔ@F (j`z-1ÞIBjDʸUOa)Ger~sQ߲ʿN*\F~SD%'9i[KvCVܸQTDD),5F!-V3`7 bO)܏dSi?Qc(Q_ d3rx+Ѱb@M.VYC yޓaԂXcٹgV^16J/7c̹] l1̊~,Hjqj&10IuO@ 1W>+ҭrMAh3@b2B ,Jj˽N*ӝ"c}D pf2Drru!ٺv_!ˀ:yU.HSrp11W-2Pue +g(Qyӟ N'=]0R3x|b$BNA D 9 (܇Z&e1s ](|!/ m3zɌG΁S$Jc 4Cc J  8 cH?y+t\zDͣ>ߕbبrV N- w F!~Y#qcNfJ%Swi޿f_,T68IcN|B^H1)y\ҝuh~Ng]Gu.w<2gjA9IUx,%): To9o;Gnۋy }bѥv,"-lx$v}bԵfAڇ]MQ*٪ ??STMC'\0':0m6qA@C+Bt"0O$Fď|TZk TcxR5.Ѿz/V U+,NҵcGx@Pij#ɌEcf(rS*H3٫X!L,9m:ͅa;tu~LqŮ0g"tW " n"tv%¨+(^&q*ӗCEQ30b<~$:P!<΄FGL#:L'N^l&=__yg>)y'8ςr^'gW8qkƸThh~JKGllC?ROIzzW뮫Z{:=+8IQÂՒl$kn7{ז=uɱKf&. $2dfdJ:8dҦNGC^$C\ =r0 JfF-QۓDvh%FDȭd8x8I٣ihGy=xF"=֎;?{>t1a%2cᆏ3:{w"OӬȸ##, i3G/$_zpxe9Є08'E>6>dk)s${2doOi)"S$Hƪd~.蟯:a[i~ϢthI$̡SO~|i@~[xCIee.now} ;$}*=Ri!n^aЀB>'7_^w<ӽ#򳑊f;w!H!Q+۫"{C'lc OBd<ޥ ٲl7")0.a*!c~R&\Y{?z^CY$9XD;zz-|uNCn wr˫< wҘ.c#*,Oǹ֚$LrNG=s˯}n5SmW}bq;' hg_rch9fĞnݼNռ[X)M}oHv| *u2*c\~NxhFh͸NP[yպq{$=àp0䍲CI9yWmLG!=Omg}<[đb"i蒀g*` F`M~4GnIŒFpUE"dO{@reAQjBP6A]aRI>JWD#q2:Jc&$Qr-UQm@>~,WB }!<~C]5Q)f6AG)N}Q6 d˞b Ooa,ΜÍkQ>e=,BC/dH "!F{0EnR 9/jQEfNFx6Hsn@o0oK1M ]>vIBmhy]>o.?_0l]y߯GC=߈| {9U9 AF_o A!$bTmPCR M!!;<׿>>χZ_=!aET$ T\JlI$ nj#e@nIUR)1iLCFM6Cq4?}[I+Zz(?Y(D50qb"(7iՈ 1>ED55!7aRWLgYb#"<Dk"#6M v0+Z2+(]q1%dnE+'v<2\Ĩq (UUV([I' с7i "0F"eD*hf$Ԛ`  $OoBhUUd ?lwyG:ӿh0G3(*+TQ?<3yv^|jJ9q[.yX.&J5`R+`ao 3$}YgQ!f5_wTSK(pl|vtT~xT8ӺUdx1b#O, K);,* =bqbׁӶ cD_x0uma!jDW/9ףeÝd>tUUB~tl N|%>wd>4|i j.c?G(&W[[zf7 /\[<h7X5O8iI5fJm 'xPpCO*,DäyC3 a6\32 ;fڴekrw37ӥk )HX0ȣ!G8Pԗ>59qqMf?S\~we=lDVV?ȔN%mKvխFs_*N/_zWr\@|ހP"o^/}J(86tKpDXu@+A3d,6 n pd;!ef2m.tBSyG9RA\=l9s! Բ>(H ^|tY>P:ұ@UI 2!g93(q-#}>owX5KXH{٢Qj?iMA6P)C!qWdJ $Aԁ4ZeAKoPS_ǦpnߥgbX?2_gl}?#1|>sndžY[׬MS~_D?6usO?I4iqч C|d2ka@?;1 ~#>$~oչfzyxqމN- ҒxiJH_召`#+gjO4"Gzv>وz/_g8a*s2b$&q(?ӯ87lBD_H9?NOa&iLȆ|zw!q//I1y%c"?f~?|F&!d #ZKrT',Xl>dZUo4Ms{Ƕ|f6>d}L㶍dNցQ}P+A |FY)tw -s_g@?]ΘR44Xz'Wm=ŸNW?3(f ;yz>Q, dX пڠ{@5ocSGÆ>d9#&6}j&j D&IH]u)L ~igܐyݐs9{6z/.e:neNʮn׶)*ŖW}GwOok'^C-?%|V@ut X>Rmro2OAW>Pgv % hD'p< yٯ}~P/:|sC8f?7O xs;wOX/?{=#o1<~x=|%t|5C*|f ļ Ym XX9\_M4][#L$ a `Izz9'>h[ǣ({elip p>/|YǞDCJ1sdOǎ$6Lo9nX05|}Rq`FcT5)Jz7UO#/f `n#AD Q!yL "EPz`_%@ Φ@ブO݃ml{a4)Hv Q :"]H';LˍB3{0t3A0l6T[֞@h y&:2oy.9kN6スb`c|gǣpõ?"v 0 ǁܵޞ 7$pnmD}{/+K5 Ox$uBLSPNt-5IL n#RV}L5>ݎ>iy=?C_="aO?'HƁO)+^@9@S3qCdc~}YJ`z( s^%#e;d;}M bHn0330 č KCWWdj\nf!pM՘xA{ u(0 #`h)cz0fp45ӧlc8M8@ԈmQ0dF6̘RWJ>(T%(*yhTQ`(ʀ: k;q<8 FHY# #Ayܐה^F̡ Rl)-(8uyF)9 0mqsY:q8Wu23~ķMV0qOTAQ#J$IӜ݃ѬnH+'79pM|mZ7ؙ̲ 5Pc(ek@fbr˅7c=V}_Wv\un^4X%^="AUסslV:c3_?}ƺehŠ|+l}Wb>_5N,yc~hKF!Ak?M .3kD]Ͱ I'$ء.pN ~l.9 =D1.KuȽBď+*+u~~K\L\;+<0 ~&&1 ^J>ϊs'l3;v˜+aiOї^a8p|-Ytg ߾h~`a&#rrlVƽyim,AINaK߸NMQ=f+i}ǔ]n%KG{Jfw{t!VQyaDT +λf)Gm|HrD Rz3LHnDh{Q(Cm}zk3N8mJdbU 6l("}y]*t|X.U>8{Ԁ疒3}L۱49;V4ar}ѯTuBN"EmMϔ\Z3'ʸ˂_(vT%U@]\9 bf^g367>A:%)^8 RP0#ɔNqO\fZcNu^'wG|%׫ 'aZΛ'[%*5VCҟ P4Z^'1Ϧp 1)\xP%ú<̜+¤7`[dM@Adf]R"^ĝЇEH^&u!i)#0Ǜ7˱*@Xp_&D%Eu5H (h E\u!K%P_:y.tѱ\{T,y뽾9az~=i¼SjBMIi,?10"&#Oi>#%5_'o& 7">R1z"`1i ~ῷݗ?_Çm_f2UoQE EQDEUE5U5%EE4TT|2!4ȕ$EUUUUU3ǘf -O&~^|qAAV M?{+y$%GtDÁ33 >mEj-Z5(lB֋mjTc*Vy$(2&$Rh%" d&Hf b `"Ky** i& 2d;LUQDQam U cg@s2}>'DK-3k9XއuYNTߏ< @ Fѹ$4q8Y3ۓ|I$xoXғ:S#Čh ǟebBm9/| j5On"w g9Nr>vm}[;CB$GOx7?X,wXٞ+`r0SVOGƄX1Hb*cn:,~bPMݾ1D<|(wDDC5jDR7T;|'au4SCc7_5ђkYh #y{^S+߫:Mc P~'_6煣U1)G98[? F-ao0٘g>=D2>~H!lQһ<9jp db/ ]T8=NP `:mL3Շ1 :?4!@]qS3zkx)ùwcgE$K@.Ԁiuc_}ԛ"( _#?'-'x=7I 9V H% bCUtoiL458uH0! hv 2)Z hjIL ,?-OHBGunӮk7׎-`<0Ar*! Cxǚ@xqS$1 mꃖt@77 '!"Q3͆M-ҟ;>!GlI:D|h5Cn'njdhQMcH6)[DJu&cD#Sۿ=DwuF:Ql6R‘-EސB)۽yxa+U{aGhzt+W=VQG)wLrq s륋aֻb7xpn9NsOqI\s3 o2` hn?4HtIt֢`p㳝zPyb"=>xߛϴH'Dk ڏhp#|*]H] Y).^l~0=KDBj91$NPt7rsvv;l" !!;{l-~^`_htG+Rh"]8Ir4R/zRnu!ɽru7UIr-t6j$Fz֮܃Sg[ͥʑŲ.[8D vj%BĪeA^[YTJNk4GybNmgO'7JgI5$7{ABPAVNNUJ/rAB3vt9ɜн5`sKD3d$Ip0%f4w/'ua[TLI/wCHQD,;#rL,D!*[1&;Yr4 gCD&4i $8եf"LE,bL { !jE"ґmmvih["w32&fCX 5dRT`zPNOJ*7s1R6'A8(Z%:kR\»ng6X_j/x\Djh F0(YfTK ) ,ꄖLg wG33w*Fr{-#HIRTJ :1AqM$m k4%IUsWlnΧYK[45Pox:Nu79td;kDJH0tޞHzZZve^pjw41nX֨Qxd\^8ә2D&»ɽS"eL2֑Z[ ٙtrJ!Nҽ]^\%T%e\Q dYe=03>?6 gc2@AJP' )űWu|ٚަm]%KֈVQB]%ciT˭- ͑)cO 5mɣ M86h{jj۪z h=VUiY+ilkm̒5`iۤ.hXb35{c5ΦxzU4Q?/!B/vxoҹC;dWm{XT%Z s!<_g,aj$)K}D4# X00Cz$}}=* RIbo ļE8cv 1b$)ac@d.A0*.emTg4Ͻ>S TT<{OG2Ʒ דMQgSp? cP%IC"ց0Br!3I#4:"tO~I`;60L tO5B- I>J}GHoBSftXfb&0V?6gWo8%Pa%Ā&8g/K۰h i"$ ÿp[Ckhp;j"Bщť%ڀ)kmY͵(1Mz$ *~ ;#+uӖ2^y/$I7 ldŦq<C"1SCTKYyU8uEq7'T91dh~($>8etGc?!=ddwnTÓ:+fV,DdZ&&y^e(^24EP` JFc(3Ծ8f^!vB{׫p;e,}=AGoִ}N85IE봒I$%$\0P5Ag]OL6OINFCaH2Hk I.w恑b|D:`" b;kZ5-qKŜp V윧 +5WiNNI7va1"b>`KҰ'?:Ѝ㱺]$]}wsaLI>.Zܤ ϙ0}Vn{c^1(1I^_O0jt;f2K50&!ꈓ!Wǣϓ  @0+;QuW>6|r{!hG`<();(C?.KN](66M!'f͞xy J %$sitw D(Cfsv9!Jd(|Yo<'SKMPTIA%s MXzH$/ ng>ʾ;5HMH%tG4"mߎ I*L]BR9-a!JV\gBpw<얀ʈQ$K]D8S|txdހ~0H󰑉"AI2FLŸ84@w DT{3xD9&+y<D4`'pܫg5A8jw5VrR2w'k8Bz9d)2#&tHV:6JM"4j⿃G=Ӌߛ|vݣꤝOod*du= "7<#v?jO3vnr,~2_4t *~ %2&oKA9G dI"w#@+ew}rv}(gAs1X\}ЅH0 Gy]k0#ʮ|Yddb($!H',/)N2odGH[:e9=@[V%}ᬺ"#9QoW hMzYh)mJDI @"eYyY~i~wI`o %KL#}W Qe,% ?B~f'olY0萾ݚ\SvgDz\{ӵ_jFW~<]6{v$W(gr줿DNI R]dX cڝyp:?])7@uJIIM%_ -KSZT+_Ɛ}rx&h꒑DQ>:r=96A9M4{ FSv)ޮ3\dr cҍC*h 6>\B)jZC FR:H :`c]"SL!\(㮿'lW=s"*HRH^ocaN!T55T9C$LzR\s|cI߯(†'/"NpU 42%(GegGg?:|yM'bLT$WYeam.7 65,YAP:uϫsQ?Cc3= ӂz)-HРGrXOk' JByT6ܿ=: &0Ib0n 9@ԩc2YA.첏I"Taq=LŬt1 GCY4Ƭ:$(9rSlۗw<pa-=Uu n胩{Xh]8fr՛强)98*f;cE/'2c H4LgaG VyEީB8JV&!f}ghpX )E 4u5ҖD7<]a[ӢI^3AR&ZJ_4ð{tbq>|3w'V!tU!cc8Vco#؎ (4\pQw\%kL2h$;ikm'@B7mw Ud)#,sHKdbЈtIwt&CW<8{βh(tu3b1ͦқxϵZҘjs1wVҨhP/8h3>8tNq]kԨ{3tbưN^`ݰ@.[A[ז:LRCaЬwwLn?q̃ NKhܱz3l~<0W魗g^_"Osv1#/Ϛ7M| 38wW{n'L2x=e&lS;MgKr [g0rሎ/%(+/ۦ(^]>=:ΈcՇjW諸ңRU#ɴA{}ѐݜiA>v ї4qsD0~nXZ$2,3LVbC1ǃI:ft^Aa 1F65fy"$Ng86'E`᳎{v[ߝd~#qj3X)҉FEq'ɓs69bgs&6G9kyuQ9w[ nHM*t:ˣTcHN,`Hsk_ /|>me<3Dd}*(N@"fDS":Co(kz'gHÞЊh==V1%)g</ɠ5IaX^J6*)^ HH:h3^JW2p=GaӶxz3b`}i/Smx(WxadMY],raj5֟1眶 qk Ճa p (uU wotj>'HtfKHm6OW,yvY1}Q~ Z'+K5Hz~΁)+puCSZs?)w,nh7nsAy% RspE'JNu+8ޢFƽX6y )PG-+1-|M>$:𜲔y(X1jg9^}82=L͔)Rͪ= ڴ+/OMKn y]⺩Ù|끋qA#4^[ғN/oBƈrf``Drb<LƇy7]sĉ&Tuc!=GJ+?s(tH B&Abi1K Jӂ Rǭ)otW =~\<:Š~\:B<@4'sѻEl6gU}j,/[;bWT%oO.Tॿ6.<)H|p80;B)LA\ .bY"Dy>ΟL[ٚR)1Y'ɠDӻX{ˮ\cby2>ͳ .)gyˉ4u蔖jr%Fݱ &5N$ QM5# 蜔:xΜR~l-ٚ2q͡Bh!Uq֊0Wwz^>*8:J2f2#Kb|/S{[Tx AսCU;[hVmkaʇˤY=$kn{)JqXOܺSažWKP6h<,;^)Q"rqccNp|61%o)5H_{ ^{.ҁ"s5@*-U;_$i˜E<uq?(ӇtLDnw\v;CBWm؟cvIDZ Mㄟ$vMzc!ͺmno tKOhO4_)ߟLGv=y܍͊Y˼cLֶfHZ A lēAo_ A G%\pl/nI4O)x)ކ ah5pZz RǞi i]~qV8@>O^j䄥sFHncqȰ"QCO~ ) j8'a 6* S^zQ,D?SNUTG=ѷr!}Bj: sH̦I⼇#}'}uyx!9d][g#5SbRfu49˃@'SD@p"LRVM։qZ UҕN>Dʕ) b4Q.֊ɭilO^ wցeg= 'Pt-ӄ$lgO6>AkAnwXm21VY)\N;Ǎv]=\ur~I^ L^AJhlhma4]`08⬙Չ dΐ^xgZׁD:BTCai:'fznP ǴA;<mr_P6pbb9k^c}i#m9)`l(Ɂ-gA͒r57aV" a5kPz`_ȇ".4\gc 'Hd `=eᏉAqffE"ZZ|Pvƒc?dT{ns vqP)t! ( ]Wo}OLREB%KEnl?~krO_"|m>Q-PyZ[ f|EBņ |\$A_ 7U,@b KB9MҊ eMPEIL'aP:SL.# ÑfMz9ƌm%U\eԙ -c?i8}?<IU}Fl|}\Hb~It5fkI$Tr:\QGz^6!@~wʇu87r~(ЎA8!NCWs稗?Ae f(CaQ 3u4p>ӓ oLBRnsommuhČ4Zdf&beL˔**CUA3SP!VyOYG҄sn8S׳0ԓ9.lyu=fd2Z^c!k!qt( ]ߢ&[23[`!)"b 8 L Ӹq F2yg( <ܙ /ԩB -|-d3ZW Eް>ĩfVZ '}3 M)( <|r|[*8_1%oR5u@8Xkٞ9t˻ ΃, *jB;O[6IHV cą~tE3%d!mX($˸św.i{k ;=ay{!Dp}C:LyP$޼ws)"Vw軙QT4Glc @QUA{EBTyP8 ! !XZm=Oy;vhZCyRh0짡LTX 6z=WPć P$A-aU6C =D3aWPF5P'e@L@&JE7p9A"g O% %Óq4H6u&Nd94J!-*ok8<;HHR&VNHSUSQIQA-4dHDF)u3@L%URULTMTQNA_F$fyf:}?N͌I 6~Of; G|}$~y7 #/:sY#A:#/bc`cxJiOm="l;,ީBQypj|/HpR d>LQ@[ 2M/.V (VF鰬D@ 1-=(`g k8ibrfw5<8m^&k<~~w=*,%=A2#FomIk@t|7M!%91$->O0$ Z8sDQQF04Hnʪ,_i* 0" Z;7(͜=[ҊZ_?5o*,SD k MLJԪD42--<$ SPm(K$ (UB6B`fq b8oT0jLb'# g.Aږb[_d$2Q>TFYL(!wFI]ɜpHm$rrkb`D f9+wtz_QLTI (f! 4H/?^ wSOnv֞%.Ckųɾ < q*r*2 :([V$]RaO>^z:n>7$7YCzN#Yغ,ԍwEĈVEZ{<޻Qu 1M#Y@&MUCo}Vz>ajo39GNP<y߻dzT3K$A47sy0/8E GkwуͨdVhұVWz9dmj \,V3;wp2'[cWA8{*_Gm_5Q0jy|S`?mGIۙU @J0vD~Q)?Ba6%ФeITbM̠̲1G?' g.Y` LiH =4 2JA9Qɔ2eB:u.-\̶I+Y#]3RҖ;U.fZosSR u̎QUQaV(~!q6pyODjc!)(s<73C{B!şiQ_2܃2/~?+!>S=GנZ>5:iひjgǒ~_>\X89_qABݢ׺g߃,q{ܪ?_`q3b(_ ar߄Ya_Β-SNcI$z?xݨp¯aJT0C'2<ꬆ }d"'Oxzz¿Z' Շ~F(=| c9cdG|>+,U1A,L7>^p&Jx gNyנ9r<"a?w׋j jJ[eD+iATZjEA$pvPބu|D͌"|2GrAkbM 8T*q?WƂ ƚ/132 LDDd`RDA2I+R tx]da֦WPRIb?e.Ogz;s4Y^"G?2"xC엯ӯnr G^.YrC[:W WfX^1D\F Arی2@pJ`8s> p8\M]wA< s>9*9.SH떧lFjs5fJ-ѧszgްrOD^Vw~|yeȱs~|J#ZJh`+ަ,(LzeArg)à</|2#Cv6}q+X=糩ƹΩ(q|:y UeWPՀ 6ޝy/vL@CsN+Q9/wa,b TFGCΑ]}~'<λW۬)pќ ]8g5?+RHX gesrx 5 E` ?>{wNkR^F/Ͻٻ&i N9wRu6 sxJ֬/f \W ^֟{rT=W7;We HB:kS7L91H&u(1 ZD8TqCo_Mng!u D8@D Ȋ3)wVz`h]8Bަ΃hmuH߃ɦ0W*p$pUX钡~z ;LbJXdyI*HMF$7LSu**X'^&r;ڌfd+ZN) ®ĈEwf:sPqwGp 3Hzi RG~ZrCA>ZP[hwt܈7ZŹ7_/Ez)Fq~mE)L %rfo緞|d-{bg+N>5M9<(F8=G"ϾӅR^?vctPB*8:DV:Ku􌗳~=b!شph[(e^nd::R[1 Y3Fd&T O">5Szkޖ=ϣͻCjT4d(ҳC6 vu[#^~u81 zwߪK"zؑ`Cp-EGT߶;q =0I v/Bq{ ٓ;<>hH*/h0>Y!(pjo`=+cY2+C=HX`$vn+\\Dk>/{QG *!Qf9\QUo_"?:OC1G0SR1&\Kֳw7c_> qi,n++hC .Nq{4h(DobVsחqYq6lݻ0CRJPdQg0ҲKZK췂)B^%Qǜ}ovn~MZ 9 a:k!t=+ud['Ln#sy+ (6THEコ׹Kڰ1g 8"`K/k>|Z<>!ug6]؇ԼDt yf:?o72CdPؽ#H-"9zS 3s"Q/c}ŮNwfu$~ex~1qfnW̮@\W;1)>y8OfC}Ngs禒0nE-kC>|GM!䢥}A1 bp- $@r) S"/qiN;yc)Zm'M qJ%$ҕ$DNxޯzC=uL Z$8hq! ~m;˝39yΨ- 0 LN7|M>&8q48]y~HHHJ+~;Ԑ`B>m'n/|%NB*bur:v?Ɉ ##`Lxm9OnsllCN 8`pƹ;`2ӞVk{Hοf~v8 -ɕ^(c %}S>jGxD0raEMaFOdN}NFH =HʱdQ;!Ff| =:ȸsMk"ebl]@ZB?{NL3PB^7W)G(>v5)-Bur`,RB~^yۨq VdxG)IrWkNr/ể'0Vū >48,0A(Y;*^7Cl[&,L^$գΥ!gJ_4N@Xo0dyZxi~WcȃVgbU˭`q\i띺I-t: /_,ObZ簄m\Ȳz(r})ў=w7^s+|:p `7 Ԏ[A/2/~NUy*>ZҵjH]W.%sKuH(ɀJ.֪npR(0 յ7نzN-%9< 3Ӝ/2’Zv"cZ#h~n c&"2{hJVT#ser,D L d[v\de{x뉾hMdTXk*bɤU[MDV \=z 9Tx;qϾpوtA'Tč'>=$ 'd$wDE׀LDRz1Gϥ"6=3 U[ܔe:)6"8aŁ+l[T3Sb8[ FHDYnpўֶ+;3ҮgMή.QaA)ǯi93|Ј蹻ىF:;s ]Toyv={ `H)\;c4jLή{4QAFKeLԒ0t"@AIdk-55g 6V[+Z+F!pm^; }=pw3;B0,BFO/[`SµiKƮ<>'ME_SlA(5;o3OZe[FB},  t+;so3lEbx;dHթiR4^5^{@ 16ݺ3\Dƣ-u]MQDG ?&~[s=Uk6x`B8gVoXh 5ѹ@nϏGO 4󄂹ޮw#S ҆G$V߈l4琤 _e6' y$yڙK}`x[}:<>?2wj|2F)v}û.y蒏, SXb'vS̚PjOI:*:vwu ȴ{2]]p˽/g\Ǣ 2Pjw=VqLXKԲ"יe̸f>:}x[]IHK>Vύ#L؞:<dү-,Lvo)Ac(]{nmtǂC|/eFmT^{ƊsFt/JprehcⳌפrmbCpR< ס89)wiZ|4*sry0ꎧP!kJgtwE K6qyU[z])}ˮ{Pd+m_1Vs4@?qBĪhO܌`%9Hltn{|ScW0M8  39/D.O0iȪv3} *6^ma;^sT ւ15ږOCO`؜9:@,HR-#/PTʂ~kK#%!}s-0վ.-O%QC~)vcw9'/?E"IG6b['Sź?)2V+UdqP3R#VeL m ̕sC`K vgςu53ڈV״ ~\_&nXBT(F:=B۷n\,yE;!6L*UUmJ Fhֲ[eZI$A)T,#`~vG?)Wź`Bܘ'Nntk wE:Čv) o9))~U;~4JTj*U 66J*,k,5Q`QD_$0En3["*$є2yj.JLGpq z˔>[}|^s6t9zW?|<֐;JgׯXއ6(I7gn;k l"{}^=9XCA_Ab0H &e*;ՄFڊJE/ VABD?\gёfޫl3w q[s8ۓư7 gZ):`|5? ߼'0w-BԎ֯`ݳC ~UU~̠~p0gEl Lɷ*Úp{Ӱezcyл7HD42C4<9¥j ]hA0ˋN/ ;|Z@4RZ~b*|U=!#.o˪J33g)l[ m>q5!?I}8.keVt!9zڪXwBmRB8^>=ww?OuFW9 zjѭ({Z {-7VaE7w2^b^r`y/aQ~}۫DL_10U)4O`~/C]}b#.qANWl`viw?:7 s3z^ܞ+oZɅDf /nE9LkG!  0:=DZBi>`?gzG 9f&s *1jCf[J w\hQӠAV}P͍ w*]>B)8k e sJ~ ]@~#V 9;.8:<պM>(mSBnSn0 72|[3H2LbWTL[R 0k*ޠ=~^r?oK_K( P$}2^hEa'_8 PŭUza0yA17Y8}gn]Y鯠֪F(Y-g.ρX Pxw'Ds+0Ms/ *z:1UO:3M`=.w"^ھjC܅{WW+|7Ŝ&ugdK* pQ_hd{؄BX7^D]OEJsYZWS87ztKkj=]8z@h`{xhqٳL)̈́w)٨fBWٯsV:/]Vġ>g>`2M G*6 TM-cc-v,\v$qi4a㑄,waP<E."U\'ArP&"~APsГ>ڑZ6!\iC7Nkl 4dVHcvc|iYK̝6{NMx+U΍5ar pfDz9ih]zˤ=ǻɂX&Q]=٦uԺHe#R2aä}铻t6&CK7jG0i]R(7cj17ч} }r}tg]@SKyuwΏ';ҡ |;4 hFss݌/O`[TԒ-om`sg a\e[x<{X839SoukVwd.p 73}[!o$0=vs p=W(N<[z\ό*~`kS/jӋeG2057yqhEXqHN@^;HXw^S|K`B ~$ LڕDl]V/"ƹcA祹. 4I{pSgʯYc*󂦼wj.r^Lb .:A\nNRnV{+^txDžB."SMXc\)KhNLE(>=:chE.b>oc"ŠgbCPN2'l}c}EH1yn 2LǤ"FX\>ʛ,?OhfHqmg{"I\MXR/Z]"BHkgh(uR>Fr9t]̝ǓVwdm5IeqJ]t^I ؽ8z m{ez$؟Enܼ^'ס*`>EL #5\u;-t̟yr! 4%tFrXh9|n}(YMa9}fNbBPϳ,;Qw| "exher[T mݫ Ck&,'GigW7q#d ]7Ʌ;ϥ'v˃= |6h r,Wǹ y˴1?\c+%fշ["$Su(|=){!װ-Go&y'XgHscjQ lcLp;NmbYLo ϖťi{kl!%]v:.R7jǿШ&HE$SK*+VmmVXZUJRJYf]w}̾e?>9>/݉}UQZ}Щn_.\`CH #%(`T+( a Aݶq OoL=vΑz΂)6}1@(D=` ٝL%DT)'et]kiR6mЖ&g4[^9/ 8dlIOCޤ8ͺz1DŠ > 0hg$ ‹s낯'{M6#prf H.'݈/&H:$~@D7ގ'4VB㜱L6|;}ߖ7=2,`hJ4Ev׃\(% m3߾ 4+W0w\ _#E+|Gz[8Aa9Ti۵sRv7ʼn ;RpiW!7\ijWE  Vz^=7 |RM_%Y4'yF|R2O#6ynU4p Q{uδvKh =,U!ʹ}*̽{D~iAF3RH=F#-/B*сGo#3U̷VǼ@+:,5O¼~ѫjX[WSa~ r!idlցu_d@ۆ7 1y{B'asuIT$ Є)ELsWݯOO(0?؞_!^w'ݑET~[*\\5smq@3} 3uG[畼ȔW DczUJsz+ODHgҲۍ|5ʮpI0?9ݽ㯨WڞhW p!7tVo)'ݦ~[fis-+ur>#E~"ƟP{|c> s*'$C~ȑ4xVs>(goU xB W晶.=e?3ѬxGun44(8L|Sq PǧgH:Jn}i};!?vu# ]?c1RC> _G\D:lj}نGKK{N#eCmLg3R%No v8b5_xYnX% i|چ2?Ɋw C&^yW]򄇥b2,͗4s-Sp<>vR6WsrIc'Cu{~Q;4ǑJa:rJׯjz}ro!T=jth{xѹwvmYsBf6-FKwuRmi9~!I_g$r\ yrK/npL`v B8bGpLXYⷵ͡MS-4t᳀4ZsjToqG:}?)zaar;z1Ñw y<_&xՒp' Fp j*e*G(-;~IK{@Wow^U* V0nh^+kI\n{je[Kg@8:UPiDQУ-1sx't= 5Th> &1%&_ށ/ afeޓ{3UGE ّ'^x|IXn'R=o8P-kYy6n1{(TfMC;Zhjs+1Ӳ6<{$j2եsyH͹|YC|׉ɘ3ߵTX[ }*]otKbYKOάOq="~wecZ ڰ8.t[KqeM߰|걋( [}nz69@*:īX>3+>Jgy\-NwL 7v6nhH9.Oq?eJ~[WN.#4>9\㒇RY ǯ}얇 tЀT'vx4<{ߗM~#Gh(p8e_y C)=GO>LK5?>zC#ԴIp"~:wG&[#xU )Tn+7}3. ^9{;Ei3?DՑ%o}_G c8]"~6AHWv#sCKڨ e]VW;^+^šPA3*0':=jkI `-+,jD]m!fQA[Å+̗'#HX낣')LF#50*QƘ<ь25SZǢp1~XهmH7ˇ%{6` qʵQ~+rIHh^G#:#b? }A {a EB gaܫ8mG;fY)fnc8N[͖Uw:wDS GxA6ZnO8 [GoD*< 5 'rMU C|^V^z| ?4qlArV ˅=ގB]ch' O1ƦҌ:=_NF6F50,KRY@;BYbhGb+"!3g^a˒^ںR%c%)5 ԶHk8V)#*9(p @me4P[y@X ~KY{d?k.άt+'go:W{ߒ@1.+6qn&tٞ1 B򂚃u}@5{1#aqjE:a+=$rIva:!Ų|ޏf"'LS cP1z}sW*5cQz~'g82{gM21Q4fтӆ(ord)K76<8I^*Y8Z}dN@)H&b+#Kq:޲C,Y[ Dk_5󞏨tO4GskA/w0쭤"ru&ʼnxqp?WOz}@6T?inzeyOFہ3ַ+t¥Wpr2f7..Y.JHzҲX<]DPNZN (Jm ' 37:zQ`2nx SL$߼!q`D{) ңq<( W=("6!l#≕O_5²Y+j2yʭ|29KOLW{я| 8$fZ= 9][֧pA1fέ:}hW'ǃ]/D*qr*fY&Yg%_h{+3n;_w [KrYY.[ɬ'^.CkjƮv|K L8 ~X~hgqB 9ךּ\F7hMA.%-F,\A@n/ 10)<ξ!Z ^{jC=W!n6.%]A ј O8L1)zOt(u9&7.AkѪ)Lh56pNG1苑ޅ9 ?#!1ʼݎq5P^QE?7Ċjp..`;ǓP]RsY&C jjA!_CW{N b~n?kԦBkon3\M@*iZz'/T^rk4e! x>u w%YkcC^شy'U}P]ЮWe6_;tpv|(*=ї$Ӛؿэry'<;ηTj6NrMI7(R6. F0v96x+Mc(b+8zTqVyIjy/[6΍ĞÄkaTh!9ʎ+GXGYɚ B-.&D7̪|@zǒkОQb*"u>IW ,3=hVh{F|ƣ&,7<3Qac'S(O&?B[&]^ :$ qxn~&)"z6 /[q׹h7#,~sݳgxSKm~!Cwvl#ӳ%RL:g6fmO{g~GޙO:0Ί=/hЩB \{k2i=lZE^L7h>Zl_d9l~ܓ$7bN-kjNj,NAxEԧ+R@rWsc2?cgװXu>)!Un+Ub&Ul j*sOѠtq9|yAPrzL;rw؄݋_uoc@N'| ] -'ysIPΎF֒a))u@pRL\qƦR@ ^qf' n Aut! )\|Kk_#=ƗpVZ-U1G.s w{nmOІy\RnY]BvXaMWhhsؼKTmwGaU4 d!:罴&(gQH3'N믺;\p}7y |3Nȟ2LyAaesM4Տà98r7mktLN ~j{ƉC3;a=ٳLz|=^<wŮR>%jqd" l;gϛ3Y)2װ:jfq'>fFl깐f)O3*DJ} N[ĽLnz#տK޼wж0DQic)[VJZV5**NșC&sﻣDA$# I*, *3k{c<'ai#Ď5!7E,X:L89fFa\[ = =h e/f[ѕ ]d^.~q< [ , >C0BGʿh~~rM4aߢ+L`NKXA oJծ)%VWvf1WV=}=|U_wOyzކJÕ c'k7]N!ddv;&; wA[.Mrr@ql;\?#eό{_qO)TnzqFh=]+Q DU4m0v#i@S;C_f'EIכ?7v7Ǒ(R1R\{@B+g;.4 -Dl>|Ϲ޾sD|"_=m1j\T%np5cyeb`]T\Ӷվ $x|+/n>*4;$lmQmm`o@ 7qל8z0P qUKz\Du^Aqlsw[;26;*o{>T_u^f Xv:*g=UtK)L^)?9\"{Ul}5I D|;nYǟ".#zmx܎8?E8A5)>7l9+H2DF.HJUBdW\Urke/sgw.-}15= !(ו&Ԛ}Wx2L'cgv z4fa~{>Vxz~45hZp4rx%e2R5L 8C+u+Wzօa*UZ%NtdRĆ w?~E,jů>u۲[]/]& w7.d9m04vN!~qRߧ^d9z/ᵨ{QLϛqӫzr:.,/u- 7& cKAc+U vP<NJM2/2 <#G\򶺾ĦTa21ԡЋ Fw|>Ը״s 8FO(SS{}94osk2FXX {%z_=:y˽Sº|5'8g/FenOQ= ,fFB,9c;7Yp(;{O^77Yϝc?n紸s硄*JI7>|_cGO6$ҏ} /Yr:/JR @UY.n' }syѻqDCzȌmCŋ5B?OtXG/3+V^HB1R,D$֑Xʡgc#mD1:+wJ^Pa^cOaQ_y(J^013\"%ʠ>_^}>cNquʌ}mVkCFwQ-W|&wk.v@%oq7wS0(-H$: U8C4Jy79Ӌ<;sFzvB3ɸXjlNe "IA֝6=LwLOy}omK6pC29tښd֙{y@t_8Ov `q,E[+Aqt͹RDlȇk`w燵ۨY(^c!=?ZLʈjC h;^&ZUY|_ wUif;쵗n: pm Uz};&l}੝EՀ|4L(|R"Xu:@{mˆ0`U&F_EY(V w\,,P| ֓qE!D>U]tM՟E7GS(C=MW[xҤ3fݮe鴁#Y9w#R\&DZZ-Z+m+mFmiZ-iVz~]Y d"aB)fNpw+RuS,=0:Cjbk t!֍EK a梦p fQC\ p1B#k9{"ЩVN*Pֽ:'2o wt j\,ڮgI e"!>9E(JbNGK+Ƚ$;F=NqxW]B!ʛŚ<&mrרҕz(c Ŏ/-{J`x5˶Ѹ/ѿ|[O;m8أ/W?<Ж\9gyKwk|mB]4%u ȡ uPY_x6h<&gGpSɚ sJэq֩.k⨹Q{v83Sk# ڣ(ti\̖5h<]О5\Bp'hMإ O8&s؆w~{M*.|H` x󑻌ɄZ-{ѷ`ZҒ75w%lg0+/>GW/BDž ``}6vPp&Px|P,;O% sgh~T$r~%w% g4>_c%;%2{}6F%.t&S`x)X2ډmO֞%3V?a㏞.#[R4I!m̘W-7\;>^ɜ[6;ʫRopiK}[(~XBِՎ\Hn(i-J(מ3[0Yy%YQqAC&ݷ޳9g*Bp8< & ~[v8X]+ڳT tS%[ywýKO~eXɬZ0!l-XymR  `D(}0S`JiHWXf U؈;`oZ׻E갏Oe{s޷cdK[c-3K"rY}&Ƽ"[{`6;lve;l^{qzC>~X`>*)R7Tۜ뱞~.@>OK^d?2 >nUf0\u0S$wn*@Dq@…f|pvOuʅL#sK!Qf٦.# ̑Nw~ rt&}zi\hO^pO+&#V+M1JM"W`}Axm8y[.86[6ssţ4.H{"xj'x؋r햳;Fͭhmػm:P_0xHj榝 0)3G%-u{! kUwQlڦR 1n=yS2Z'vSHӹMHGzJV9:ukeqX'P{夫h8W#+~<_pOѬ~k=Xu Ѭ9uf9w .9鍼 xOI ` PawH#Uè b~7}q8(*p˜pft"v2z9pDߣȏΘяEg{II{rq]ݺ7oy>bQjDClL! y8c^h4 Za# hЬU[xU*i DQ,I<&ug=^gWO%#X,ch+uAΊ!iO- ErJнMMY9y@GKR|g=vhP8z]JnLj]9-+8Ao))˴($gF7-z4:%Kɳvc5Zxˀhf.!DZޗ ׾$2X I̖m W[SF7l7(J|\CΝd=r3@Zl֠8)q:^" aUwq0@V*TtYQM^r*xF\IRL"1b_%JNEPҼ//UW w8(m']cX܎is^oy)c8!}-E~x7{v0P\;A܋~a7$0uAn¦}t*WonWy<8Gkg!JBGP8.Q];dJrf6pC6 vS_`7 DkkmkmVRkZ[Lafar[WA\˶1DFH!i`I IXD$B[ lS4Yk"sC؃XKFɕR<|-a?TcB <6)7{䦩ӚvNSu8tp~۱qgcIJ9EuG~jAٵ"r]ogbP'6'#bXD\̊t5`̖~P]I@ژ"T O4;-E p\A{;W2hqkL=QW< xH #=*wKz+˔= sWU)8jBŬ:awc@ VL}8_'\ :IY@ ¥*`Ng7W>gwv+Ĵjζ,ҞE7̾H\M E=Z@6fT.q }\_Mwj1݆FWS$<"y(0K[Z̴-h1Y 2 cIP!6a SNC<2ˁS{?DTE6>G *uch:6Ñ ]ˁF.B-%0˴ O=\ *zzXt_lrq"WISMD=y6SuS389QKǏ;㪖EgWo]-28 .3  wz&.h׎"$J` g !u90BUp{mh !*[2HEA+:.$kQ=/\ ,Z_έso43&ů!i]q*sU9ɞ=Xpnj>M u4E ^ ,n1GL1rd:DfiM k#sn*zDY:{c g"ϜU! ]Rԟ{^B)Vl'-[NLw}t|kܛc?7l+LM_AdKwH!Pe,\@=sR(KBby*s_o>T߳6v{$pq'gba :C3 nPlN;L[o\bw9ڄbluHAj]}~*7= :ui0,4X$Zy^2V ^AjfA9M֊8@$|IAmMY\)r-^N7x(|^'6i(pDWh'nׂ X&'@'DÃwG$č$˚ XP39M8$JNCt;QbjJ Uo=,>]Iy{[ȹp6r ԽR'{k@ۏ8E M?= ԣqÅ?klq4Pn8?9a&\N@d$l"`=L)@i^Vq6q}UUmZez$ %Lo/4gZ{#säRR( 0t't^Y=®T䈞a+q4(9KywԜ鸡bJzk۫N{'0 L e *&.(Y;{z@mԴY.k6_S=w!*Y(Hq=껓a衵 [ePn{O^YLD>qCGpڃhxU|9-[Uj56VTjmj'>iS} ub &"Bd\zdR,ۥc^78\q\XO~V>F,CfF-ߚ,Pr7ZTe bk-1bVxi+_sj{n8ìMJuEn 1{ŭڢ V9 TaE#f+P/D\-`({8?u|,Y `S=AQƈü9&qϵkɽ6@ {ܞnZn#e8 싯*q "Mħy7Ŏiw8zw&#Dsl7\6p=OWktfٰx TMhr=}qg&_b,-|^3).*WTkc/J#y}qg'icF+fOYzMg&mq̧T8@$7f8Mm.ޗe8$xa:04&UPe^7:!5#/Oe-]I WOsxzsXݻPd;hHjIOSxiH9g05<*qtAdx 5˂+stϡD{,MzOu`y&:,k)5F#˗u1!JƃC%.u6F1\,{sx;gnqE@z{$RާXg'@- 02"*>җrX؂I-+ ɽszj BIv95}7:p~og Ձ+\с HpIy$^HE`5xس}\e\G EVDtZ0Mm:ou/vI՘0rJ0I~Ym،yGl kķ @Bm 1:u}ge;= X}sc׉(ҊNZ3aw޿y3'Eҟr7kU꒖d/ ?Zޘz3L ˑa>`mEMSЯFRpMV(xF][a^NG]O =>=[%*sU=SeȬ[6h'djwrCe*-FĻC'._Aՠ dC2{tǂVw!DCR풲!C<8JZG"7^Ə $n5ϼYiH{:'`;@TL=fWj0De85vCR,(&5'di~,ݔخBϣl=q<#X&J,]IH 385 -=HDM|"6+m6/ksiI8d>_K/XmTx\Vk䙷eANuiGitS_x|6DJ=3ܿPNҁ$5*> CstfAc47W$Iˏ{ ۈS5jby-q=aL;׾Sz皦l~|3Sp i4g*n ~j_8AJx2Nt64.!k7'6sӥ!ksPd.٘2V)A5=--PAI;_YǼ ޑm~$tΖ6S9/0t*I7dE缧p~W-bߞn0r); V]kA'yO6%>]v|Eɂ^.BؤZqo΃"nNo){`wcqڡ8Em:媻Πz7gpTE>M_G2\2px(W+87r%fzǒ?kUw쫁}նtzZ;?"p(c'y/^%a 3E)xH2.ljQ UU#OR!=~^oҲkg @S;c њA,q=I0vdXoo]E~w[C= ȵǕXohfۗ -I@9EZ?+3X)QIz7ylZ)s,iӍHc7CݖEtԆͫ2 JqNg+ ;;TS}Qo-υ:Yg#VC.kc "=`W|Gbhx!X'CIhdۭƨo? 6GWbp)!wtֆ-1;<(A-qBeۍp$DڄETQ*"uNyp3}=dvJTtJ:t,xժ1t4ȹWQ #ᡦ\:]mo5nfw:I&~`Z0bYODr:*L6$tW=ĝ;,m %iK̾4OeDzjCOEđ jxNg85m1r?'~+n6]|aw `HwT}uTv` rz7;۞n:/*y g(.M ~<%C23=\>(\<\d5298n?- g:%j]pFc\/yٯV|*v}QR]hJke("Զ%uꪒ:PқhУkt90wˣ0=o[c!Y @"דF]Sz":WJH||W۪ {IR1=w.%$ZG&&uO/#V3h  omO(fc(geç,F [Wёq>}DaA=L-PI ;#fG, \th&P[cඔf9.V{5((T. BVɖV8*PH$G3iԑL-.Xku_HFVX?$O&G&yA`kjk:d>ި\:Ϲ;+Y<ڹˆBʏ T!kH8.4cW0gdJC"yW2J6n_w# `0#뭍r}3r*J7hy+,T\clI1e8Ӓ$-,76Q(^ew/y5 cg_I ʹetLČ V)LJ  > a+&qdl)zE &_'+"q-6`$x@sקL> }3xC i[l ւ[tgv5(PRT).xBa(rpwS2I(ֿC*4E")`x~0$w^[@Zww='H&Y4!HX@QdSa@)Ϧ=>}ğ:F:h"Mz5rrMO5U*+,ɑrIx' ^؅q =Ʒ\jقy1d${+ITg%$)2dN5? CL㗣glAOS-Xq7>\0"aV0"j$$5LI@_\Rb%i "`k׏FP4*Qh0{)d"/ri|LH $䎎IPuq|}.݇H}9JmCײ9L @Ĉ'~ jWzu)B& W:/i:Oӎ*~{/daf:3l )PO O^ks c 8BMcB$ ,[|Ef>u·'iZvZ∢g T!ݴ3"Z&o 0PG/X F3.9m9ڧR`d`*>/âE-ʟ_=_#vlx1+p*rG(s/]옌(C@/Jz\5#=JgpIFF[eVPͿKTJٶ @ѶF킊R!sl.B鐏p p:eV~L gkvcAz{DZvD9.:p| `c콈,!0#`FGz];w#] ).3~V!}60erYP!T[|>xvTdἠG30̤nؿ7ڝ{W>A"E)qڑ*=WM!E:+ Zq-')[RCGb dtM N@I2(L܋i(dȿHX'?{h0)ގP m%ء{/R;lPȧt ON*>~97o޴Q sM:-e+DDRO[N{v$5`~D$wιh&؄_?}%w9*DWd>? !$a1o/})3?DW~@yV?BGVtApAѩDyQ Ac%Fǻ ue~9/xcÛ)l9H ktP7Cc0fAH<]4T+~Uif%Bdz>N{6' H `QГ?LmIK ҡր-`=>$;!oHۄ?%6FĐ W,?6=[5e#B}_^s< (6Z: >'}!oKqIGY7|V3J[X0?hZ&VaGf/eПRhܾ"*|`f%qpaF H$%,M FcFq 8PIǙvAqP&[ I?r5ڰDyz(*\~NW5:S&ͦ2iJ`bJN ӤǷͽS]"vdf"':9߼pe2l @>X&"~%A/' Y-~2~6~k_#! Z"o_59p3+ iTPNa1 E IRQ5BNO8ք›0" {cKtDA\&Ry T({ >ïo~DKJ_{xc_KεT"$!mK :mñ,ck}  [Eh :,.#<4 `V$`ZS#h&?fuTp5c Zb*FD`%KyI$i@7u2tx˱.aQ8FDǺU{$ZhK9`% "Be >?ho]9'Bz=^+"HgkC.vN?v4Ii][˗u5kUc32zl$ ]b u}L$д{Lf1JEA"2Z坽С{:#olí2!g7SL/n~v`N}rcʵXѾvAˤoMvS`gPx>~HJK˽)zf^g-6< eOCK,t—?M4& `iuI[SFtOd,YvfW$I݁ڻU [r@Fy8:}1異҉áM#J CH5@)M PP PPR ETCKJ JDA2 PAA@PHRKH ҭ*4L-4 Q IJv=;UMGcbH{?8CN;~L)E)IHv!È9C&~VEOh(M@f6j*ѭekZר9ۧQWX+B bGSSD_͗b}w]ffhQM\>QM<~ב~?dzru܈q .Omn(]d%?Jm~/=` ,ҎgDwpRŊCf{>S1m(qPp1︬GZS? C |=!^R+~ьGнM@'@ ¡!9(iri~g|\?^ a?(A2wGt1 2['T^Q=ѰPbſu3'g L-)LYF>++{Efov<Ѵ?NzPtX=X[ ׋FE@pH4dP̀]BlqфO{1 [&9UԨ^y}tPAbP60Ow$+~t g sڏGi5//os0Of < q3V贊&l]b|R@rj?+bo_\DnaH%qW CSt|˼YڐK(Iz?B qx5)^fCl)OmE~Ǿes.+>N l5|dM;&O9QȈH$Q# |d ]dOoTsi]d*;SJ7bbkn@ĂdSQۓq'T3;"UHn{^K:8vQ]6x+`.LYk~r9de})vcn #r}_ 5 aKվ N;dq?/z]S;^ݕ_k:gSJP7;A~,LG&0_+'NunO=:@>~Y6n,\!B(uy`(Rgy,Ub.Ge/tx1c`MIܐFaBXV-|>nQ.?r,٨nCzUi&8PO{h#)@(葠@D( 1( @mktWo(L;$nfK@ ZBf癦7; # :]3VnL6dgȼS|F†C i\j>P\JmDDxi  9!C?IR(Tw&~Ǘ-~wamŵofgLx:\:74"od:bbF)MFq[Q5R{C>3CEx7⁦A3[_LP6Jt1F("BcysN\䐌xKi,+w;g#4Dfem_=^z: v͆,8tY7 X[n!q3xÏip}g1oOMjJR'Ԓt9GPxE7kء-)>HO?#'Ԇ"6yїMmU$ј5/4M Hpd 4&J䅘@+P?ads|蓇[.Sgxڭ?0_;*w68>ThU8ʮHŦ.Nz1vE5CC=Zz D9C(?{g`u-sTYJٌy*i ODr/ڿjr7gY<Fkcְ O: "q9ʚ,oB)H.݅-7>na~L :M翴^aWT9d$&ȓJM᪸ ~$%oJ*A,u ˤdbɒl񖝾 Ɲe/M0;E;Kgyr|K?OhMQI10R U%D lnri7°DЄI&'o}܎0Ou0A4Qܦ~&OCedȢRe \i-C_ {,R[ϊ1NDzg2 >2"~"GBЬazsbr[; 筪KBk jy>ƷLvỴ55v?~ /`mOobDeH)O'36̴gzW{=m~!w;C35( Ԫ6!U㇈݂LB6>?HW?/}@6MCCgyk ',P칿Mڝ7\~g nA6nbyA<}%NUs`&6hk[val&'a36k/ԭxDʬ׬i;xZ |hB~‚@kܐT].βIl16Jfo] bIN@~'=:y |zg}t4'* \ YQE"@ nmP\ry&h'-8elF@ H-CG-Iw?'q=~Czˉ2)5A_RH74 nfň&\ݑm",sst.p4D8"0BzCC u0]ٜҸ\$!p8F >/\-=p%³ ,ٳ\k6@*<p o^i!! ${'cOԾd2~v4ϷO/>}py6b{יR E`Zwary,hgES?a0p1P`w^5RU7[hdu oR3G}j&[ex,lGѱĜ OWLj=!J^Aw%wj߻Mk*[JI4փ@H&; 莃q6J~r1@gAu BEz_arWn?p/\Jp9Vhz'0 <+IEW0!֖þJoÿ)i%7U_}$@&R# XaBC"(.OƂ?/WDJ`< !-PF/wA`M`Rr$ `4bE#CTo;<qف4 ^l76ke>>m9Z9np'eMW]@87\Ag!䌁eh҂`f8fb*<=TK@Jpx)ȜάJz=qI91衉X :ŅҥɏGwYnm/?T}}z6_~8R P()PU)R&Z i(EM%}?~0Ȟqb0>Oο9@/yο7{-׿N/AxQڍؐEGVG>?ǣ?;Bsn~Sv)%/b`T!9^xp^':* $)3aaHqVeTJ>4!ܷ({WJ&G!| x`:vD:rC .4 fBj,F1[Z`G'Iv o(ѡ0wd 8hÿ1firH<:?w&PP6iŖ)*|< ( Y8řo$̠WX2L CH(E\y=+X~ gZ3wz^Lm:O0<ΐ1ˬ0N?4#)ETG `(/&^<$)""zʋXĐCl يd5))*r$9>h@!62Cu]9*v8,7Ķpf<hF`tQ!^4&zsp\[{9<f#ap~RznƂԢ=Xh劚=O)y.}el4yl=qu \Q .y1Ir0kl[$(Q=0J11 "eEm:~. 4|q󃊧u'ǤX~OoC_ߖh\$?M咖Dž" ب?)^Whd%'ĶX0ĬM.yC8mωgeJ飖}a&Y{WC\l()8G?C;Q;w'y8e20@vץМ铬J5oF*pa~0ia>hN^Jő 3Eͳ3M$BN{P.iaІIjN ĩ:2ƨ̰;r 璄/ F[ cF6&FoT6/Dl`BHGT4ޣj^&w9A0exF7^);rnUFKQȴP wa_ `NG>FI  "b٭29d]%3}l4|a{?g- &5|ň{]aqt^M(h@H)ih%)H1>D/r%uErz?Ҏ?Q}&]*x} cd~:yP%nC>&NN[2D`B*D1<=S{7O`_Stpߛ"<ægn> |I@Ǭ$r>8Ip5}qEHS}JvVI12GSXEzگ> | ?2hSGO-N睯" w Bj K5*dH)M$^Z%B^&:1X~j#}a)qxz<*}+ۆКW2T!MszL)n (Zh?_>Rlz7 ~ Yf1~HX=:$j›AF<C n-5%P#[G?;4NGӯf,fw.J>I?שE_ocDcWj0P|(éR0=jyy 'Py.͡U̿&B 2ΐp@u %dv˩5;~9 l%h,Q{X9ّ$[xPfl2N^שx&%ڐh$ =Xllpp)JtE&XNnгbLwaiFe+\P; K v'w;OϻԺwp>ҕ]yfnM'W'-`DDxxN]l/peQԚNQgheT3׷F}eh%qY.An>7,`p@JV(=c03X(5gd>_)0@p:!ϚNtV)#-YMOԆ%J}>']eqDg*n>iC٥O[ d)4D3)(hR !H( Ji%@SUVŔтAOR?0?4?.uCN0:'#IGMg /6>'!ڶ'+W$@,7/]WJRPK. k St싀1/_!Gzf2b 'w{fr}Jx0Iw1m;-,>I׳@y 3MP\̌۾AćWDyGx}&??eLsӠ44b<[0H`bm_};!DG04hþ>~&7ٶORp^n~uA{1:Zoǭ$ ED(C8zDz5I5Tb,M8|pk3 4q =Qܨ=﨏Ư<,R/Ҕy)s#1歊>"=֬<})a`bH0f}g ~pB>C׍}/nr?_WЇ_4o7W`0GNw~ A>%'跟R1=G<\o5tgFmC6xsq6GV>qsK?;@vz\BxW4j_'F!A>N> C.-gn $n~[۫0T` 3pl ch;y$ނ9;t`χ/ݙ)' 8 qcU'iYWDj#H=0Q]!@_eGB +[)KQ Z(8H 2,а#2xB u sfnU7ky2HΤH3bPGA(  zAE 2 !+ULԢ. o|'q5't p9O 8tl&Mk 7KCaWg,灴pL 89,.ZX/[ dѦʅA&o}ʟ0x]Ძ~f:< FAgh8p@#L \6UU&ԤîeK'IӶ u凉cv3E 3uɷb}Zang">`~m,jiJ Q6]6tqV~G 2v9a# lO1r2 d":GX5yABv g$S ˙ѿ-t ' B< Z|"Kre52 UƴS]31I1ztKbd<5:ӻ~YTsqš#!{Cjjlmld&|t~=l>>c&lPٓC0q9I7O~,5ęnc0iW2 yF0dA,6{GGrʦ̨ԛ"8k$`oߓLҘK 9NCn4sHy#gMM@,\JQ]vC-_W9>Ha9w̭Νi17Te<=4)y""B.bǸ2:l6TfNubCU$^1lI29뒉oDD@1[y+ YA$ Hwn78r\_7muԄ|Zj7n&Dl!@O%CXrMxA?t~G,sVBy@l y Q/кBQ |!H~/ !j}̒u&%}mɾLSq뢨(5-sy/9I!-Ru;ro@lwg2/Z^%˅$Oۄ ?!n oۧ#emH`r^}ƧI{n{&IM;O7ìk!Aud#Mͫ`Ctw&Gna`2Rp3DLtDH1DI oK}`cK2lTJT3 GN"&_) mZ;^|oΣ ac>:nNnxF; Ɖ+f a`8b$6Ǽd At6DNɤN]>8fz&1mw'վI4qX"=6rPt=t{90x9#|'niAZSULʸsD4E5BJ,2EB|܏ӐrOYu=E:֒/ADGES<1ڡ%롥('|9 v%5 bu4d*a SItw%n@9hWÎuH;z3KIt'&痁Pʬw[z^\ƺǍn=&T{$1^a㳜љC9aftO; QMfbb퐋 zUN(ytصcG3,͕s]B4F4[ #x3*|9N|IѠ),:B$k\6Հ ෘNj:Y[jhO wHg ESo͂lO8q >a7A1Q2b5R(d<5 @UD%8OuCB2ϑƝ  Bb^"@ pgb@@q2< χDL@*K`1 RT1 ɪ6m |>86eY2SStRB:ɮM!eInU]Agzb;2LH;]$n"dnv疣z'3Ȣݝ8Y`&LܕSaAFUb6zX-A;1/1О JG t,o09hQTD؄VB$LLW{B a9PzTgZ.7а äYy>;Gӂ(9:RiPp&SDyP&Ӷfl@e̜N;ޙU`xap$ȹD-pd짯3 yBF |NGuOWf`[>axݸzC^,}qV2?<4k+ ?Nk4:QD4,%]95(Tܽe90Jm&Hyq7 `E !Ap*60(8 ފbn5Gͼv@%PJ"p`WB(yN:.[hlvp;N{ ٥4yt{'k͑;1%D7;ЉA,H`zC6Q\&;;wFw&\1Fݾgܹ˵5eQ^Xd ':5Tj'+ .wXxc LU`'C"?s4J9(8&g/Xp!sZQ6#Qsxѷv`ٹ$oIK‹e $`SMntHs@N<Rx45F xvŅ׹aOOQTS֖r+цOESIF̉ei={ ha;Uuݽ!{7>]n=UckW>.͙dPeΰu!B}<ʘ=Uu3Kk+GfMyaөKw6w@`U PL 9:R5Ĕ]7crb'N1hۙO 51K~ϓPO`H#@n!(1&,y̦,l@QmK=7z@jB+3p wp߆=}i @ [.dl.,AEIQGߗ}yIeY%4[@ 8["i;Zt=Pd8NzwD'Nq Mꁜ&%<6s9WFD'NϠ1?)z;i;CY8¡J' &4T F`"E?I@{"%#6jاt*o' M ZxJ3T'JÈTT 7f(8Ü%E9)7vv+Z?\1!'QAajDz2p)7!r{*H!E;z= ;׶釄bΏD'?Cո TP_TO~\P6;zA0F^%?5xu<9CO+5u{Tӣ/=,7?dU7˴2;CFp]}f4ƳvYp3=fq|D^ueԉbwy͓WWMRI5Q)3>]PCԥ'ȥ/"L;e΃ڮ[{sx+Wx_Ls}bЁ>!uWjZܥ[Φð]OoڔuOgn|+rYT6uY&").zMNC3@y.5A|SBV76V$4uEtnB|p0*> i0W_o;쀑Zw";rkņxmDmRp/qw0%&ku~{fbt#5yut;Iz'ۧ wKA.6jPAnwSGYnO+L?/g].$ɱtl^+]5B-ccChaBHvxƞ]9[wn,ǃ0r2isLw* c/NykOX|"%tgHt6@טk&a;+xP(Jھ&buG)<RyF|wJ" - NoAAa^<ɓS=(?dfG}4)JsX_ezBǡYyx7"Y~^I1cyD 3x2zU328K*nVٸԊx|%t6\_8,8k8n6-s:HLĔ`fZedٞsws{"-u_Xnv˪T< @ ׌:8z|nOL:UN}p(C:1ƞ+Ÿ. ݮ!-8 )+Md{yx1\hYIw>6)SayCZϑe+Fw3P5tSn0Կgr-$ +[dDAUH5CD['WAys.VCy'JczWHl$tRyU:xrG {7Y+v+n^8\10a}k }7ȖHg႘KXj٧Pտ ŒUsn &n {*(NM!wΟq:Dq3mvx3>MN^ʓygfDJ,2]Êp4TDv@QULDe EzǗvӻĮ2%ԩ,g9PS_ AX'I>X&`7ȍla)V74̦jú\;Ih$<Vr7T_X#¥5{.1џo {)=C|nVϩ@KTu³ub#%D qzU0zm[!G׹y'C9 {O~fx e;/L;$J>r[5ŝԊno]Y* v%ӎ-$ fi}X:wlL _N{ ̑&7 1UdŻ! hmhAWP @*"2DAѳs MFaoθC x{˂r<ѿȆN88jS#:˖ͦb+UXCH3K1j5LBR b̏um_SwUm_/q@~bӪqkPc],&~ʬw66Qy=r{\>Dxgr85c<*>9q19f ]gsKyNs3F>|?>C>`aVP~M1b"Cz2DJ?ӘJյ/T5\ a" BEQHM4)K%m$X7&b`Z*E SP z39lBnU!`E'G)jf$`ltdJ*Z1$Զ`kE&L$t*{s6NeNoob5K^[9|"-y@ٶ/?~Y?HbR¨kr8L1 "m)`FZz55v2,r+!{s(dM9woݿ(OO)vA`-ŀA'ytC$CZACdԕ-Z!D= (4p5JNW)vAܛ7TCP[:` dX_&cZ9܇k m_)WtFLQ *J%"(/C:>{JOύ*X`d%dYmAH/6_?ώkHr|㤂kl8E"4HlO6f^Qrwj+Q7(/n{^29BaC`݃$fPwN MLh8KZ PZXsO@?!:Y:6 F;+VowS: =Je7J֡BYg,,v"tu Bsn#C:?'xYzSJdNcDVgFWpe2jj8QlLM8N4b0dq)3&"]ʇV.g 5dJ__pV9JƂ0Z}d>AI<`T7D̴U%#@PDJ3(cG \M>^҂|,N {p: xH^bH@2RYL$oĐ<-rrYJ|a-1 Fੌd:2Y'PSVXKo8L ;r%D@~Wȡ_a^bNAvAXEȮ`Y[h8J7 3݅JPUifDD$Y~vXүIU(efU8)hTJUJ 8(%<jo~YWw2[BőP†'uzK9t3S$0ԨsǓƗZy^lÜLz:M4#Z-ABM07Q;T-)$&4`0$p(;(s(g"e<"Q`d@S,ph0.fQs'F98× 4LDVr&֝3!Vĵ $L0vqv 6D z4z-'geKA !? PzKqN)C.d4"d{L/2unJ 0\,~\00.iE>tS:Jfb[gxZ[Pds*ۻ2tfEze_"330+nd@J .KuÏ4TO 9IBƹ}þYls`D3:!0$eX j n*),EHWTv*g843&䙇@n) STo>|͹2wr鶿K|;'ʺ~>kn$~( {⩲ ވ%DJ1H"oW_-p3\u` :]iKa2QT(KIm%+.a#*?#g%W2IGP+ l<8 -MS,?dZ?pNg7Hy៷c] 82*azHHsڔ 6p.CEd)3.(O<)diog? !Fs8|" 8☞^ z΃+I*˜>bqb'aڔCT*edIURXHp]^$s{BY+L3t >zx\0bJd:#r0a+f@H뉠tæd㾃RQ͵ SڻA:,r6p^ol('6ʪczډ2C٢KJD8v2MB!%=p;о$ SrSU&&K5t5&HhLR 9 O8R}SRT7K בk! ).ȱֻMR-TM1 RD0PZf ^+q:{4D@IiE!pGC)&xtZכ[-1?߿0MgNԹT`7ؿP:Gm WxZIǼdMG&F*d7jSf hkb?'(X(76Y!d!6WHWJ6M'0*c#k"Bm%hhkCN\B&3'2:+Nx aiY Y.Tlp5Xu/ٷwZã`*g"f66ΜE{\vTsU2Ck Y E%|9" D! ֕vv\TC '.(w'ѭhuij)e>2ӄsfzc8Fff`уdĔaaZ+e(#j2Z$9C}s>ˀl1chRщr\,adKӸB-kKiZ|F{`bg- D>avHL 哣#j%8}h: XJFI fAo8q?=G0݋U`3HU 2XN JT N6C#?rH`(^Q iꤘEO7 n['Qɼ%E H_1x2<`~(e̋G̣bfVu`gTxx%QM QP d84e%#BAHQ;ʮ: 0tvM"!=~7tS.TXxw3+Xv Y( {"Cq4a XSJbJ0@I;O9 MnV((3Zc`V,Q"*#PmZ"l:vULZ7>CyZ>ک(6`bM/BS~hg .Өdͅ%XiJ WA հ`AHu!9S`@ hQkВK=fF(*gAL?p-":}7GZ2$DM[c# 2.(~t?NfdfPb)T 7H n[f;F0(ut+DJ\aRVl!©|gz.~{ה'ReBEXHfo't3~7k__POڥiJ(K Z X~Ԁ`NQRɺ$*GA$!` 5 4GB \1n~5ke0.:{|#A eY*/::XjFw#vR;7DO׺4e)fGL^I4E, !k& V^$Nbj fhJi* 0IVbRO]G!.f_Sj2ٿ#׍ObkG V%(JP)HQZ"y$mͮ:3 MJXk!==A6!R(,:uf.GIaah<5u2D!yE9H4F80adC&.syō^yn 4j)Imq6cI:kkh@ڔK[26{:lgT ,OF( n5R4#@K;qbn%I$ ʯWiٜa(;G- X M1mbؕw':97b;뛛ΦI% guZRf, C8C-bCqxaiNIOrC!BF%a d3DYuB; I ! sݕ>'(v`1S8&bZ%] BDm]L| If)F+0h Ø+ 9BFfWڅv_tA)pb[ .!XFP[PRFUh:RԆZ(MJ` N MΎn v%Ƀ/Xd!)D@R*c}06`Xa͜f=n!1~cU$y2?|CRBAҒ!D71fҒC "KفfYZLXBS==8w>@B?rZC 8ii]Tdn,292+2fG\ބ "Wo9 ˗Jw 9qE21#rE/w[ْ80] ;]s/jCG[OܵPa^o >W(1OY`Abq,hV&Mݑ{Vk{歇ˤE!0!˝y_Mү$U<\y*8ǖGmBn4LO@CꬃYDIZfb42g}䟡]MgjH6g7`T,WaCvm}59ʂ{籍 rdw3[g"n=8jȋw{ܜ>g[6M5>ڀ9 FnQH׉mIXV Y.սZX:鎑VR>#mqs aU!zpl 8![P{^)˶YȈ+#WD0)4S]]L8b| g!Wqyi=C|{?Vx{Z /u|LuJzCckOhH֝CxghBDy Oɓi998‚kPp[`y\DT,eA ;=/k$E$ɗhf ӈH.tZ!rʏB$%mՏ% L+C7Ų9K-[i3 B0xO[{S'3"ڭ][.O'A ESXxpKjV6ύ^-Ic+w[hZk BG 7p7LZ3K\* ]h vs}sBy4囤 bn9wgx޷-u,G3PLy;,_ %rև&"Rd {PwJb.yz7MW[1g?5 e6˻38i|o\PolfZMJuyV9$Í {{1hQ 25!r:SyQҡg>/tۮBUȩ={\ºu'`rǡ4u^嗷NM WC9bf0-NJqs0 {zVqVޏp™HF$NżzgG:ykF{í S7E}ភȮw7$ߥdyTC7G3o(ULIis,@Д c8)%Ch`_7ͲMU6ePLl4{pB>yxvtAk4!f^yK2@JB)_l-)^F*Hc}X.V4 %ҽj?p7%J$!'E.gҝ')W1k#kw@]8EX??8&9%"'-p_S]}pn;ӌ cZq4 \'ޤWo<].`9{Y*x&Vۥ:P>x,u=) tć_HRzD}އ՛P};%EWZs89΀1'q05 g(gJvm<9 7vwP b Ii :pj;3f{'UAks9v/tDi+TF$J&q5oޛ :2ҁjK|$5/gϪ-wճzԢEKFOsȮx9IDC(H%-wyi\~xm{2`^)Gz<<{|5iՙ>C@q,[^g0hVf !W7^W8˺IN=E퀤2Lv=WZ%`%N9o<=ۗg]@i\ odf=!ォͰڊD ]f2&ijq\i, "X!۶@tS3^<(*O @ϐQv㙕[]J3J֟}}O<[Eb ޿0ϭ 0J>4'#so՞K&Xf)4If9SI+TTJJ@P944D%P PJ."E Y{x,awI@]2[&{6lW)<.)4+!ESC9Pb9E9AY@=SC%3nOS{a/p}YaSmW F\|zrh|&Đ}e f d)cAT f{kGsNi=8JFMc m{vrOȪADvd33Zdzg]`HSWYR 9v""<[1"@$$)PF56n4'|lٳO.:3j q|82P:!]A] Z L7sv&b:3 Ө5D $ Mj7YFxo)4ۨV7d_(1*!쯕RE=e#ld^Ldn?Hۑ;'\qha)Q4 D)J- E H&DyTD"T $R%AV1D_7/60y5Jי鮬^-؈@Hik»[Enj^G;`Ļ^vN  ˖$8Uvxc ӴKH4v5\iY%4y"'wsb3ҍ0. ig:5g.a)/{oA7V띥"'>@`:^f-0Yᦼ.gg 8fPޘ8ßC@V]}<k=c=]x} `Ž)L$tpN/2-Mnqϕy/0nnCtp'!!1#)v= .3?;WH]Xg 3O4Z} x:Rhjc[ Au_ٹ7˳ڷ"H*{M0̑8W`aI ڠm"\ +9D]_Ⱦyjp}\m6OZ<<%=oPWJwȣ9yG߉'rb)0Sn[Csl OM|"i*QNoT's :Z_ۓ:uR&TsN9p2`w _8h'2P'koh>!w[&N^,=]fK߇-<腏MCgGtoz2r=4s sQ6xaC7^wVa|}"g=-`w%D;N+p E=_Z;Co CήGUq5cOk^~BuIA'>(VRM٫Nh$)s 쿷@s<sυ^9T:Cб-tۛ ƥuB3ŕ8 *8›FU(s|e7˺]NoV2E-|6pd-ZJtEE%Pncv>)pzZPӮ*-=Hq r|bddYkF I~,W0%|elP8.6>7=ɐHmRvB4[g!Q-zX.E=ƿ!ecP3uKVVYmm2NNI%XZmc.J8?r|^æ\l >ty3f T+Pد'Q& qpaĝbϢQuźk7VJ}-Nvf<.G:oLjÖ53S9bv L,ƫ`3Zj).n e^E]__> FW;nz#lgs 'g1ל>=JXM?iB,VҔ@(INK)*UҸl ~V8Ji5T k1hJj͠c0U% #/XnP_Uy=;\>4~AB =(Bp _i8#hBhNJCG *dYE@QLҕJ\..^!8i` *[ҡP' g#مCbAU'|}NN=6==~ ?$~Mk,UoFnƘbcp\?<=%YPz K݄PZMY M<^7TWJu$ZQ2dA}# V{?CUvQʻͮ~r֯6k1CeikLV#d@~S%2#N%Ra 7)>}&~dύwwuN!٬8Do7%JJRnuq{wq˛(<t? dd䇹GSB?.A.'NV`T_ rOFg5Ⱦ8&ᓉ/(@LPOzMnE7:Slh{q\;aĹ&+qQ ,XXiٖyI|Y0BBi7*Cbҟq\܂ҍf*[@"c"0ԱUVQFDTEHPQQ dZ&MHA}wy( dh槠y%SVTRgyXC a & hb\A'KRǭD^¤[뉁h9z*RyE;Ns5x`xUl9Bw't ΠFZ"I}TѷS[Q${Č!RJى %P@}AEH_^}dRO_^Q[jLà<Jzz[ΓV>{dsӊ'u6:j63ХS$rL3@ڣ4zۯ>~r䦧W}RÿǬc-r-7+ BPAU;} 2 JǷ~B52DY.$%B066aYST"% 4]f}QREU 9p 1݊䛆[1-,jOF 5τhXlZxDf1Dpz{Ng"ǡPgNqQ2#< 5GM;EHwU2ݹI"Ӷ51lЂa! P[LCOvҟ|va~*K_c vؚb3 0 3e#gI8iלQ";BcҦk6vr'\Ft{o##ِxh }9_{z>ҍaaG0̢B99TX& &U!dC"0b*cvq 8<74o.zy:/VS8ӤɻhSC|ɛ~^4՚\IH1qyۂn$aWzqǦvUDdjXMfzWxNbDka(gercQ i7lK#g#Ϻמʝ-[Zw7͍y,6)۬z"t(` FbLE.n۩oCBsn;|}ödd|ewD hs4A@FP^PqCpvs -Mi~@·69k吨Hx2 o'Ecݹ{l/xB9ұɓP,)Q顧m d4׬{XBĺA\2!| 1${ED7lG`T/@-l8#q"B }| ^|.C-:!RY0O:j4 jfylRTB6EQDpQpuXcJR IHRPjęEdrV#0FV #dYA3`̧3(0%"GJ`cWR `JGBPAMDhh£04* $bV:dJR &^{֜]P۬P$t7G#5.9om i̱d6!%.;kFU@jqZ,mJ  2s~;gB2/l+̓h_ZQ!1rMrp w46'o#CWDA('!>C(c̡+Xo@RF^ߘCuC`L(n"`Ul[_\ɬ쀟}SPC K!hT JINC:Ӹ)'DBy@C-]ByLq5- qB<6b@DLMg|cԌPVl09r\ T1SPI`q;K,uX3(5s$8PT)D27`)߅hHP8O͒ɂ$U"ܫՆ;\n<8?>GFE40wz0\;) 2=v{/:8@j9ldD.b-ropHXG,ÔC庀0PRjvd&hWӜZ6D' zݑ'NaDOjـi2N5|&u  1CP#bP& ~Od10S zBCLluSI"iE;sQO`B!Z i iJ%P-懫j"kbo`Cy===U~Χ}Buu*%R&~D\q%[>{3b[.LM7wÂ/2M;>( lOE>gI(h"J"b"*)h i)j" (&*j)d%*/0 DPDLEM5DD%TL<P@Hċ53IC(!ATRB %2ESPAAM2@1D34!UPб%"PQT Ϲ%KlE-kDڬ*Q`-[LJf#Ouz:A_83d`La"V4HsKP" 2* !UEr4:: d8VJ5XW2]%rB3.עދ`³.qNI@ۢ$X6Q1߻^o|%t[Oz!hm \b:T:Zo,q`C&Ү?Z A"/2N;Q/IEDeJEڮ)dwtjtԺB3)o*Eʧ7~v 'xz)J=XXy$d^/Ra L\N3- ^r4'iE`E[d}E'h҂tjQgZŏst>}&Yv;W` tG?V-U k 5]\^\szXez  LaP,ye:~'Uz)ocOrhc|ViyV(Xi:*[bo`,(=d٭C|j!# ܌K P[o':Q\U |<(5<<0oz=Hndؔh>E>uL'9S`3˦D&{AkgItR吨o%1^qXkV58  ,,IiC!vW6 =!u,jﭷ6wfBE-4:rN9Ocـ/*p"$DC~m PPPP0|' h8+REY!bD3$CHV{C,kQ,礪n֧"@y3͌ އNǂ ,r%վ;aQ -~GQZ<^^m$2E?:/sه)EoIoȣެFOKE" 9$~_*7 Luh Hg3b48*<&iVC߱ڏz֧?nO0cz%.=g~ưY-(bךY+ I1i)D/,?{G? ٓ߷""z>nL&Jtz|g #{G{O +fknvK9^#!5EYi@bf (*RiPiR(PPZQZ HZJJ!(cX$ZN’t9q:%=6f|M9d!o-rvz:WaK,=[#u> q#$ߝ|` $@y[OzjR ߟ9{9٭qY{DH@"h) YC1ѣa@5V 1oUoa) ==#çm TQ- 4$hLa1RJrԚȪѨW32jVS%KfRQ1dJ0DP+Tq%L̡LZ"% L}]f!dK@\[(mCG߼AhwÄ\8xá""vF\k {3 yP)pYèl# ?GDbFI'̘CdE . 籐t^v>WPx៌VL* /@zV?&<{rT: mdXr |Od„ ?QU/$2_]Zo..`0FԨK::蟟P5=OKV('lbE1vP0UXQTQJ"/ R,bJemBrf][YU9i`:+ENvugw{xD]XNzrC?7#^P)x%;z"1"]c#qdyޏ`Z,S`;auJbdF~r{˔EJ@-L(H|z9ϕtzEҾ$p.N%Cc ؾ|FF&Y/)e]eiTpdm#MU a bO"R&幂dR>VV -&CH|P':;t;IbOή|Si.J mͩ.ѓd 6ZLh -r?GlBN%!x욉;@C"wa=\v:~ˊ 5ݮp+x:s80f {}|)WQ'M~gnq֍ YIҶFvC4OR"=OeI}_?2` ?YJڂA$5֦TɰI6sytm9n-0I^㛸ӜݠTJbd>H,hfl" lEio &M@5sQm;,%W4:ݘ{h⃏|Ϝ>v;?(Wiw*a#VF(T ?y.8@801I:Kִ?|Nh5nPTC Å@A {G~f(zmBf?LwBWkoSϝF  kT`*H6@FmμF=1dΣQ+ H5H]CX /%M)tJ“m.E:_bD':_)AǎP<\ِ. G z΢Gͱ nB2-V!*dhl36  l6X˛tH6"UYV!Nt?@,o}-gUi{3`y,q#/n͔dE=^$jC?߶ɑ(%5i-@!1D >d ݦgʋG5K.7!I-RG1ьO'y.Ŵ6y}'AC)%Ψ__T^'VC2YR͡"m҂a@!+R{ U mɀ k{}m~J}QR0q%ES1*,_p@n~S? ١K YJiͬ+]b * )`A Ӽ1Uk(uq0q5 ͜a 7PH(?N|J|DD- aVr\۲ջR?iU,']Ç &JdXv WDWNm,s? :1d q$iɦP('mJ.O,#6ܝH Afv@yMw@xBjz!VY:s|"" >,e j=ːK.SY*IQ sZD͚F7, FMKH t5B2 Ys#TlK9RQ-b}wCR!,) Lm ]/R&E䳎%Pk;s/oF#6VqsE0JlaQbVhE]?(_g~߃)~u|`(q0浣pj>?伤Q}.dթ I;ҰHdi7j7l>0ಜ&Sf8uF(F^rɑAsLVs~Z ''t< Z SC|THPw9ZD09'˾=kbW +dL<.rBi8=z@ ~;JFy{Lav"!?P ֕w~&t⇢{\o|^k^o 2 X7ESzW3'.isw Z'zum1Ba$' VX##/Xgt$DIi,بHWth}wk̮8:ǁ!qO`edQ2xpElGP]#R͓ 2!d+!0@ahPv a2>7ȶGu Q޽=#$_*@<_lyBQk=^6vKl|`ly)ҽ\@&!m ٶB!$]RjƵL7btlO7t@D"w*Y ŝz/{J1GhU@ɗ 9&5v'J9Ikq[hi W{ #B.a ;,ŘE,Dl/n$Yfӑhr8]fDR '/v7JpLlAL8sgd#v@tgJ(S,P#W@!\oVѱņ R&7ˡkGVcFغun!5`BX BkMWj2 fDBbmHYʔG`:֯E Ψ4)4p1cs{$%C!tLUY31Ș G) ,mS,4 U4?|dG!]L.'4O" #N80'hAتgz{!̒>B~PH偃5m ;fklw8 ~σ9@k3<|{v_R:=atckPHjUG59.wVKrat9`!&d)J/tLWDG{j C[ve&CF3A_C\H!cӹ&:|rkiaFY fW``M 9#JYV!+2O?WYp&VCP2"9M􀜂\.qQĂ" GZ#:"FvQ! LHڻ@AhSޭ|s8\s 2g=GL?2ה9rNhW TTTl#yq Ca!4(Vȓee7` D_%<fXn"o>e|ّ߯L΋琇 &U{wg6vγH1<4@(Q*΀ HNЙŽneX(.rk(*vCuk|עg23)G+k nBのg5ZBw&AI1?(DfpÀ3O`X@Qi偢qht1"^I$>ÞLEB8 źWAÃ'睨aVC vkA_GZSg=֎#ސ.F%c5ʿ7Eu@hh@tdc6ι}@ht{S6}iG1hYRBخTWC7+WvYCې4иtYz#/[zUk 32lQ!vs {R`v8B A \ 8B (ָ` D+6xp}rM5EEj4W QGrԂ.CG <q2`h59͘"{1G| xL~+Z~:ZJ~݆  9Nh+ ,^`Bp1+&: pDkN[py5֌ګ B!Op)̱h3`O7V" R+JG;a3$J*UCT#k瀴Hw2(VƸ'7ۉFVoN]L74&hQ¶I+$`d"Gvzj,,1E=u[F=x'GRsŗB 3.љ*ϭȱ2FX>LήkJ+CS;czDHQ,Q,8QpdVpzej8Qˋ6i$*Y]&+QF@d) XڈCʊcMU<'2C:z\::a g`Q1I=gYjU|5 ӝU n@li3310Zezzï&xdX-enDB *Vf%}P 7sI!~ s8Q-g|B|*(gEӀ>vW-tɺ5j =N&LWs npC$/k;bJ1oL 'bXҘ҇/G9\nB(ѓ3}4 %?9kh(^`dSb%yҢ*d9H% HpW7rS&L\wM;"!yR/lLw.fqO,~q!K,c7Kx ~b1)] H-)\Ik=jpL}A3.QN[?kdz]nFͱ{];kޑږNy-KSR˓ocyr^ق?"BA'xts"eq#6sM4s0Eӗ52 k')|jG9Rʵ%0;RX=\G,(?p~0J6IZ">Դ!\!y v<tNQ؎;:K }Sbԇ1Ϲ{!f1Ƒ]a"Zs[BH:>G9w@AEwFUwVbC Kswd=_Hyx˾ӵ/L> O+³uL 9oLuɋiSr~_H W;/|eIiyzDݰ;xܘ Ylx`(c4]'9^xSޢ:zy/Ck4J{+ĵN$wO[Zt2%FYAt=/^{ t6W`܁suބ0G68ZPT;fM"YG^KJngIr +S̅w#U~@U@bc=\#4~34; B"Ur"ߜbK;|xȯ *o>,kt0LL~ u7Oom<vTOxHm0lWNdѶ!W k®g")D!^tzmM&.+d4Ɏ5L_#i2@$1 !bȮ"A߶mç2}:_ZS|SѭA|(Jd! T8ycFBFDt`ٰ߰!ʉMVQԡabllD7^h*FQ= PX>W'c.|3t=>/ ؈wuE;IDR l^橰C4E"i˧wP&nH_Rp8BD+M@.\퐪qvZe$պC+8960R燡ҧ7nvW;S"-]'7ٺ$߄:ϟ{۲)b `) !#,&Ǝhb dAJǞjF=dp:T͒ G^ylۑ`M8R t´yU+fF_${v9iRdM^.pc!BMҭYыG^^zF4xڳʴ 403hBfZԐR"\э<@0"0=r& N),AM6%آBX5 S b|f`dY+ZRuUK`2y{N^sH}@oHt%CFT޶'xwא:a!-,3 "he=R0jTT G`"ШH'(Ѐp@#RPնrQvV lʚGJP(U+A!M"@A‹HB3g;o //2Z*g7nsL^V VL&2 oUslkK˳WroYZjqb+50,8ʘԼ,YoEnӋN&!%MaKW @4iSin\`N21@p.UhejAPU`Kk/[|HŒi LQr8]NW1(ɘ9_Mx<4mC}\h%*18m0 "%h,)HKt^)Ir*||] ?CAk54"ѐ=}ytcG% X*{ߞ/{z򏊙KmB H `;9yc>&Z7Ig<|~ްgCU=̑ojzG™Le =/֌E3l"1r8֫1&KtŌC= i`" vEsBOF(M>.QCWDoכVXgDq% aǤJ,G7Eg33VЪ\3z$Gz#~WZv5db$eLwU^&ufM [^@/%nH*@az^66dKgUS].I}ͺ$Z9<ݳKFBI`g٬rR #jX2 Ot ]Moza2a~fZ͌e"ƪB0=`{|=_'}֏p*kc.+&8]PiH-L=ǁ8.BEz|2Jztˌm IdWaW'pr:6cjd feI!+ǽ4#$-Ziǀcb|>p<ڛ!kq3ɼB8ΧջWUxIJUP!ecd︈Xc`[a|`8   mpR00B)ڕ*RjڏQ g ܰ*C*d[=(l"::iMU.0 su H)DeQOyE㢩lFPhH*%>޸3e h|q[t>`iޤȎ-u'qoё؋} |]'-tLq*a > ʖpaLdsʗ "cf̶fIr]cO-4e=vDAiDdC@ǩb6ie[az^S3e7 6%#C jA Ңkm:gDz{&@/-"j|+ճv瑶2Fޝ=f۞ؒ\Ij=om+?Y玥Q>pAۜ^iwX$A.*yrΦE BݲPk_XX=v:nG? jdX{|7>'ϣ,3K1u,@n:ҋ8ʖR 2FƗda6cwY("KQ-IMLHl~ tBP~hL@TITOl{1&ph,q$.g.&; D1umWc/{g.HPgt%T *FEuܺb疪,B fH)@?1}B^`T(TЄX*!p˱1Q@`p/D144EEՂ96pC=NzbdG7hm Ævi'/Ÿr* POh#f,4XeкO=L'A蒽<٩5|Y:;Wְ_^JîSo`0F/ENcBOaWo3d 隕w =<__%:tkTl!HtVS36;Hhwg̊P#!%IpXM5NִDi"l% >byZevI1'%Q$nq3D<^RTn{.<\M"Hd|`"sMl7Jo-LCig\ nXac⺣3DA,fTp/̘(Z%b)Yhv:TԔ/X!#ȒJ @ZGj$ s24vJh16F蔔% c8<bz0Q^ybtllû[ =Kgy|^I^ovQ)D6.SejnМq2"|c:RC* r"<ڮNxZI˺nyRWa ,E7swÇ: 5*Z㸍PND6$5J(ܿWx03^_-S9HT[}Lח}LXH`|؝ݟ[6HCl6ug*wcw9Dm Do"hQ,#ಉ8 Q񱼦c}oz\Qu7  ЀV(h2P r} +Ĩ\V wӘp껨@&3cFz:'{fVTβ\ԮfLUoی,Ud.R6äS9NOl Lq$;:2%(Gt kb2D%q/4.+#V4 $ Biv3s3ƕtMMG uS0QbgEȇp+ԎΗ/sWwQJiT!jt5 Q6zKb&n0r~Ic3T.s϶;/=4W$`x;dNlR5܆%3'\f$@KaO'Tg ,BaXwnpPS@?rCbJHe'ގ!MFNߛՔXԖ:T1LyЛwch 8 "!*t+9CN!"b`@[=Mi^fh4`rc@d([H҉"٭K32x`Xγ P7P\SW2wY#pyQxQ 4 R(DE4 J% P0D  OA `I&yЂ0{~v CS$w7,!jX]q݂m' %=PP-Y}XDC9YC g"1VEuI;N l9\8TЗ\̜,!$:ԣNE4o.! D H"՝eǨ$Dan xa>^A 8:]r/t#HԅALR4%45$10HJB KJIU| s[nQ찏1~b{3 gN>z!؝s%w33m%H7Y`jpΜ2*{ss92bhO;dXRԔyD,L\Y`Sąf0r0߷&Q(QAu>`=%X&3.Gm&)2\$LEM3$Q ESD+E_팦8d C1BvF(fa"!)bi?|,wy dWkl 0ԏZMUER. hNj33H4܋oZ9f(f"`첢Y%RJTjU EK!F4RDđ)R0,LRDDU ))"0TM TC4PENIIUEFĨVQIE)Ia L 0h)BfB$(U )ZZ@FC!)QiUҎ,~0> 9߷:yiꆄ(W QR@!dEP23*!ai |^%6Q1q}9(lԒpb^>PgI03ZA@ǁ:kBnBi; ?ՕVgÕN4QpH:dZ 1>>jl(e7*.ԏ tOzD(l03Bhgr_4 hyX!hKe݂ɶ0nO̯KkX'7Ywd +RщC HRfeBpքxke峂) 9Ktĵ iY^AktJSd;N͉|?RSԏ.C,dJH@%R&BcKAT K}`@mRPЍCB QU50̐U4R!UAKB)@ S !B'C )PA24RJ4S$̴(R ,2"PGHQPϬ2??3{R%\SL\/c>>uzamDm=,qYwYK3D!x\[/QTvCwݵ,)1CDQ/ d(64 9 rb5Z:mܒ`0َaY=4CLU 7MPvػA3]U]T0VTER" $Ou|3*rjFJZ*#IA8,R)7B :l$Ht'6IO"UN3ZRz h`'.PlJ##T C"O(ya #%EEʌ0D-8*Z0ӿLGxCDY5HհD [dmTRrs| &(6!!XK Ń X 4H m`(#+@D` aZJ'Jq06"(a;y:֖gܥUO2w^[c6p,32,iO_@J c*m 01~ڠ" _X1;N NQ(Yժ,&zUezG8e]~5fBI;)rԞ^]aڰ]1T߽G >uqLg8!CFF.Z+ * ͥ<: 4nS~aj0mݣ`Yh4|:`qM8[{dG}9Jx?+ϫWX.nW xV0\?xa3v#oᄂ!jYi>ERm1C":,<a?g%HxWs 6|dܮO$ͬrlOXx hψ0nyХ+cR'> FN=q{*Z.-<%L~iEz぀+W⚽}2[=v/_z1_g̶J|&̻ v صs+84SM'l 6!6~./׺69)G.~DI<45Į{4y~G,7Ժt~0Vu&U96U(DwǾGv[zWT{ܾS;ڠٹZf~w,cכAx?lu5v _ީï֜Ҥ{ O.`3TŃsa ^;>o Tylr x̦ |z{ @.{]s sz̑E c:K c~Upc;6 _T"/FXv,7E/5 yNpCse_pݽLX\CTm}yư>yؙ[ <{QvtFν_|N8p| "{/cȺu iRٷooH_jmp}Ţ`uegTY.HɧHhGFna4#c;zL=v ct88(yC_Wϋ=yݸ.vݏ\?*\osDC/=yNvy‹oi½qVɼ\EgS!ߒ7w!Z#pJQxKrY$+q ]Yyo_Y|:Svnqw?Hb;K ϓ/HDG1-Nxj0u~p&紞5ȶ X q%-wїm= "7 !ŧ`9ōqwxk.[Л@1Ί"o 1oM|\%9Sy.CXjq[~pV4K(s+Z>CF2](CȚ70 fE똉~ތy'3:Q̩4+J_W;-lkL?M* =BY|7כ[?b{łNKs:o QX~LJGr FƁҨe xPKz pajSc!K. cQ g$t8:Z68"Yg`: }Cq\󒿞"SVȤpO\gfCg%%I wQ\N&b,CUaL35ZlPLuNhh8 jd]nҿxw7raY9{4K]'fb<#LZhN֔,Xi aX:T##ý4Diٳ FjXPp7.87')#겣xOD 'C#At!ܼ}҆_9ex}_G`$Wg-5 avJ* &lfp#ho|?Iyh.e𓈷}3IST"r" 0zyfs=1C +<Ծ\9wuy+ݛ\;9[⟤&?L׃, ܃"zG͆/ƻWl%So~npDaxSmRRiFGdjρڣ1p2m8X[h٪) Ы!Ah>~ؕya]2dj]ss^#>$Ad љHDAL,wЇ߯E|q*=vѮ\S?b1ȇ,$z_o3 9Ǖ B(ZޓF<=ܨZ#T,0r-r]ÕXwJ7+̠u /WCϟx Ӑ2 f~}$X]j3{@ X6-xF72BZhd0ŴUlʢw LD ~h/9 (j49}F!WyàhSHEd`5/j1[I+]. 44 p]~|ʝ D|d$)@>q:d)UK7'NekE6WMC)˓t8OT(Qș y 79gMb QgK|?ހX*Ei hP?U?.? .-ԹnάaԻ\wwV̌xug?L4ƤևA )'`OC5)Ix'n'b?<&φ{&&rɲƀ @TvUPY+Jbvd^: 'QZJrZF(0"Py 9`ejnWLr]H5RӀ̯vfHnzRKE3HlPCգLkQݞA<@CAV@H?2.%P҇t|~\gQ.A5@dDhN S?@ %ˈN@ZAhCRJ:JWx: Pͧ}b ;ozF((ä'*~Oif4NJ>mA V3Hgz_~S)aRtϸ rH@Ox:FC`J#%vЁ uqELywN &G o3 `{IX~?dd_R@2qA/~}/(%ӹj|$TA& * (T" (V (Oeh8KŠ,)$c ҕhv*L 2R`Ӗ[ ى1!Xj{e,g:`i+>!< Αu0P   ',5'yd!0$*16ٌ{BQ1BcKMzWP2 z` N$PBv];vV"**Z0l,CܲoT%a7JOc;K2GJ!ҧ x͛$hCѐ$LhNݝHP eVqC, cg2c82) 'LrhʕM ,YЕDS]RjLd:d!0N BPEe$iA9AxLNDr60!pbc+:Vz816㉯YD\˹rcik0Ƕt;IAy uj^qK<3:GcdPHbO$dP8Û0L!K<73!An˻'Yqbk*ى:նz/98c, ;snw:dz*uJC\*îXz5w22T`gWRVY!ĈA5)* lh"R|E$Gebm HCqL) `HNfaIaj ZB{;|¯0; !3=w`Gߏw{28w *|#tq8:֣lF) U_-a@#幃w"{ꦹ4{QNxJT.@Tc B,1DKIC'3W؄=y({ JZF0pEc&bF(hK`Ƣ+84BBug;xX+|+TRD"ڔC`P1aɌ fslmgCr&8q ٵ ֢֝krCsӰhܧMP$&H!%R43 Ov'@-+{"_AjȬT6AN?#f:16ek+ceRG ᢏV4&Qlds f".Ti:x_P>9@P"EODQ E*1Ozo,s%&phs=VaQT( 4z#ׇ%)5zv7@d@눽qӞHuAsCFƫY8%Pɩ0:jtdRO @XBv2 $Rj FB@gkT7X"+Qayss$*č%+PXg]ҠF)(zvmH𐯤AYвF$9??IG ѱǐoY^9ݎPOSBP6Xa_%p5IoՠRR }] ?k$g,I ϴ-GÛpP؆C)X"2  ٔ_䲜׉EWix&*1D-)MF(>KSC'/S[m"ȡb*F2h+0uH9a0zQPM)] ~<$9%MҜ!úop%9UY8ERdTQ@bv!7LRSM EKMCQDD@QE3%$DQ,@%0- EM* .ȅ + ByHsbZr3jyvrxL\p4!F۶'N*h#gab|zuuHp_10^8@B!^qXrBFiZ6`x8$y IOku!DAwCit:i!Z׻[`k\ LAX\?JJ몄ZD j{;e*yb CΩ`<׌[̋ހo D z?'T)2A>150}lakhXVR wSqr5au#܉jeB@  uzh& (B21#+k i-y$KA,&' o?Kq颕h ӈGMh`{_ qgN*[t^:*ɍ:-%o.CWE#ײ~Ni}?Xĵ&L&ıQ ׊ cNIs}G4GoܤK+0io/f@d+`-4Q{:r%h) XbCJL0nvИ%bFj5/`:nE)P+ AB,cѷˆ| zzzyn)ywu4J a&;Laµr|N[$Xc Qb EmU4FY@L$H 4zA5 X*GY_EtAAIk)h#QA(DATԄ ) G&24z@Da3#?N0s?c\@ҩvbm.AQ-ҴUH*R5H CJ'FJ" ZJIJB$B`$)Q2a ҔTT 4[Cz9A^,ȣJlN,M!PH@OwVh3ʤ,"4c:DŽrhA9) m&$bScbPR_㡇5+Y/) !GkPl2zvi##mфHUUJ  0R' PHA@8ʟqD…% NsI_jޤ)QՋ+Q")f?i< *JD5Iٲ7,OnW?uA4, _F"(р]bD:cyy_,2S͔> p6A =I&;~'8؇LUX]$b+L<1D1)g'IiJ* nL gybs.)ekOZ /3<6G/XR'ĕ~LDHBKA[[AHonF?y }C&= 5Հ+pL~C[ٹf:C!L "/C U5Kϩ寣oQU ]$E?fMAh 6[n-,QqaavLEHj֪P !e4$!B~">m1Q3<"!~ T)"u8SMeIU% }?tV>^U |sŤf$DE-9k׮,O^*ꐂT`y9k{2۬xA7XEz] kF.0h~M^%#oOC8O%q4-WgCNX7@H\dȉ܊;+V]"W_H' oXx%yА@m*$Hgrs/ ȿkDsL~ޗ}|p&lL5*|0ba% :ժ& HPUP0 E' '*-$|hrx&f4G͊}cКF tFu˕t5zQD}M]n8"&B a=*r}Xެ dQpgp;|X\յٝ5:#scmP_IXuPځJlGA;dZ)`ܣ>FVQv2ެ P)|0[ xI:#rD6'G9 As0軔jC ksteqŚj 2,2ڑ :-K$whym]pÁvǩhrhvA@Īr/?-s@1*KH'IތTP(N4v/ 0O8FD=L )!KS'm0&Ҏ5T#^6ŰbxBh&ڎ$Ff0Dxuꖵp4т  BQLLh>" /wrDԊADSȳ6Llb?6,3 )𥆪6Pg2W.axmyn6Y^ac&#N~c2xDtڍ'Q _քoN(8L0 < 8{%]^md@a!BSK/>QP408J_-5 xgR3ŏU2! ad&!_Hғ^d8J?q>-s3 3pӓxLZ(0h4VºiW >m=2گmZ^o'üa*PJY'Miwa7Aq?;Ef3<)(V* :b 5 QQqRb^J;)W&>aJ }6ݓ4W)/+9e Q-!Hᄃ}B)W;n#s*d=wP 7wikz"dWvk/zH~H[<=]^b^'ϔL$,%jVJJŊd/,LK 8j]Ԫ W T`8~X11dޓSBh9Ǐ7J)b2H:i`GpJKL~G{v1[deT|O$Mr8Yk9 )*‰ @ soV1Ґ bZ\*-dЌ/kKݠmDJ"4,$.GU/q ТNW5q+yg 0NNtRCp, I- ɜQ@tf < 10*c#LDu(Iڰ0y;ˢD%v&P9!fssro=0; tȧIMq#>] AQ߫B0\)2,q^z:x-/y7*@UQ+*L_x<mc.}CZBA7N,V]w@N AI%hP(hEe@`ԭ uzjpzϑj)D8E9;0YI(Q5A'',ٛ g",whi_X :ŐGq  zMC~VȲӔ,BE!$N@~89dϦK-I64   D(o0HJ̤ h4!y!sN$n ¦߃Pڨ`$H$D!E% PUS%%%% LH2J`($MQ&H 2Tb3TI?VdnfA$Yp^k(v_.(-)DEpWDSS7! aaٟd;_2( \dlSlg!2Cz8=u8~?M3gYł2W TA`;#vTI$Qpk1BƸcW4wPgZD 2(E66WCfOSg0KHızTCT+Rx`d:g"JAcjjfL+*wvrܜpěm@\2 LK)PrUKW#3_i0;=.jBоE0 nD(x,'a'$CbG]lg<٦~/T+ N< |BV:h/(jP2Vo$::spn(fyXnr4RVa1ca#J.Bad5TfHBf :A1T(.fZۙ.871σl?D N98YШ΍QK 檯2jI^J5A'uIޖ@ԛ-+B d8 mnY7pu:qdw=<s<1W 1S4֊&5L >'Rg*x UXMz@GzoW6V2q |Rby $2mG+ZF P!IMŁO?I)i֦=|`dX녶@-2OmPAL>_-k-oCX"wxRc5>О}ѶKH[AewU !f"@-8]h$4$Rjan5 % ,31;7 'Rج}#8/b8¥HP8;W%@XilaQd+'k1;|xB[Bxq/J6㻈~U[L˖s3"4$ZTZB,[;x.gbW?ߣgI?G*V*Rbm&RYiI>gD0T!Hm̕=,~Q3J|M0G}OmcDqhd/wG-3/Mڂ}#YL-d,JGY;.7$3͎aLH)r!M$,||7[jwt$D{d T큏T]);"ldžK;Zܗ-DXO3ԥ6<ă$55 NuzDŽ+(m K(C)\T eJ"PR VRN-*lVrԉ𲘚n ś`c$S-7^]e&32h N MK^xs:$#^ei!X- MtMZa2kAX{eE t8Պ(79gh_Y80 กu˴` m3&<ӌn˅Jg^Ӓۖ#ި7c4q~ \>y/|ƞBZM,rje&N\I) 3ۑ+]hfȢhadE:Қ9QT"ps\ƉfyMŵ4QLpThJٔNS7NȰfxfQd"A !2rl(k ‹APcEL> 3 DM.A)S}gxN35!hi[FdQ5G\.=H3!L vM6ft~ &Byy?,~?TJ4(TAč2T#T(",daԜ= R)H$ED  $IER4MLE QPQDEQURMET1,TPET+E+PQ4TQDDA4TIBP5E4TQPPQL8BP?ށ0j!EZu  TQEQI$PDA4E$MLDACHLD 3% 25EPM2LB LIM5EA$@Q$AIJHEEDLDU4Q@A1RHALSEQ4U%1ESDBCA TEHELTԐPAA-E%MRDU4453DRI$Q@PP SJTE5DQSL1IQKSc 0KCT-5IYDR1SQLR?Y9]}~ #P2\r t';GVr &S3[1q[$: (zO |;ff ˁ2Kj5$D"T,Sc Xբ9.8&KqPLk0SRHaI6ı`:@)Jf8fi,pP6<3{3XUN%PC)Ր_v%(C5%CSf"H 8yp q *k^Іca3 8U@"(K&Ӟ-҇bh(K>LULD]}zDH5%-QϬRC4 J(؁ĬrT1[/T*T5(3$7n yagw5!$r$KLNjN F#)-m)i&1# A5 s*V82) 0L67$#I{|@5)HPq$ d1`IKJ !QD[dYdESL nA$̚J5AHCN?D_eZE\]}ϧ䈰屪Z%Bۮ v5!T}&Be&U-z;%vi{>4-P_!63DS vTCeؑC}.O=-~=pSsҜ$dl?H(}-=w[ʅ R`f}0Gh?W [[;!{#hP=pURPRP(wd!iX)}%Oӻ4"D>ʋ鰹,:#xt89JRWV}'&̠= J*sB˖0B@0%P}BDP3(J@AQ!,1L@@=h#8B@ gϪMY<3=N2V<&mc1VlvEԩF \̋YsJ*m])h+WnͶVlD+mA`HJ[i*@ml3Z1l Jń` u靵N3AM#-1fR ! !Fmrv" X$ Pj~$ 1r\h$D#q("i 5 IU)hCP'\`S8qNi ̱qъR Dzzo6^RDGt9!E5F)DUAF: ^_u|'9֣" )[qDplS,R1s16K**<1@YolVq1S:<:EU"5ALM KDFdfz)fˍamencJ:Xې 8^[qI0m?OD>99'pB"KźFO_\7`"}$ƽlt9GK#S:z?d ๟N*Oh3E|A'Qb=P呐5E>mo,_u~MI5n+jQfBO֋ p/=={G{`@"vhWvmM#V =Ziޟȅ@0,&89:~ ҟl{_CjMlP=0w؝YӢzA ҍeK0~N!JҀД@ )Hh:*yf{H0Az*a'\N4U`1Vp[(`نm,nֹ y̛)Oټ8 )(O,Edb@Fި;S FJ ,+ iA񒙚v1D4S975BNC:ၼBOZuX7!:@Y$`BXoy C-K!V @,Vީm n ҹ Y47"PbHeM LbYg_LD;ovj[Q/w1({2u3) 'o[OS2gHq㈶Vk\K)ͺO,!:9nyIdੴ(eE,.ûGM8̧0M7 &0 .J5On!Ҥ*Yz͠h,*u-M7N;dğ^v7MNܙZFPP5sQXu(rQp;˹,_ueay|]0T. {7ZBjj@l@$.nQĦo4;rpô Dkmrͪ9w*)HLܴ240. L3(Nͧn.2\uMS Gy\.A0`k yxdPdI\Qa5pX[JcqDRt* d媥q5-$͗Pid2I;ax@k3]fͬtzs9r5aP݇1/Y*,̔rw{s-+)euNw jdV[C]3 Z[a ,DFcô5ԝc/9xlh=3W܀BluKh\N3s R΄)`#yoZ<ҹ*ReJE"(ym:~uzzL Xj`)mܥ RJTYXқqh\8".4p0[9DƢ)iD51Xa65d<& ǐ q$U^&lTS+rƗ31uizot bJ`e!3ǝ3[ՅC&N] 4i+w`44al$qI2S&JѡX3 Lf7!2d+ wn\ # BuιvSm隅zaY*m%AC҇HLI5޷ IXv!8VMCvN=1@ŋۑ: pv<:,k m*JY/>;N$[*g%ٔXp&_@=Ґ )C  s"rB0lhɹ ;i2 ņE!)>DL8F KlU,$21炜O}WsAܡqppMTfAIkX_[G Iz/s](9>T|_ D at}+{xq}h ԽC{qzkG;T$Hyv7þGX |s PJ q "7|e)ȤFG!0ĕr@ꢑJka(7l Z{TUH01o[ y(DuBEIREwd U7_toOdž@wz8Awo~Bf0{U0֟!޽.! ku(qOd Rp;X,C9:f:ϼjE8l'i*v¦2{"g1v'h-e!hL 0z``hz$!#/ETQ0C~IQ!e+}dvlˣZN\y7PmA-wrB=b}:%>Dy Fb"͈]\#0VEPd HK* 8'%üQ ԿcD Ebh)*)UFE%STp^=?`~I~M$2 P ؀n(!O?e9R}0eim,)qɃZ[k!!d$~6tn?쁤B&!fF&`0$ "x*>j=|Ct9傖aKJ*1퀤V*Z)R0wY%1'5N~U4cT1Fc4Qbb JHC(TH"+**(mV)CAE-QDD5PR"b S&X*0bO@́ V,U/K K`,!HMD؉Ԧ`@m (@@.!q6Qׂ_ߕ6P IJ"P-!-J+JdrJE(( "^aTS˕CQr BY zh!ARR10BI6PiGF(zg: x~LUC2-I/vԏ}]6"^2 MQc8JhvDNX"̥k$"hZ&FpeH|2 $X֟V{v-B:OmN:hĩ&)_~/HkP' }t(rP\hk4kBa "j (X"Z Oo7z̷5kh/Q9mggD`0.Ѐ ܞK 0k@9 ,GA@ʀ! O.c Q)FSr0 v xCI=>÷i|`u?:<_g7}UR$R'H\1)uj`}UUԣS{1 PVY& `Km}@:X^OВojYC8³rHȦ6՞Κ'L0d!ħIeM2:ƈCf١zɆ5Xl,2pɜa( |SYd:`W̐a89p 5k.q@~.v|ny d?H,2d123cl9dd钎4_C15H4@k'EB(AEG~gЅح"= 3RTEz\caiBʁPTC1ȇ8!D'tu'tvjcɊ%!PSv{IG>G+X{ߦ p?D:IE *'+X˖IY˗.`*hiIW& BʦInKLzG"JWhG]j\g7Mp9R eMl#idf\ \%J0\"IK#f|&"m RLJ0~($}?g BU,eߨTu*i/|^dp!T{tH% R$/ADbd!TSLddWɘeBdЧ@ ПMbAA@)*jE)Erf+) wCADg Wx 3!DJRFh@8oe<5<;|=yD䛸%o10бb5lI(~nCОx! j+@isF"d䡊k C %U0k[DŽ,Bg8֫'هk6'Ls~yȒ &&)I >gV&z]; &qx"RŇNͨ{,2r#pchʲVVҬVZ~\ F}\U 2DU4D䋤xLOLp@Nu=k o*zqTښ[4Ԝ6vkG) or\0ӄTP2!s,~PnMgp0#yK1FZ _5V~~x,ݕǹJ_y+!lqFrw-'7-YdQ %{D*bJ%B$"I2̫0HH UA*aLdPZP ZH"UbTj@ @\@JTePTQJ8Y1h BVDBpsdKjC2Qo\;O2=}aXWi3N5!PYY bcThiXmN S`1Vr0d \|&U}8L7,-mHҍ߇XbEp~q;Fh :}A/mJ6!W&B6ۑ}]5a%KX|j[9ϵ4eiŬrc~QWUD c8բ7Cdbug=w8.)$ł!+06F{OCiH:KijZ%7#[&V7SZA n- P* HA Eўq}J$Iq?1H0M(|ϸ P@Pebr行Dzo1I8_4:VJWRDjo, ,QTr1&~rc2\ׯ":!} lJpaP} 8:PTh f* Q0 )*Pq @dK6ݭ4ZI#RZ& ;xn` 2 @o8Qs's:2XQT`ݯ2$("!r é܉7Ɩ#v6)=q C@A̐MHrU@ѵpہQ a`sD3.""C*S_5r3E-(lC Bj^C3t;6*Yê7}` 9U=6톙*S%C$ ˌVw75 ;*0@ghӲ6@'B{߿U(P!U4Q+D QE1TM0 VIz֎c߈&`  &PLSFfP%%2RvFz $ %**nr zRRÌ"ȞV R\[m C8Lp_ȔDjHL`cOeHNA5)>!_@N#TpR2  WG~w>s"hR %$*!6JO !rD@TPS$Ah(5(`"204|].e$Q >JlNJم8|IwcT80='(A}x?OaVtp7@$NH~T@M< 霺0zJyPv8FBB$xQ];cG{g&pu1CRS0E>.fTQ"H*aQAHCRt( ?4 4:*pňLXρlrFI Ȥ/3LK46W3;4&\S<#Q;bti՘IUDKhS KqY*2$ KEZPY ̌q*]PUH%!k+.F)KT.\qDQ+EdE",jVЭi TȌh[[eD,UP%"UFe491MPS1) $0PK !h1LBE9'ű2pLI1-CY 5+RpP`mv\*" `¨b&bJMu=whMۀp>|~|-ptV7d>Dk}h$D(iZP@F i)hFpr"00Ȳ IBLҡF@ FMiV&a #@%Y`l@F0r2X'Ll^=P-.3Op>)f;cK7ofEt~fe>FN.^h;`4{KdzP_:z=awU^ tQ |V4 { W/lU yE \Θ, IX0 9OTiۢZ$?T}5kuE=6EtH|{8R5-,p: /WbJl2} C\fBHR]UQSmT3V`9/IM lO%Y9>s ^~C%'x piNa7 {p{Kochy9#8Y}}\C cGtk:.$ A K|h< Z8,/f0sO9Tl2 qk ֝AR MHm X9AP*oЙ5ET2TqP78̙oЇ Q=zLPfM&R7820`C9.nW^Z+ S2+"@R$ADF@5 BEb( a0ɋ$ 7D8/EJ5D&ԼJa#pCQn'WxT>}̯7Lʎ7bFrS % "jT$1&($BI $!Z8xi{!+BGƄ@%X}Ɋil Fe*"R51|ϖ 2$*D;bbPK;O,qt;OߑܨA!INSr0BU@D 7-Y8$za2@IGj5 07u-χ4zaDzuRt,hfCHm  )@@R R+GP J& 㘪R"RP/98*1p6ԴP P*R%+CJ-CJA@RҔ4 44% #B4 ( @9()@*d4 d#&\^r&rC@0E,xM-Қj%IL !dNu20H&q, ק3\M z4c;-QSvE$S mm3-(*۲2H8&!GX):ӧ'D- QE$V2X!#B% Aa4,eBDJQ"T̾f&]XJ5Pk i((i*\PQ |il[+ª!`e[a*4L)rjb4h1mJȼ`Q=OPsNQHeDq̢ U+f1CR^p qDؠ*1H(Q Hi8YQ:-0-V&<'8t6+=cc<&,dV@TduX)W PbDQ$:I1EU+J\cÍ9K9ETHz[BJZQN,,I+l,8Ea$)g1-$FjJT ̨w$W)Q^L 5d^= ){L"DLsQGPIn"QQ@R(unA`Q:6(V4",*c(PRqTD)JĔEH0pRL*h,&*JBj$VVbcJPɓ4B(JY̛;pUH"DP^fdhW4h暋u\͚dKZ#meۦRO PYJΓ6'<7 Q:Qa` QqB\{I$ڌO$^R(L-醤R("zs"3NphMp$K{bE&FLq^(x"@y1WU$$ "9{nRg-ji=C2 r|;P߆ݡm Ksיg %YUarш,Z5S H]m,<\ p2֪m+뽳sr^4bEH̽dAA-XcUQ1{pEݛۦ G N i#j:"RXh IX *fNRa!I!`F:BzK'^p7apIđd_S:K+ 1ZD"(`:έR ӠY%oږY6,P~Abl!{(#»!x  t,>d3) >M'BBࢵÔM fP |ys6b=-q6 )[=* 4)Wi e436Q"g+ ~ gi~%l+HW 5 ]FǞ)P*LX#I ޳P)=; 3 2j'{\ 82C15 ]f@VQq?inB6rт#5Z,(vTܵ8T&IATJIEz=tgP;D_P밙 >EDdG! :HBTknރYၘr§I[+tDT[V˔]" [W[!2 r@0gZ4D 'H ?)P՞sh{zna,?^rdN 1E:V!R_: !m.OI/]PFW("(&Z H)20ZT]nut/^GJOn ϫgp'SDfX;QĆ%9@DBD5D@5TD V }0ؔO7cdUfƴ,Lym-m hb'9jj~ڻnB6~/$!ܕ^.LcYP?uX/2կfYbMIBDtON0K7n0ub py_2 QJ߱/B JTIFR VKڔLo<%ơ0D4J 'Q@ kJxuHiׯͱ"7(ӢVeDd?ua W 16A썀B)gF;\_8!pfPc",2F(\Xk PKE:9̘EEsÉ=@dVOX0)EYm^ QlOf}> Oć?%рk3n R!Ac4?Yy$zbQ^MrxzVn3>ʶPT0CKS{dj>hSҔ d 2"H&Z r F!(6!X`T0D c,SERG b*K?PtlR `"((d!D]!"Ffl#14qyn};*KmC;36LpPI!gW4'îE$P uNrHR}eKT$L1II*3GLP5:PD1Nn.P;#D& 3F6|8cKH4!Q  ԴA 4HK$EH dl V}|ϵ>c2P;I,~u#pR(<$ h(hH QAH@DE2@ }>7SE>hHES`<|ȀL(p-mP&,j}LhE(v] ^~؉٤AWllGDj1q`!g!@pe} & $ Ҕ%?3ZA60pM{T94;VC 6V_G_9,kW2B]hBqBhxDq6jX KR KS^rGDuu?7"8ـH;7e@\8Gggݰ\%iؐ b`2~ӁG"HÓ0+$Dp1b\@2=0!#)8*"f#6_2'֦x$OA[ۘbEdDV6ʫIW+m['3"F;3hrC $'$8AvpC `b$(?SV&1n9sRwjDW4F2P(D@AP N=hUM&U+xD0Mlh ( =l a]VN;#+ce{Q*? DZ9QXAf@)g\6'gS=NK(V&&23lwgHl>k Al ϛu=ȹp* GK $rEt;~P/'Rj d2:0a6iVV2c40a9g{#f;;FZZ HhlD kp&.QouuHX@0O~xQ6< 覓V5`9Q:|Wu_Q 7vW] %MCr U<3ؤ`1d30@FFa'm^4(OϨ#ybtap抐Dg K%7/b_TWT2?v;u^ Zᘓ8GlO#y!%a.!T:;؆wlgjHRdD'%$a@#c]a;K֠R@$^qFkAb#O4LE25V BCt:fPlTMaϮt'l ް9ï}3Y嘣,1yJr]5ض¨IT;l% 2,3ˇlO^:5ŏA ΨH5J!7JZAbvWŏ}<'ΨnwX WGV3Y`睤3Fhi[.np; F׮ygq0b`;\D9Ww1 +l@\=q #$m_QE\>G;DP71t p>՝Hh"A=ᄒۅ*wbCXtoRs8]O$08 ؚ|F b0mD5vK A,EC7 φy\dw7a܀X>XR%\` X"Q}4HqQJI; w;U>b.-R*N h}ehG]#YU /$p~ C}2BP7P N8 uͯU" @ʹn36FG/}HÃVE9\5ŪdDD fqaEA]Egv@D=G+fiB9zB!9$FFfF atǙe;ʨ U lGr 4\X =ZJ%c|n '9֫h{>H܎:6޵ '҄Q48>*]E5JU)l(b%3L1BQ]Jf C6W"iZ]#Z# %xgB*Nf3>N&ٞjv@/"0"ѐZY']b0lLYe~fc`L?:~3aՆkɘcz@v׀Z@`Ba!QOY&?5_yߣY=V\ҕmt0B5ֆDև*|闪Ґho3㬕Oe pB (eqG佅34/φ5V>2KzFJYt hgT`Pyr7|뎗d[)vR*i}~6k=Cו){.Y`U/'O7$P#5ࣴ5QF&ySjdU"Cxa δ_Y+I,M.PӚ2ypdfQ{<ہĮ'D}%Ww*MC92mSF7;r蟂 7ܥDI߈爥Z; "Qb)@rj\+?;u_uzeX`а6NПʄBjyPZ [Wo$KE @đv^ {FL"^Ϭs>xW|kk{r]Z@հ|U`D]f0CfdXg#:΄GF^I8 9ؿ:/]1cnzM8:1y-er!h_U#J8n+6Z:PAAZߙ˂c͖Hm(80DGbT=A@:ه˰9y C`+#mf2^; A$'vL'H{g,&~`xư-[k-0AdU:BX`m9Ky/?dXEGP8 E8eygo3ή/a%4p CRMEq\+ 3V8kI(ۥM I 6(/sJd&͜0I׻;]N$hHHǒˠs'AhR]hq C) Mq3@Ԅ"s(ABu ˈP DԇG5WqT݊ KhvjS gқMX2f-\i5HMo "xG7!MSdPI*&"(Y4dǑ Ttf< .bƁ,OvkwU}SiêsݰTwz'',  '0(Ξs APm*?4m4d*/܀mJF壜6T f,&E<DE첇Nt;#G{51rr4̘R-9t Hʍ4h lH!Yˡ$T0b3A7IJ*!A0`ZT֌-MBΘGJ^ .: {<Y] T.\3Z'UNjL6wtgY<6r0y\1I!ѦXE BPQN`T)@e5 AӇκ8nɝٺsGʘs'v<ǔ-CP u^:w *W.-n9Img,X-NJYNYxfmS ͒I!w(t:t 6u-jgnJe̴’^$!5PZp4Ɛac*G'e1Ht\t7v C,LMK֋Xf(5K^ FiQ %"{T5']4 ޞԚ;hk'QTパBz} {X\:-ဃpˎ'27O8[C&c䓫ax>61~v6e,9D;<pX6dP&SױiND9(x50HAР^/pH7 8h#-8I:ü˄_VxIZXDdž&MV{2; w= x}Ď)ŨkT/ާ4CQ5$`ZJF:E}Fҳ3 (&[e KMCjBd#1`BiɐhTё+u'G\]ehnob b(p\Ɉ@g=E\CQYzᏳ?N(~ O8LQzvH|4`eӓU%|! U$Qθj]X1}RBO-cj}79;2Z$4[q]FˤeSPSR vpOR]_8:@%:CATRP:eQ갛OQ +EcF>.l9b]isDoN>+~,[:庚EU@(3" qO ? Ip 2,J 0*`?YEoU-m"RTF/HK0UH%?\<)!U<'zلmQJ"x끽$f^liQ$k*(|vYM<d a }d;8kmc| sd "SҲF_2\BOS3`԰ҚF:$ʌ0RDSj1댒 ]~JSP{)T^(k*ǙOPM@ YE;JT5 ``@x @!Ñ. ` F$#(00 7ǹ{ JS%xzͼ t8/EH, _oWk}WKvQ=̩yp <*&1yJ7PƎ$IGP S$h`y!^謌X`//nq* ʚoAT2/PbQB|)!P ̛kA |/ 2?/hCg>>Mċ J+&2u!#H|.$]WHN b|`~ OWdiμ)BC#İz3r&h>UM rν,6lqc.FK//0Y?%PtAx,(%D : PDL @P H)L 0 R - HDL"Xe9+A "HC JF H FKbJP Jd`eJAT(tRj IRLLRBR rPh\ \ %X1Had$"X(VY@$ })p m^QQdF %1cLr@/@vzSkcHDLd&0f&I'c)*YE AUJBd(*" S%،)2rK0ۖ.9ٌD@DB ff`80FP$ψt4<*U+B.2+/Lo}kk`V*yT &tv}+ z֐at0Q L A< 0pK6Xup스;lBX2P`Jnˠ[h[ ÑjfU"CF)3Z,0KLp4+hN,h JγLB ,*J,Q !,*+%',X]b[;0K!PN9ǜyw37iW}UI6 $I-e,mt>=E%DN' *|OX. 1 ,gHff M_tP@:at&'D9`b>4!M#J j,w@wF_șԘ{ ΀xv$[3?1zDW }Te3cK/hzWay85d))ܑvqZ.u-3-Fa4!p&ji@DzXrzYW+(J|?qW + I\h<#4ޖ'r9:.c\waPp8+4 ܯ|-AkJN1Tf=CvoE ' r\"^Mc}Vlrx,[IKAAH,|O0\ M,f0qܡ=b*\6`j "a} %xEv2*8xa!!OH*|.%W'[T#Ql@U. ,L5bϪ:z"w`kτRfp009% RMAuG"xQf 00OtSUm$L'Zmğ轲A@7#b>tC|\(}1z%R|f9KI96l$΂< 3Iq]=&W "4Y|mL[yp-!2kbϦI]DH9 qo]qo%9^jsGʖ =܀@oK]qhDGi$g2:L!PD><&ЧLX<ҊtdZp>dq> z"#> J{yW`+%667(&c EPqX¢uAk;%;)QJPZ1~e%BnWwS>sC$YӔm SA&XP@]efްGO8 3|j1]WC=謡ED`ȼ0ܴ7Բ#9EGKˈDI0LϬ󼧡.qf<{`GC4~k'BCf 2y"wÓB:ܗwbHOjOCcGˁqOP7φgvFg7 0RpP͇"A5Q D6NP\!$ph1c00AQH32;TKɳ?jH%Aor8m9s3h%ʉ!8a0I8!RkFЬ@ZeZϑx$w#&!Q^!.cPQ'Q) d(ǤX+翮h:תh>LM (“bM.Z-]}dV͍Ό# "~Jbs5""DG:#  $2k,$8P3Ϊ@0:6E-X2ѿW4m_CVz+Tޑ<ωtREH5nI#q } :e~5ilȥ#}hrCm!H9Oβ&l2% NR0#]>zp!*cl3t䃡sUp5f(H.>-)`V $"^ LXፍM1p5qAaCƣoØ0Nc,Qn/#hp+1wt ΈCxc=.E"HEtXQҐ3" i9X`LMLГQKdAlVz_pKn$= \v9 Hv,_ut(J]iI - vERVm܈Ą@GU._KWCX# A9`312OҴNn`{EG!Qz`(GRy+Dpdue @(0Ha)sNm3Z;ɔJ "dydZ,J[а4`l1NH|!'*!Θb$hY\ڝܭ<8:ygN*sHW,bD7ubɄfI{<%<$֣3UE @+De wHw\[es֡ ia=$pEb yopbvont5 <{@*X%$ A^qBdLp X`A>:[d_kA1 =~?< $|O.G;J%}> /ν > G`9#FD;<`nE L-Q#IO@oνv}1 "#vQ+Ez|2H :uGQ?E/ӧJB&ǬCTeVG6㇜mR<5LM QjhK WB2D ,6Lp[,@` 1 &gq x<bd&Z2 (k\ 9RR7g$lpxh*D΂͚bWD|Ѳ 웒+0cEтfϰyO=檜l`U\80v*>hN\ve .*RHm>V(eH&ᅐPJ%/Di``fTq9|LNYeΐ!A̧ig@ hYȔ02`r}v|q2N0; [6Ӧt82̬F& 6=̥@ Ʉ(bl 0NIⳑb\JSN@t= yu<fFveU]?sӹc6z#sbA;NnF*NjeW(_27"& $Ig|:wYTjjQѐ<]-p ʣī\"RokSOȱbtPi a-_35VȲHXH"; Ͳs>C 5K_g9:Æ[DgE#6+MjnikkUƄo[,X1qJDaF٧[l[Ar&'=aОa2LJH-`z9,3)D"9ƖDhlaqDya 3y`bu2I\$[Mkë;wܕkH}L{5w`jV5־Ԏ0X}zk_ C#C>M"LǤ1.Rzf$u"Yt%8Ar^ΎjMT T>TΊG̪Z%$QkQ40;2r˅W,@dw&Қ\nQDs1-J]CK@m8K@d-Q@UBR4dAeQ@I)$ !`$dRФE-SBRPPХFA4@(%(QAT-6ҁUiX1#n.⇹RQ趗A Z:>a-"0I.Kz&b4D AH0jb 2iH(k,ۖ2T&hO*ĭt"|cI&g"$ $lIJyF ㋜DCT66Fe#/ ;:CN6lr tY$:;_2-Ԓ`D2B@])P2\bkG ]CMްެ&ꥀּ|^*Ȣt5QT;+eij#Qlbh^o~@{SPmd #B4BĄCBڠ+@4 Z7B~9)HdxJJc! ?H!@p5:LRVL@d6JU() Zc!S$}: I$DcԊ@^wRcCc#)9Y?KX b=|<̇,ní΀/Tj-i& !c)9azKܽ7j"cǶ>mwѢDWy 4)>w[>ocĩ k>AR!50Ɇ/ 'NL ٿR`+jJ$YX;Mdy%3 ޾YyFpѩ;q" CVgs cl!{im_ClyCa ( V%kPQ̟]m@p{7+Fc8|'RSJd˰=#$nTwsԂU(ucG Z4*BmԶ} T)981dRR LAET411)Q' q5Ѝj.ys S. ߬8c>,_JɊ` EY|!-F ЅVK l^55$郧署5'TG.r9{%* h) RB Py(>Xv3N""'AԁU$ABxPp-}M}fAM >>{jJH*ZbfPeAg)jbVIH|dPP>)V'!xzu]$OpQFC ?O9^&h}=PHulm 6S ƙ1\I?@C}(#fLyُ,Yg+Ҟ3!] 2x Y"^am;L@hx0=@Qzsma&M?Ř[bsi4S*r)2gkU::#h p'AIT4x]5vh*aMdz]Q$RQR2 ЄXBTgkbd6u.$Gd}A.8щQ>5"B޲*-Pq2Z2ٕ%&L,KE*$?Tsk%I, QAhژ1T)(T@1q f`8Ì",}3UIxY2_lHB EeCqfn ѽaHr oR1bh44)+HT0%P ҙ޷ B*R!:\83(Bi_\ajb{Q_dT0'Z>AKN:uj;mI ru%:* xB;yzA&O4֧`<F|t~]}"2L˷P<)?\d'fjƌx5v%MaG|\2Vb {~Sld<u!pzCe}]&aQf`N,S+hեi˟ۘ!Ƅa`-(,EBrFGS BYe $(`Z*%h)3 UF M)[[eFMI1$VHU,@1C)2n >z}ĄVmمzAkmmh8י:c|o* ԡK;&:Aƕ{PDp@Q10ADLTMRI$J&OR-#DS,!̼'/f"! Ra,';5ʥm>RqW JB"~H3G-<, O!J6mj8 Rx.Dlwf/BSRhBY8l˥:Ğ/Qя\ ") 62 w3IgIeE3ch$vxp֜0?Qk2 a%2#(T¥rTn3MyӱuQ``[BP4a JDl c 6(JV,+,`,#hԬ$PASbHl-mE%mjZ+ DpbRa̰YcuʒSRbK&Xbc!E+!&#f06]kĮ"0JqB̧Exytl$3eHOc<4߶j )Y2bmLK-k.9ϔDA=*Hi)H!15+ niP0]D-Mp ؉+ <  sNY TU1-3U4 UJAHS3oBĈ4(P^R( jqb@TJ U2LQb2C@BXԸG`,E-qM"+?O4SAَR{tETb { .wb<ɏS2[u0^se=vq ᘙYjQ&)F@Knq‡i9CaWliփs7h_DHsrYY%E!3lYC8b! Ipt#P+yW!@99>RpaJ"7,mǡАxf`ݙ'>ܪq-G.BPhP6:t!y @;5V->{RN쪶>.!I0?޷cniHD=1 [4,:N@5C%,#EC|ZP(j@FG_V :~DCdБW3 mL A$eJ(b:k0*(I "B(jP%R&JH"$"hT)"%f&$iQjh҂v@ J*PT PҁBV/N`;#Ftc.e(OSdM#O!zㇳ|S,(O ydIw Ix]ŘF@R#CC $A |URzq2\q=sjAI`uKCT5U=R JpB;D"(bbHQҝg=oqӷӽn,@L%+U"rw!DҊ-qMmn*Sp*i uV$niD&'E}vvU ./s81hT^fTH*◶q8̧ܰ>Cm-fQ8Fx_~rQ$e \ PyeMsѽ`q6؊2(=kWٕrWe;3v8`rhT+"xtL4ί= Bx@!COM!T܆AbDˑ*B+5R33ypyյ7Lu8rڹŲ7M8'9nm Y|ѣ(X,~mLrqX>9ל3ZFԳ0 {rpڀ>:r*G  D L%!4bF 4s[ P8 j j؅2>3G l1(Si(P!4BPhH:`Zi4 Vb6k@2V4ؠ\ ,[S0 rnV91xD챂7ḵ%b0%42:>Nw۩XiTXt ޲N^A.5?*@;PӠ0pnyl~Y Ն C*0o> ; ۈr:z-C1:!VhqV1W#"ZAmA Km L mRĴ)L[K)BZN vATGJ )> Ptz t3MQ̳@w8`RPذl;BU#PCOSDDDU)DTU$Pҩ⩒T/q! kBGC%w8y *|KM RED"*h@(( Jk'&*H(=YTdUIAJ(2`\ǏބZ!G>owbtYPA% ًykmW! O | }$}>^$FTmJl2PP%"mxx@`#āܔ,x^ȉe>dq wI6Ҕh \;L$H&(8Ij>ٻx CG!B,1u"͙zksuE)(: =eN Tɉn}Pvܙ'_UcsnVӳL3jh8yNG44핧O0x|o"|v_P#C\*zxLzw]*|J=t=C9m@?ȜukGW;e 0PQ}*zr''/&/_߫brMl Γn?ׂ>羅SSC% PvO(r;?PVIB2(o"aBcwwx" Y驪X}(ӣ]<>^c}z_]ӵXoc`@{O^>4>NϾωwfֽz} ;O.C^d}랤&IAU!Vw>>۞{z=RI ^=j_FDo7w>]m۳GǻK\ϕ}t}439v>4 ;eOOM->=`}>u*z@U]>' ROKݺݎ{l[[Р{zJIJ|uώh $U|R27IP MS` )!@UCE!X,]uJ>}  e} ^*n] dl=9 Ϡ}@ 7aç9[owuuGm,ݽw6^8CTv+Ev:uNt (Ko=sܓ^} (C @ICmM5@t㖻Y۳r M;1MwqG[|)'Gs0(}CލzQM<:ӹ %RUm`Mw{1K`U}= -pݻݞu{|>ﷻ݇|GұDz< ڒq:}{/k{Nnzo醴b}*N˟}x>Usލs-:CݙݟwKhyӤ_m;qKO=7O%N\}}-|C_ Tv>ڗ}wܽܵ>&ӷﻓvlyaG: Kw>fEg_Zz;OK]-/|؋uwΞx3@OcVVjח=7{׽'@ޟY=ϷKcc^nA>kg7{3G]w{7w#m{m{Z|>ەnkݜvl^w4>;}>oUt[9׍_/Hr7v_fR3ӏWtPTrFʁ*` W@ˢvwc*A*!^t=n$ymհ}^ړ޴y>s7l̖3v=|u2뾷]v{mt}kIwtPF+cIŎwZs{@dfpPZ;{e\o/=۽m|j>rޜ)QsysZwkmz<\|]RGXx\`ʠFחy;{^UvޑGcAx] Iguz;t\vuwبϯ;Ѫ44Ipu݆hQ4`Oޞ|}͜h ׏[zz鳕u6Tom%vigFuMG{vqq6wlӻ\.>x7s|wrT ]jNt_c\7>yg{݅ =>n^a>d`( @tҀ2A s fwzrӏ뛱Cw|WXe۾Jﯰ8w{m7n-:>s*{]n+U-T >gs+D+^7Wh &ɥIC@ MA&C@dLGS1SQ64E$ML!1OIHOTz4d=FC `!H 4ILEG*~Gԙ Ԟ$d4Ih%# iҞѓ#S%?T#SɦRoEF&S"DB@@hh DʟdD§=IF42~h0h5?'ʨޟS>4C|F-{7Hw P1U-)Bȳ $ZR D"/o8sU}"I>@O'66˴uLk*o:'KAH"F( &T$()!D5"T5 J4 H P䠟Q"_ JT MAE*Ȩ@Nv .l Z75AB&B-).BgG".⑥QNjw( &(ATu T" :tSNH*DUB)]0  #HMT% AGR㺊O6"$ "RcCS U5T4Qa$I@Onl翓~l? 1v00jA(H< 0 bkrP.F CC5T*PĮ(D4! BST%11)mdB90HA\@ A PT!! VeF(FC"pXHFc|<3Kv%|7Dn(kr%QRˣ8fT^} )A'M E Ӷ]# $H%sapV(D254P=6C+1=#ʈ(~Ha e# T1nażh(^(FK2jySNb[υ34"+g!k0;ϥ0f7'-Sb_«=$q3f&wmF>ot/dי+܌< OLD0kwӺY>~2^;ȁdT˷F"+BT9*9a:.A%mr #o0oڔXYے$=A}V6s0A K.M`=3\d#d]~Irv1hrJ{<v, QGY+4ѦV+eeEt"4a/pFmڣZ5ڨ"7gw}Jc}#0&rsQa/++W沍|CecN}\ȏ戢-fR:,>?ԥvUZ9=M\Z)LwߧqUQ׿'qlg:I"C\QUWv8H(.e /ѰbPOϓD=Gؑ}8'ۉꯅE6˘hS(WgY}trң΁֬yT1.6*6S׼Y|V&0({"שA+GNwKIhM gy quZFl!{xrS A;fI\0:" qg>Jt|s0^M5T hk#e0 E24"}X͢kk9X9VS Ҫ2m!!t oM75ӈT@5zpU>ǝG.yûe@ԞMdHE>MbMDLnb.aNͣc+u~kq&ըsO ډ3)ExD$Wk%  J%4xs"^qm% :C6d: ?rL4ř1ƨE@+L$7a*X&@׻$kĞ[6Ei1q ҍz/DtUj c1NB^KM篟׿=LgjY5AAI0I@l_\ u%Q 6@=l*]&bi&Yzh]#Ipx z_~yRDACgdL"ASPF_xЧR}=aYm/d҅.93Ѥ: f9э4oU]+)Q~|pӪ^}R9L4iwI%k,餭\SĽ_Mꆥf9+UOY S[({ɑ㕸Z?GE,樯)G dVK.nPY-km8c>̓ٺqMUj?DuFqeu7Sʷm߯v,zwNO~5(+#[MWx3N<4)ܗ Py F?3GPt$Ī{UQqkdZQtX6VUsR-ZZldu:q/{LI,,a>T&Yh߿ωv2i;. 9 ۢp_8<1zMĴ#PW7RDg/-w=E55cʡY?FЬ0 T :ADEeH!PL=ߵq݆{g5éw=W>k̖rf )V:,qWdlѭct>+ȂI AȁUWSf/J*F''$J0,3Xxŀ@ VwadHyUgTEӺBJt8Yn.㌟6`ag,z =5f$D·sRX6>ݰOZ+-3E1ۙ>cdm^lj^!B&>t[˚-b2?ۖ|=Q3#]2)ψgm"TBFP SxI ޵#¨ԇ*6'њ1O4")&ht_Q۟W+O氂!피׃P'*)ym;F".J+ēv-F]?=Yn*%S|L$ a)mQ comEݪlO,!zx 95Hg >n Ba7)VVSblgKBH2c%{6thq1MkY `m (Q.cMvSK2fSo4lEiN5bIؓfYS#bplSj=da~ #dj|_ǛTZ8uYv7Qf]z3dz99ٍظf}vi!Ӡ.t8w wG0{tCJ%7omx~4gzl=|g֑P%DP>PJPN^x*j? Kܭ>Wy㵳 j a,!ݙgs>y^$cb(wCN}_ɘ1$HM ʹ8>ㄨ:o}|qx\q^x8ٛ YDMBoH@[Mdn !O'>]17ZiːD= BVDE(`5g(2JjM(6$< i6=#.>m;ɝŁ{CAc\|[wrB\%sVl#87*5i&uu Yգ찆vsMʓ5qllQa c.RHEM'J4E5ANO9(p--I7`>,Aa.!0|=&AC&֡4(;C Q1`vI7s&C5<`*|ի ;mɓ\b]懮˳wwC8!0d7$B;ٕ=]vZV<8~S9[P ^3bydBS~ꚇp; G&L5|dX3.1lwj% Ov(guj͸S8u7qRJa\A] 0ioU65H5i^s-a, faiC=>njz)!lt(rF%/Ӝ?ntj٨3)U>^{K/0}@?33ą OC9:cJ($$bI 1spQeP徔Ef[!ma,mpQ^.yE_,*ǎ  )$; r 0ƆT JZHaD%ZR-)PX$O6`_>(@z".w0[:Q+ &/8l)6n'Vk ǘNY.׶6:Z䌲U Y7!E׶s~Oh p3(()"lJ@&ӳ۳W 9=w>Ήlua/ɏ*j,0,\Zױf~}?iH&m{g>{MeÌ>>3;\h4(n)Feߢ#p!#DG!`{xݢ P`?wT̒=ڈ'Kv C|+AɄ$$!kiA`d)Z* cjZ~KoTXZ>QPq3B[+^vtfjx;NH̫(bڱ<'|Xi1`TTyBMp<9~سwѲec8v#Q Q%ϺUح|zC{i7lj暞x)!k2&bBFzOϯ&~g~wKI뺃U?gyӔg9 [1e( /2C**u!LRE;1X<,fACD.m-Ka |3DCrma-#"\|?޲zjqq!hLjVR,խbQ?CJ䠅e߷þ1 C#$amjewWnC ]Zf6g͌TOF)ÕKp݀UVܥ.C8<^?"$}$$7PUu;ڪ"dfO_>הּ`_I7,WS2H"#PT514S_Q41b`6MRm]!2|u " z|~7y0@9 ClKlC||OƻNϖA.o]Y/Jal/L!4WHI#.ui$ AEv=h* &K?'Y+QVUX|vT4wv9TֻMl~md/? ,R.t$ըa _Ra1>߇pI"p'fg,f;؅'0vfM;hH1gM9>V~/[/[4)$cSw'\n;~ <: j)TGon ZZ#0n}GFοt% xnWe@b%G ԝ7틈HEL(ր'{6jךST$Qp D!ta jc Ggx4vv>N>#q)Іy "a|q. \FG;g0Cx*~)χqK͛Dz؊&p͗ (6RmP[?w&?@rXRLI2d}Ay1LS姿褛Y_69 ":qHGÓ)'](eD8xxk_͕|ү,}?/s'zy`}Ӂ_zj= '4Jvo&y7?HUu~ʸ:k.L ҝ=ǓS,x Ue;uhVČ({d~N)#xS-c6 .2u%%%&ǎ &f>Գ INGKwTy"ŏgŃbOzkS=ܣ"1,-40}e )uL$ih`k&]|{؛#iwBa,P'oU<Jnޏ\a:ogQieL#:;gU( 2MKuIP YWJU: q9yOOOo)|cnY~45|uf̆yC4f 9A  k a[o(ccjCI+{:'ZN/N'WH@dBR @Hn ܮH(&Hd$@tm>p:zsh#:}th9vð+5O^C*RTI+)aUW> wy.`o3/bO;3N.ÏPipdž1A?+u2"DL3&eB3srQ?R>?9 g^וDʳCRo5?/P)#l?Fy}r;7{Bwf3 OA" &gWvNb#{ᓑu;pڟزJ| ES*hafΰӱ:q 箒4 ǻ}+t{!o,|" DRP-=.] mH #&6In9]Ky(l#T('E5}7-MeߒjdL~Ema}]cwyftt[nt1!(I0oǽ P'.VeHF/sU|p]{>T2xCũW< ,}](R@ΔzC"R}% &I@syZ ۘQS_U]ɀ cܲr0"S7_ܐ&.wNOt:a33R%$ 8)g҅V4@( `p,u2NKDwVx?U\WD2|$oO1Gջ08.6rs$|f=>Mjo0ށ;NjQSlr~>ǧ)]M0̸ M־Kj}ssPjAK OKFL.45nh*`$w0dKquGbmxAu%zbo=VY\wThٮOЙ+`k{:zBiR! qkhYa#sGU0uy l_'Ow!r ''&d/ڱrbUQ-%UkE*;|`ZDCj #qbXS"! e(!Eɪ~I=}uK&rc+,fB9K31W0s{[$F/ދӐ !OYT쀡$=&O1}NG?=?ٟ8j}D期| k]"YP|ͻpA_\Ǝ{UVZ 1vƘHxTāUC?L\~|K 2fO Tw!-I~_-E~[}{usvqVffbB^S/mώΪe.!Ȯi5C}^>3mGItwKV'(\U;r1ބa6;FucH$ }Ђ>_q$D?"q㼹 ~bHhZ߆{ I;f9߂w:JGzûvaquO ǯ\D3j8P-tzU9n<8۴:0*GQ0Tii F`j-I$jw0E7(`/biϕPXUjI ͻTxjW<^^2cI~gZ;x >G( 樗OXat-"ÍFãtɈ{̃q*kJlhaTM${ 0n5zgokoy&焦)udOMTE< #"y9`&C&@%-  a]>s~Lnb64HNxg\_"LEGݸ|ۣq~]fA4h2!sr Ĺ' ԁJ'>s@ѹC>M!n W7XoDlǛY A@Vᒴ,Md*Q@+BujA sB * T@B$@- M4K@ ?ӇV*2>b hlOl@HG k߷* }ט2&06*@V%^ְ)EF$VFQi haQIY^3zJt0*D$A@BDB / gI9H 7HdFP C^uD?nŷp#ĹKSE}ԏ, nܡDS_W Z'c=8i1(8L0?E΃:3%b=) Ҫ`=A0ZjP# ';hCa3j(}_u}XƌI\3aNŃ2T(DORI0vKBP- h F$F`jLXQ)hf hRb&f&aNɑnl~6m(8/6۪ߣ^@E l"OM6(F}l(0䚅z7Qq zrLo"@ ONj1oL1@uJvKWy6BoqJc0 5-@ٰ6ͬIoXD*2o0j">_ r<*)%T.?W7'|~}Ӵ=QD$U;Uֻ P;GAE#PXgDҠݐaF@!!d/ri@ۜvu g$uqp(ݶef$9窻] `cvM艏LzsH 'l a(R8׵  l2sVf\ZNyEp<@.,bCM$n'71c$erSekƱtRa'YנDD|T4Ep$` p)SPBQ ``4FBBd& U"p5;}ѻ /I7PP2,(1~8ȉm L{">]Ӷ*!SdP(#o u-\8Aer&ZJ D3?u d=ǚzc|!\ &q4ăiaIPL -ِ/rVZRi0-μl@(B&]$i!)8-$@]ph#`@p4AADdb+VSՆfkmVI"IP`2I#?GÙN%U*R R!!hŐ0,ŶbujJ ߙ6 lTsX#cDDr*1 ň=o ,L,dQ0for*Pd Ę-'E=LQC  e׬4$\+1yVsa9Ôy 80yJ Yq~Hbm?2i3V+_&&P]6rU"*hf&gALS#)XrB9)#{ag{JrҾ]]&o;;0;6&Z `(XCQ6f:"\ f`zHÐqZL$QLU)a ]ȃ+&QW"=L;#e1Z*).tJuVݶq<ꁾ#Im+ZOwp$O٦'XTP\IexO{(R@29d<,@58G|:"#MȤ_e~&,boӾ$ yoН:+,:;cޭ$ށ #$!jrԱadNoWW<>)凪lFf5Q ?H߮-WNd$01~$\89W"bq?C=4z sQq7)D^n3]w=Ef3ɫ~" ,9v|/@L :>EJ#(Ouo qI=ۡןYږG'͋>oױx!9rě_>~X5 cUJS06ئ7~6hWY6!B soΣz4-3NyRjMNq$d B cүM dqЙ6;vsFàz-ً2j 7# ߵ`f2u0RP> P@K{g* {4UtZע!: ۞ߚTbr%]W`1nLWEJ΁L&a&3#;y`jfrB7zﲺp:a#p]fVHt@ s؋ ~1+`Ќ6>\r8֌Ar6q4YbZ=5Nǐ P-DžH}vy*wtpb9'i%mצJTw矉.4OEg4ߟcgBxNZK̓垾JC#=~}|:25Yz7Pdpv`vwkqPL8zu!տF/"'aYc˞&l[ ӺquK<%e;/Ʀ/&;HN` S(`ȽeDM=.&mLXDhh zz:#4<]͓a (VmK7uř6e0c6}ee[w†}B Rz5;3dq fOdQ sB E|FD8 LPҘaDTOUXuR'S3_|{}4j[?|v*"-ZI~G\]x?麪 Нt1gCn$gL`~Ozg-ftp!_w8/7'sI"Q933X".^7yWEw*L3wP 3؞F0jӸ]|f@ܣD䐽WYHz ^n119.Ne}bHK`j>4;P7I Zc )%H Cȴá+axC Pox/.#Q" _3@=})φüZ$/NVgwyc\sÞtFĽI5hL+\1ym'A.e$f;aSgY&kM}R$+{y:0:|gXz q|ToOmw.RH05Ubk~;q>ρ~ش8j6>wHWA]>N=y2f.r*&Yh~0kfzh R[J2?AY|!E h2o@%Mg1 e\5x?\f rD{5LjO6a7Enӯ z ZBcei(v $a34 0fr}9h'0ÎbK#7f2ZFû>C.N }Gf>F۽L~hy7޶ۣr^sm^}ٛiTpڙ@fiy<I5@phYȋܽ0 nXL+o8xȐe+=Q F :.0CYL1>pĉXn#A{6;lQG+lh%ޡ職!w{]þ&f!At- ǎ-eݻ;yGWR6A$L5uavZÁrPo2 ך=DB* 7G;e h2q {cD< AD6lb׎590JL~4 D覎?qnv|bH\<3{ 4YOSmUZy#MR򵕕Omi쏣<{t3Y~B!dȊ XG\:5J"l!*%ӌ·$@~;9~6> %|2>ѡֹc ONi^|2+~Bz>4qYò +meuN]Ț0H_5V[O{g7CķtT`N>#jMgCXS(Q*ڃRȼ`^V@8A|=Zㆷ=:ܴ ` hJ)*Bf 2 )%rI#lBd G$q*ZtI6`5;nDcG)u"_];Fw}c>_Ay?r?Jڅ}(O1 Ǻr1~nvK܉:L$ gLIo1ˮ$vc.7u-$!CC |[Ώ:`xl9` SFb[ivɌI~ϩ?4{i>نl`Jб&36͞sټ,pbC2_UT?Qˉ孜MiTtm8N;$$3 gvB>dDF e=k_7ͷ3#a .~LԿ`>`hNhIslSL`GwB'{:R3PA,ȘYS+jjMH8P=Xzf?Oi&^;n_-ZքxK­Bb:Pgdծ+3wEv~[1ka! >S2sPjofcSOYGӵ' 7~q5:eyW4BgxM$?Z[pW]Y_e0vgG͖Fg ϛnY@Y٣̒F414PdA f0dqA'S&hI 0 3[m-fbrɢrycEoq.1Z ιvxy?:9vcrw Ea`5ـ;"+kq٥32Қ .|t 6Tnk?LWfkyLd]P],ōW6 :',gYY{+8qP[`q;zNPl8NNzsF#_*L۝S]AB7<36DCs:" gy0qy H)|o=9R5yÁ<,}P.xEvo*ǥ8u3AŘ3*c&vF]$÷5} WcB#<"'%g/Cܞ֏g|hߗ B/?2J\\'_?/hݷVv.|-Ƅo<0S6 h7*F)ȿ,UZ"~c.YrF 9A)'xB"mH4'B9xsqYNBwVmkѷmL{^Bgzt6fsIV_4\=VeaP~݃k ^v_zZ_5>sJ+ nDi.FN"nV\*fmn}i!;gq_"GR*J.=rۮTCnFs/ z?[Zdccd! = GX|4/ɽu5Jm1-뜌drt._tx<)7Иʢ?!hBJ2ؙ;W9nl#zY1Yq^3쨍j&iaI3f5bI<߆lT ծfnp<gj/NPG!$9wl |șE`d6f5eX}o8;[VT8hBߊFo\ ҪMCt[V18Y0_-oO9 !YVBiJe٥O}6aoP45=wgT7s5IˎeKg3mfn,:s>l=GLϳC#'`Vמa^ A_,Y=^u왑8c.O(ʼ'޸"y2W~&f uh$Z!PWl VyWH-cq 2M2m 39UeW.1!׈A9pͯ=VZτ>&"1CE/MAt#鬍}a'p@ KP8K`*A"\:]2CeIz%@ a9UEdz0а3'fDc")Pd[;4OIk3RSRoumwr2ϫfc>ߦ&:*ΣƗ3 #Ezg4IP<6$:I(ff.Քrנ\wa3VT+Xap`Cگ+IGȺMbXSSMU}k*Ck"®hT˽l}snF/W+eϟ mnRj8WCo&%P--Fv544lĈ< (i(B"TcroC`?RcÀ7Cz4Bbq粪b+'9bOa}5)Is9a] =T&o|}[h_'۹ɸ`NIXg |l=fZB=8  ~G)eM.cDP)R{KJՋIJj7UV~mE#rsHt.$lt_Ϗh&5VOE`jͼ>S $֟`;Y@\F_Q9cpFuzF-WW~^{,P5H&i|lj=k-)44HXIG~#kv†0 Cz+5g*晅JJs楰Yuqli?%pLusC1Px1 ފj@ ȵvefצ [vO`H2s\csz9L~d%稿LygM5[m@^UUQY }#s3%5UUE$> e%>~apqڡ `q茇s8C{f5 Ӗ=>,Ufp6uW 0cgr :30!" rl C39B榵-ù%va}yyRWgHe<hDI1I9e}7v І9 ؈d\&:`(.Yp*"  ՈR2An:$6}!ck;<#IJ$3E}<]%MLoil~qc-CF6rP@CAC q;DD|_$EݹKg e A%(s`m #[> BnSMA셪 \Yq @͝4NqǞK< R !5;݆Pӗg<:FӴra˜ZeVown[HA1@p 7BcP>APa!<y9\I)$4:Y~kJl&_{>cPw&$qbgH鄈E3{=wHFzX8Ψc**!92i])|u֓}CX`F& ?|ls|AۋO2f7(vc}|]V:^G3X] -&ӟJ?fkDB/FrV_UI][:?nv~ 55v 9xcٓzhq3cv*;y#9d ;q-f?cPcfNmكrhMNqHv#9MvWef4u-Î-uVUǒV]zlqk肒]1]Qc.ȞʒT'_KRb]fy-N~1ϗ9Uwn&ɤzȥ 7qWG6Y=WmfnO;fGţ%u2EХdRu/3`BjqAQu0mޙNqFv'yNōd?Ǘ*pY j[}gx^%Jjˮ.1' : 峏 `s wSTA\@741 5CcImy@Y ey.%wEz&4X|}k-fTBxsxG Ps2N4?&8nhS? 9)$m2X¼ cq-bv"nFlZZkH\Wxc7==pk37~?6~C B(w͑kgo3"ȓ [DD(J. ^UH6YDB*&c x " !A# . 6>m=!}SݙܳpRaFbN>ߋFFYR"P!m3+8W.8A䙶jEt9G~jYd>+*Q5}sMyh4aTS]ެs9gjL]~PRA}_,HiN܍*$j~k]2}޾,;-WM?e)N>?Ůbfan_&*i݄ Gcrx7=YU=c7L@xXwOT=BKQjgK!G\ j#Ua㙮M3 :=ʣ8:c] I0 K$^{׹EmQO.$fbŏ8}UCS~=?)םa[!j3-3>W4ECG=KY1O^.n'u='H,}wQUУίMs s'|_3gdỘ9A6SScBj9gŵ#vw5{UnfںbERD8)SHi]\{x 3N 0=8mVwڼ֛|-hQ~QF;צqO@i[*(wD!%n{o5.vfARN>D% p͹G4R@IT12Cl&5 9 Km&SPbH3DYc]{$/^:#@0+BLbVW-*A啥LWSxcJ(vI&U%d\&c "k6/s9ӆvKCk =$$^=YIyFlg2,p?Z<u*4cFg W:0J ^nf?.ZiLp+^ULyoXF/p{v %rBcEE RI=Cd^v͊#7vp' > !7ӰR:@qS.HH@\-Q"l_"8l~D aNPնTNS31 g4FE`+L9cA 4UjMN cd@j"Z!"),Xt\wP`]1pvur]c$hG[pKi6项V 68C`y( SoZT)56a! 3 34恴 Ppw|̹':-^;`Q8*NkGݿ%xg&fƥ+dJ" X[ fR7yjU({`}WATm9`YSvi&i73ɛV<7ĎE[6a,7 jkKM'#(py9!"C^(dG&($<Xk3>nF}J×ln]A9[ \BZM9J~Gfe{g̬@1|GT+HtnzKyvR;!unvAjտ6ڢ$&M>v(z9E8ۂ;3|G@ը?=vvv.o$kh(124MGCW_su㞏&CA?^h8PyGmW$m1"ʇ36alv n7&h<4vV:m 1Ǽ&=, gs?F7zo7*kwԇ}A,@XaA$-Q\8 L 4%bl`uUdY:4(C/:=2?Gi|jaă_6xV'r֙qLBCe_Po%m&N @1PHS0, d!P4,]u !vn'~{/Vr|$o=QwMQq# !lf<itb|ŒS 1e46p:'c0?qF7VۢBCxZ;YNSOc2b ?C3z<}4J!LKaIh&z a/"ϴe5ioEe ZBvORll+*)fnN l1o^>DW'&$Sbw*@XzMYO5Jp e}TT [Į궦,$aհitn%f1MV;%l&7,sVpb НVwj:ơo)OF!<o/g+exfi萳v)㠚/w]=HB6L{:oxq[Is;*_YhwC.Z"F j:I@(#ǧ<[0Z]wsŶV .㯐VaJx>条`짛yE ~'kQ|d;V5X$ ~|S4AKկRlnj3I~]vf_+# Z.poP(SUK7ͯQ/eķٌߪ5Ok$Ho &="(&ۇ'xo%UǶu¬l]C*_Bx+tqh 3aJj0B2BBFv"PQ}Б]?:`~jVJ=LKUZ]Kqfoqyqv4b!;Z3bVrT &w0EQ#o1:m7o z=l\L|4L,φ;I{)ı,i*Ә-۶."A٨vqƃ}1=pS +IW7@وaJر[hYĪժYy<]!t rЪl}Sz? 4.O _8gt ds2Y`.v ?1pIilȍ2 ɄaEۋjfԾ%6zp\9aI(5bϹd |TM_a eg牼B!*}zyծ8N|lF YEPm 'TBZgvE5eȩ-㛪Axۏg_cĴd70<*倌˕TB|{=DeX}Q;TT ˯YsI&3vC|X0E3A3CqYu"8]}MS4]PdcуזĀp #׫bBPm!9vpk6ˠե|/qY4F߷zŬ䒆#{hӬGAcG;sfO;7gý\ozG&K#֯q7~ۻ9H z]8VŇip1ʄ2ʚ"Wn߸C9y$B;dG2(mfHFQD)Kv׷2+q>N++ERhm%WF&!M4vxMtnb}Y'!8ڴY|T_:n$g<3kZ*, %&o.ێ_6Έ+fPqŚG*TpA~ZBK'Nu"oy}E{> q 6H.3kղ2 !@Ɓ'xn  ;7pug{y5s87eH ZjJ}YD5h@(Whձ>f cޑ^ 0\~d\ܤ"z&c~/0])<7Tn'mƵ鉫-4;棗p1ϞFLSAB8)7dlȎ_ }kfeVk2tFy4X~cνWaP m(ضߺ6 y z6R'Ju;\,h=h;uFV#pUZh66I3@T~jCa3]y1辎[y(<$0@ČBad3 ZIlkmv&bY6{?r];Zx,++RQPΙy#j:K^}Gd̙+>}d7Mrx^Sqěs ;yI'N|%̅ɚ<5905I{ [Jj+-(=SPyyĿך7wz'VGLjה M^5 :Zh$;$em]EgS%˨VjB]>HED(x _ɀy2Ǹ7}m@ąB5˔qT{.#ly>~v7˄c\2 Z?Vg@Jܤ~ta/͞ρ < h0,.K|DwTGƍDOwDwYiT,M o`t@㟴bo=^/;:xO =9]{řUUoEHf rffriЈ@w;ri<߉PQRip\x謮fvޅa9A d00NЃ~7}"!p) Zvp!TvS#[ϚoF,YTP7_ږ7^i[#Mcs>C:=;9ZS 6ROR1/&tnN,ߖnLe殦114Ƽtt>Aw#ȽCoX_E'- x0/l>ioUb<>5#80h3<<qxº"v,bd?IpO"SNʚ K]y8ÉշmY[>CJBh唣wdvDrnfe*j9 3WC[RoX٪0  kQ4Yo ++0ιz}&ӭƸ+٦S,Qr-hJӳ^e]emA]4yVkzll% >H qq1؈b! @&LU]Δj/y!Bvf9%Y[Y2]UU. f\Q7:m6PXv󘃆`B)sIdO^0n !Ů6B Ȼ< qØ6cRI$#rk+Mtٸ򋕨e"uVy)!l;:gŵȎs-2cߣ:W;z";s6:e{K ;4^\Jw j>?a6wSc#m@`ΠXD$Qi5515 vlmbjANd,Ȳ[x92}l+6p"خ\c)܏7|ˋ]BٗFe _P!%vȰ (K*']xsU0kqUy_ ag4zKR69LᅪI95~YǜUzjbCWI>HThd|ۣƢ@tM Vd!Y"m%+qX'XH rUMvpq aMjpf Fر?q o:3 *6UeڱV&*ʫ~J7l01}/4 :9'Y!5G\eHѷ46Іn,ACtQKaG(2#(x 9^ @3v2JȜ.QDӛS?Kf2;!8iM&Φ&dfgRXj>5 ;fԝ?BĄ0!AÛ934 Nəe/ dK /5J2Ɲf}sUtҾ37͇ xt-$^K [=ucX<"y'F.?#?NyR^e.Xl䈝Gĉaia`6Y9k&/,&{6)ñb/-v DkH:mR-Wy.YRΫɀ%xbSHL d"/&qq37aS{/҈, f;;QtBJY*D ]p{WBW5kZq?o6 FGihĔd F8IJՍL,RѢR,.5AT]sf}\rЊY'. ! L AjPXqbsF|75 ;6&?qHrd\ 7WyNUNDŽIBS+^JiP=Ix=_<9rCZ>s[mSb_NUҜ8c|?6VSͅF:ΝQNh@H ;2Յə*眶Y6u"_.UFPv5–'[iT1;/gjpQ`pxZJp:|#c C^RT!8DUP=p{q!jbdݜϝ_p쒒 ctŰjF+W͙ F|0a֛dсUQ:31l~[&v Vx.M#f˪aVntziS IY+w [fY:;ў!V{x /5g9Naحifc PW<?1RtAOz>imǶBɮݙ^FӨEc _,7<5d d2|qjqnwLu`p۠tQB+B$9Uy8r b ȅ9" OdwR?$nbbۗp>S掽uhQ8 J55@ylWwEk)QZm=Ua< WR@k'ďoU=SxR&CX#P&JT2XDڹq#,9 !ϽIjo!^VRZ k'$EObqj&]~ z$,Dp9#lH*{fn]H]) ͵dˆA0@dŽBGuVfӶ#I&!xXVK ; ëj|˿MAcQ\𻤄DG4܉9)2:Vx6x" 3ך\CD(TpMQy+`MhV$$ 8=s^EhaKpV(iʹsuF ,|:( )~W܎'O A"GvԹh(911g8pm_׆J''}:rS5t3E1C'_Lxkt!+GUُs >azb`{Yfn=4ٺ)zHĒӉ kM5u[~䎈]}F^Ș;r4O!ɕŇ1`J 7'KdG X nT)Ts6l*Hvfd]VRnIB`x.T)ec@SAu ekDJٚAk]mdN{dF|~c"N<%$!y QGU~ZoL)! $!TW󟃦#Ri?O `5 wm|K֯6dkx:iNqxݻ7x0z&ƈ/s6:VssšS9IQM3Lㆩdx둂Lgw-wdn|_}7r39p!ɑ\1Fk-3آY_I%{2Oy =^,#536٘qCeDGv0RM1rDjxQ;_0/|hٰB &29;`srbro%hXm);ms;4ܒI@'-Y*(F()*p}:eMQC۱2mLWW!]\ŭz1LVA_k 2?@?O<\iTUU$AUUU^ʨÿy:| T>utgwC#Էxaω9AL)nF%os;4㢣Z[#ҾiVju"z*l´Q3u|FD,lV}~a"3 ˴Y~WDQv-Ӿ/ RĊ 1Ty H?o OדM5LQ-WY]TAv>of6Wf}\a_ $3gLnJQս 3D'O(wwMj7pe.VKy+~^hTnBUjh^K~K\ hf*uT+f!P4 &Ia AD!yHT#!^lF5?NK ASҡrD(")JT)M\UUUUUUUUU||SxaĜZs\$v١;'!zi3ɀ; ͣzÕ'ādBI$.!zC 4!ݼa&4&AWIlXf8Ir!m>(ܗ~S &f)AƯQJnܩn-BTzA))gGvD}6>ֻ\W9ޛq]1z+Eԥ~sad-e= ^8^I#9s83,qfVl7(` Exv`! G:EY[>QWsgRf6uvuFo3ɤlrqKg}qua7).-K?hߊڗenjTf@T@@^1ʾue4 oc&緄Jf^]cD(V<=0wn^:s<8P+S ̽>¤'':yh-@$#] RlX<('"j&ya y0jܬ|55oNU3|=9]4@bp*ה=i|`ߗ±T\5ᛅq0"9!I-*;hUgϚ|JLX3U>iX^ຨ3SQOÈiĒ0)"1v5Up}6-¢ v0`tMQmY688ے]y~] ;wfFw냠l-T~639쳵dex\}f=bscާG cyr υ9\Ib0ᛪFbo՟1Q_TtÑsd6,jsy 8;'$׼ju @MѰ kDu3QjYWIQ5'qnͪjCa,d)J+Va'[:`|7ô"M=.3c+vz_g7~#}BxqЊ t6 ͒w\`}c 5ӕDbԩosuxJjG=$uv;8 Xu+W& gMVA'~2A;boBn![qqcle;O>獔RV2qgPO|w.%?83&8&W_ C;Ln=rfvL~~hS?Hvs:prɓK do 0b+„rV@No1lg 泐f%DljP1swXXlW-aZ@ 9“T޶pMHџVl;j\׼K';eB- x_Zf[Y0ayb@8گtMX[wLNi{sIqe|T^UUAࣣ_ZLҜ||GdʯQ׮ ԅ"D8mKMGJ~`^XiuI=$USw9 [[mvFPM&]QkZ"H־Ό0%$FrU&/zx=lpn,z/scP<".5+*xj;qxӺJ7>{*d:G>G[cG6735.ʫ>W^ ;&][g\Lr>۹9K.&aLT9d t<)fOF\wYu-oF܅M13żJ 3䜸ѝn)E\)UDcoaN"nF>F9fu}*gss۾%0X!0H^+8߅9jR;"ҚPiJ-x +U>G@?wuM7v}v4OL~q FGH>(} ¹3+e  BM X 5]~tȽx㈱; Y(='a_㸀7g؎NL|psWF3:O][<"[۞^{≼!9@^D7| jda/OP5!B|~ 4H&ZrF߉ n'!m-׺oBcLE~jLxyUQ/ !; #HΉ/ed?:p ɕV\ۍ]`7ܵUU:B ln>̡^&gִ`Rh5{jØٔ Q͚Z:os,;(fէ gmG_T&th )G.Gf2P6 fi&m!ͷ7V]e#u'zm}Za>=WDqTO!}_ G?w? sT\ '}\ޤ0X31寕:\F댧ҩ N!,ݖvXf +ڈu!(n#h̊lЀ$@ $2C֛,쥱zOd=uĺ &!eE<6nދ`^d۸x7TLsaR<]%t-;soOdsʫ3-,T<.Aty*sKfP+r;ܜӧ~.'m-<+:HBz%2Rx6x`xBPJ؃a^*DMUOTǪDn},7& :0%J~[rWUQ۰*;7a!Xw64c4HKHGwYArrhp:\eG\^Iڮʄ7S쳓jח7m=Y536ُqPXZKT3˞^xcDTIϠ aX4 k]+MQ"ve=+#:ubsդKi~o*]zׅ^-/ÇQ8~Y7;v8i*͞% eU*4-¨I ڊOd]*R9\$ T7 UgWUwzz<ӶG3s]"`M 8y_'NYA#d~?9OޙEL2&~$Zg'GHTg TBqQ!I RQ31$FD%bB4Ĕ!AARHLLY=R)ZᄥCAL0$CM4LCM4 E%1AEUUDUUD +c:)3KH?_\s٪!I?)~a.pL O.X=*ؘ+ Ht8рؘB@9&x8,Kj QV{dBD;!r>b@H$!h(%"Xu3/&B` Q1 si&@vY{!$ ̗Op75@ssycYk L㈭C0g\VU߉v2b4QWͥ3|}ɻw?qO?pAtk\֗Yf jMFuAe!䀸W)z:k\y\cq[8ιNKX~H!VqHr1l;`Ӆ(6e/.:b l3>ϜVDS) Ŧ{v0NuTghI,ޮ'MqsR{"t0.HQMv"ȘE3]!llɇΫGJ [HUv¢L*޸V??Ž ?Ɉuk,2yvƏM ^Y?%1:6qmR72pOWiYD(x(OG8k|>)6`+RkoOu;g%wrLn|Q<7$CCz'|0_uo3{<~4P Fx>K9$O\[vz搶X-&蛺y Zu~l 5kzÿTNlgڪM;Aܔ!1,_ѻg_͝>Q5i"TU NKKrko=ᾖf׺K_Wc -ayLhۺ .Vrj,~7E?%3]7C̛ŷ~.g:`jn8o&y0i)0P\9ⴶcϦY>nZHcCkc%>F5 j{纫]zWGS󗟣ݟ6b$wv}x .l02L8 ~Tt:H`D~q?OAqd{t`ȣc-k}'ae@B$Hr#5߆ YOKS<9 Rw^/dE(!⊝M=$q\E:'XzLX;HA8@<۵)Z|l RteJb3 I=?jAb}tfbs"@+u&((t-UBs.eI@PO_tC!yT mBBVxhsca>l葘teT I);$Gxᒾ+8#[!74p5[!@i28 /z"ww?~&l9!%Q~,KgW?8 swTWڧ!`cx.cqѻoyDELm/o1OC83b%gMp YݼkKƏɜ96T؊]oBwQXj9ϔ(vB=' }:0JD)$T=*B4\NU M͏:1wY@)E=>$'.F*bTJ5B6:V|cé9)nDS,@FqsQ(+Tf |gX([P9*^~|(ҽNT<1,ܷTfZHs ͓sbNV^{N x xP)_VЮDHDDdd5$ae`&>mW9TX^C1@G9t(t56999TKD-9XA!Glz`xgH^Î|QA##VDO܊q 佶]+kqk }SIۇ;|세aGW` 4:t.haU Ŗ&!ujsIA#=xb\CM:m9R "i)ԦR>#R ԯdXZB7iM*l`w;-49Q:I͟#Q]:eAn *XzS2.V,furLq L0Ġ3`L~OfP MaEBGN11+`KPh! ҫC9O-I8`E7ہTX6 ,lb$Iί2&U ¢s>mZXΊPb,{X/!Ogm~ޝ~M~`#Ҕ0Lgi1?@,ۆ`ZxO__$4<(8PYLcxb(&R !B%aHcR3n_9wV`Ģi۟ǔ!R"("?yKŁIM(d<ݘ/f@YX%5dUX3 $Uxqc"~I߿uc8ϊ>O#T?q7Zmvta"+zQ@ 2!b( :yB#V%r EJ OO ?‰@Ь$ P@"1о>ݾD(BrP+#}Sa~2z=븀a% UA>?qOTLRոli &0q;I$f)w\yQW|u]S{Zz<]l+-.{*S]>d m٣{jcV1&AQHGwٗ4!K|_.«۳iQ/+kw :?V7Y)ACN7̿ӛuW,1ï,ԑ2o<6rwӧqE1xzh3hnӒNCH6$o gItZVbM;v ?ԱpeRr13Cktv@w/ǔ 5N-K#]Iy_'M|Pq&K5wduNo1{ 7[?9v&?ןMDn5۶]^nM׫1]yqỲ7ň|o;Mp+o_?V0xcv3홸ci¼?W.042KgѡwM4ty/.Xemdr'B5/gXy $|"?<J$AHh|Z.㐆:D>A׸p@"\320_p@7a:o ?mmKmųUQ=a?=~~&F3ͧ:'Kmh}ۭ'*?O1Yo>/Zp !BXZ">y_g͟F|ׯm|yJ eԘ'3Li,]?$ )"SO#pۯo6 Dv78!bN%qӓFEU-)g x~YnKqmIn慱δQa$ɾgq f 3(y>65/ux"~8SeEX"?|VR<%nOOھ?\u_7q栦S:Z JFB$$cZi.Fe፼ kfHjR NGx;>G.Pǁ\٦7tw⃮2Pʈr \zB, u[ |55 f;>>gz9P  aJI r$X<ӷ`!p| m#6d@+ W|\))НJͶM7k#Ӂl Z*}~cA:$EAh}dUEW[Ҥ35?xp틼Fd XWD"B,cDE&=cH~ԉ8W'/R扼lL@<0 vU۴vl6tsb"۪@{$S@@ʊկG3u@_ydo_0AZ{6WT$#@)Z醄Ѧœ O|0FHQ4R'ȠP?CI_& \'rd$\k/[?ٞ%ܬ M&noQ{q\"_jϕZ]vcٲV|cbsQ-*w:n!A[ 뉸ccx l,pMՆŻh)!{SKUT/Y <*Es|&5(UŊf9+٘(ىŕ6BSR0x;ĹbK۶k$G +RTӥ.-EU$ǢuzFuYC75-s5 ߇HD p8B+v%٨)4#Tw ƻFJHFEgEN'k!pЋ)>rV1Neem<|*nuca(GA]2V-H<%7;;uU5>5ξ:S?G|U[.Djǡ܆NL\lH(D><(tQۅ _/FƅȔSٞ @DNRܭมΘ}FG'DmܼV:auB"mv taa7%6\ƶL7%80z(y-)_CtW:M[66.h70q6g4lo]NawLTr&3(\;wѝcq\6nEnɻ]DN͕^Dii`f4^`K:N]L3>K7-FڄtIyu;3l+fc00,|v M];*ywf%]Zw}Fp~>'^d9CZ"$&hm0OU@T25/2f٪ZEh~+E+D]h7fon[9;u+o'Jp47c7 v*ǤTt)m]^TÌZ6Jdrt̵6F+rb(\Zl۲9rWNu|o=6|%klPoݚGhfxOB[r۲w4QזU5:ʮtA_tSCɓϚ\y#h)n˫c0d--wF)+:E;u֤N1a "0%mټTU|dAΏBfcou7%5ǖG.hx5u!214g49fscxA dA]\fMVDf Vy,zљ /aجr.{Iv1}' 8ψIO>$]ZƓCۛWw/$gD|Ù[yEhOэ*"󮮒(O4Z]"#'fw,x b*Eg 4ΞNCK4l޺ӈ-;:dD' DG_G8jM#]YVf_4Xq霹ox=[~ܷ.Z sێκ[0ړr#&mk"\y 48یG&cU~b5ƭ|qύ5k'-']̥IOd돖tgfRUjYWʫ8\!ւL<ڕBkmT|ZhoХ|j\h}Y7ËMŽI#+vے!ynQDag%{=Ǘ h5lV(mYRX#4Ѻ{wV[hrAlIk]ݹެ4q]fGm;ﴶb2ĝd4r(6'-5IvwUgs`ƦmxJI=owXh4}kO6eFM2f`Ϸ6ٯ LIAᜦ-xKBqܵu-z1 vrwzO$_kf3!N̓` S |=~L%٪^RPRui}]g,0_2J|1^1Q/ѥZ=rBqƽjO{.^]GwpQT9"ڇUc(Tδ3z4ԯM=gMh|@yL(nn?/;<.hXNz6a,}+Gxqˀܸp3zi͓qWuxOFn"T m.gnF&Zzn q(+Cm[w继> [F}Kݒ@'ӧ]}6n߫Q|ɉ <Ņ]J[ҺlLoY;JYr9_j\YmLo) 5F񖶿D y6!,WOߞWɮ_ƽ@9Q=N88~YtiEYX6-/:mڇYhe P @DQDqa3P!3Feݢ$_֔;yz+pQV$aj{a =4` \vJOE0!YK 1P- 5(!d(8x?Y7WnsUx@@D@z?~cPrNzx?0̡-iJh/繜!󤑓0 zA8aYNWؑ2f6d`>ap푌ϐiJ hh?TbU+.q5͚C,DD7N+<~ĥ Ob9 9jn^{M+73xL}ǜc"9Nm_K&{_XivhY$T%FƲ]N|uuh2#.fl?75ϓf7)qqR;#ÇF)P%;bN Xc9UDa_ Nׯ.S}P̽n5\zs˺%,lc 6˦iΚrAG7n V1o!cꋇi(ڥ Hqgh}v=l$޲ juT*L,M|٧F䴷+,YI~\+=򷈈[kG%;q`6&CB],#9lf=7qﳏ'\s3MGL?t_Nt͹SenUqU~x>1U'U-mCH/b rU~?ٍq&[a_֬X=F8Y7jq =1mvnʳ.~.,']Ȑ &rn`16Tg1܁sGBnYbAeCVhnyBHUJ l ߎhzZBdkro*8M nù eŔA~iODӡ7HUkݡՠ,@ŶP HWuoK Ӣ h{[VL@N!F¸K beHYÈ\bݵ_݌-(irdRg+LH ș&6q Ig㮪i^lHIDό8fhz㞜*cCQ#15g>9Z='sW<M&s>g uj9p$K|5 >'_-V#259btuZkT.bh# U}/,dnuF 6ЫƫHN43D}[*o%}Ia7`al\& 2[1VGk4Ң|e B***8qY8 ΄4GO5E#֣f&)ͳVxOM&V#Czz)vsmXG͑ ~JUtLf~. m24e|TQn0uh9*A;чGMu3lߴ7հ3!j⬂t^]VmMLqo9'|qچeWBsċ$!4)~<3/?LJso:!Bs?ӧ^@xh⺗GMw^hH t3+`ԖR0>:9ј<~OH;;5$HE(Ik|v#I.c!Ţ(3>Nxptۣ!]d/EOC0 |2 }$*qN"vrTz\@oF76,3odM%ӦVhN:HIN| ~-=+"ck:ݼ\BI[9n{x'x&K2v]B;)]A){rPۦnN 'w* #Zp5"jy&]b,Zr;ASD$8|0ӡ u8jysIC;2!1'iJUЭi5s@4gO'&?d1;C $^ 6*$mZҟPQh[&0'Y@t[d@7uhLaӟ|]3Cd!F |~nAHL(wze<SI$JfUw^lj!mOD xv6$Upm@;2M;T>9p p:p:7)#C0z1"& wY@1(`R( B2SXa/0+1vHdGtJ8oڶ<Ud\"1y,m(q'- }zmPշy!~߰ذpvM0s\Zri Mda W@Bwwv;r$0 ҭZhs.B3Ϙb$0we A2*_ij!cgӍ~ qf4BtZabqx<[%.{]lMm +jlui2h[mw|OQڄPج 0DžXC<P$eS+-pgia--',M#ʑ؁GK#У:vrV@Mw[@I_gta0DniK:/x0U -*O|>H3sFՇkiۈsv̶0\6 Rʝ>xFd86]V_==X洲j2!<+<[$SBҜ ceu28.-X6jIYef K,vZ q-fTF;i £M~0GKI(sInZz.5;EњrA7DxุJͺ"!$=XkVj&jqockw}uP:>UU߲t5sH%*LާmFB: 8 6i\W^Uys3ngu!,4:P>r4 p&)4|2bL}x"Pz>|L~o~8;b.3#&.[fVyStȻO&YgQN;S (#CHr;*N\I6|6OHo-3i_W9MD;HzoFa]q=W13qQ$'*qX>,(B9ܫ%f^L߮Mbz}j1^?% }ۓ} | ǾvA_k& ȘtuJL|\WfN.a֦i'R7$ypaبqX86{齤 bM ?;FҨ\"RqWbZ~htpFMرPctJ؞(N3 tޠb]\);}6}}͈6Jۑ fʜ"]iQVp}eR%yqܒُ3/$HgmBBWI.mf<˞M!&tmO#5PdgN̸f \Ӑc/4.r%36/ӛj'9,ktBES٥4~{ݍaע&֒mW\Gu|w_ǶUAǖ"VZz3\#B*%6ؕӣvdFYIЫp?=^MS-yR]y}/ף0uTBs51 *-TlqRp,u_C0v&/+=[{s|Fg3Rw&/q:L>&Ս!&f>GzH|wfJQ5B&Gc76昘}Uٜ3&_6>O2ܜAWIs4#|BoC^y1s~sERa! 'Tv/u5cs®_~pӖ &aQ֯#c%spf2\D_v}G]8_aXT;b:.vr,$;|.t̠說'bl`BDn鏓p2~ö@C ўM?y[Μju39SU8!\teJ@Q VMDž{!3fL9nv@A : wVg8ӣEh Lü>.jTNQJ[ÎΘ%#?ue|I1T1m|zpL&oҴGi& MFRWF2ka\_.9~콝Cgp쮧cnw`jK J1!6Pw $+ԙa;qt ܸ3~(4|w?,MPs! v~DR0 oh IPSzmQ  !1qL?ž2vLd^#6O/[*DQόgzt:'I>ĔJV;O^@²ǧY30!3tK|$&%™ D'v)߯v%aɁ@DPI3|XۼmɅ6A%bKyRJ'eVCfQ-ֲ8+Z<ɱFseg%2u(ZRd F%$<|pƤ<.4%!3;kCu*sH!dX02)F6$99\I85,AT`%)Irh(H "rV`~^mm!&TcJ)F*t+<>U`iJ¡FwFӱyNЪs=m; Q'8qys& ƫ:T?^0}W7|r<']捘Ĩ:I|x a9N?PEGۓU)ı|ej^Tؠ !Mg>mq`uw~Z჊03P0a((?};n Aixڇ8 8n.w `9s,r}kό5?;BMr:A-ap' T]ljd8^s[Yfr'g(ALwYөo٘hx:MN+ZVFnv 0`K3GwG?ty )?'K˷٭4ISRP0$6m'N;ׯnECGSW6\lZ~qscJ9wPc^ U^sTƪxinyqlu v=gOalSjeRut mdGGg:%Th3t$cM&@VM5^c ϨeU">3sr=*}/gQ?W՚|_ZH|ǫV K|x[Y& "fb 3|@ly5n(UlD~13&tƴz "ѭIc rq6pAYo%P~zlnd!_t?ok 'G"dEe\m'U'\&=H,:Nq 6ڰ~\=__ٞAL_1O`N4 3w-Cl1y~^||hNpZi@t]<]I B^Θ'YdmHO Q ̗o I28lBD6]ԃݏ 's؇bI??ga7Ots4h׭\֢yBc8 &fW3)3O|_MD7]3U"?οx(AVAIb\C. %\FesXܞlX8=n k!hyYfM H<:LW.teOs1"M~{1aꙻ$c}3X5J,cÒnwlBc1vX 5t4%~V19dyrsQT&2QE?'#R~l;iG;O(y[&֚&:?V3QQظ>o⿲=̂=CI3FUCژ~`}|n#\Ț~ǀY~7=o`!5d> /﷮2}0h-M!%4oRS 1hóHI}.{t'-.\!ݦ/F&f9B*&RoնNb4fH狍hjWA$ }B 3jfD1bbBdj4,I扣*fwqrW_٫8Τ0 L8 slD '>SmxAnG}n6@r= VAM6A4@21Bϙ &JBM%]QN$ilϘ9>p#m4&1J}I"v_lMn˄$HzaL⣣ɵ\fNj߶R ƌ:$AتblYa+H:$ۜ͞ߕŶ':mܓ3 Վ$=o <[Pt8w_ZMQ=qӧ˴mfq%}LH$>EL~1cygYPG:S0ϟձ?1C-J1! o܌|<7By&P$A"5 珳ogp[O 3 8Y֥ lJ))ex4 iPv5?/F Ro8'P:]3c ?{ݛ|_&/iՏ81"d <j<]cD@b0"<bN@:t[:?!Bu&7^}'=RP rReeQ:}Ddv,tJ膚#\hﲳZ Ǜ@;24$cHndΛ23&7MJ'C>O=ZzG3uF1.GT蠢^XPq`VA.[*439äu$$> 44&L+41a#6 0]P;{0pnjPix4U5;t蝿w7-EgO3$uDæR`EX@ͭ1r[T4O%\G݀.~H\(WڳrɿsT܇Pǒs¢s45 0tD>S5kud%k2m{+aUƦkX]Md1ufy!U/6l"V`L3a+AvVb|~V~[Ug@ͥaO'hfv-;iơJP5a2•J+/?, /C4M† ^{wxxU2I1C>ל_qcS7*v MYqIyοUL+<;P_t]GUShǦi&/,9QLcg hl໛0{ 1'tæ΢r6ңfᄲb^Ydh^+0LޝAAnSȭ/8ׯa ZY]z*rntdohЪ&Vb-*41b_f?z ֵ>p6d t :Ԭ|K! b4[RBwqu9*+փ Fsuu|읈:_s>!)燸,Z]Nh>ߥn$HaPa>uE?&r\169lq])1K*